スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ZMPとCOP

今日は今年最後の作業になった.
前回のZMPがアヤしかったので,もう一つの方法である脚先が受ける床反力から求めたZMPと比較してみることにした.



動的重心位置から求めたZMPに対して,床反力から求めたZMPをCOP(Center Of Pressure)と呼ぶとすると,ZMPとCOPは一致するはずである.
 グラフを見ると2つともまぁだいたい傾向は一致しているという感じだが,激しい暴れ方は変わらず.COPのほうは脚切り替え時の不安定な状態をのぞいては必ず支持脚対角線上のどこかに位置しているはずである.だとするとZMPのほうもそんなにめちゃくちゃな値ではないのかもしれない.いずれにしても,まだまだ先は長そうだ.
スポンサーサイト

暴れるZMP

今日はZMPを求める処理と地面への表示を実装する.
ZMPはODE本のに載っている式の通り加速度から求めた.

 試しにかなり速いトロット直進での重心とZMPの軌跡をプロットしてみると、次のようになった.


 シミュレーション上でのロボットはそれなりにスタスタと歩いているので,ZMPというのはだいたい重心の周りに集まると想像していたのだが,なぜか激しい暴れようである.はじめは明らかに計算を誤ったと思ったが,どうやらこれが正しいZMPの軌道らしい(今のところ).ZMPが暴れるのは,加速度(位置の2階差分)が激しく振動しているのためだ.
 歩行自体は見る限りそれほど振動的ではないし,一番質量の重い胴体の軌道は実になめらか.しかし,明らかにZMPは安定になっていない.「ZMPが支持多角形から出るとコケる」という歩行ロボットの基本からすると,かなり異様な結果になった.もし仮にこれが正しいとすると,ZMPが振動しまくって支持多角形から激しく飛び出していても,それがごく短時間であれば全体としてはコケずに安定な歩行を継続できるということだろうか?

 まだ結果が怪しいのだが,なんとなくZMPが実際には扱いにくそうな量だと言うことは分かった.次は胴体が水平の理想的な状態でのZMPの誘導というのを試してみたい.

脚先反力の可視化

今日も地道な作業.接地脚が床から受ける反力,ZMP位置の可視化などを進める.
 リアルタイムシミュレータのOpenGL表示のほうは速度重視のため,ただの線分や点で表示させる.一方デモ用のPov-Rayのオフラインレンダリングでは発光する円柱を使って表示させてみたら,おもしろい画像になった.少し背景を暗くするとロボットがイルミネーションダンスを踊っているような感じになる.




上記はただ単に接触点から垂直抗力を表す長さの光る円柱をのばしているだけ.
これはなかなか見た感じがいい.クリスマスらしい画像だ.

頼りない足取り

今日は動歩行シミュレーションの準備をいろいろ進める.
できるだけ実機に近い挙動をみるため,モータ特性をシミュレーションに組み込むことを試している.T-N線図のとおりに,ジョイントに入力するトルクを角速度に比例して下げるようにしてみたところ,歩きが急に弱々しくなった.


まるで必死に前に進もうとしてもがいている生き物のような動きだ.「もう一息!がんばれ!」と応援したくなる.

データをみると上下スライドの動きがおかしく,接地時の角速度の振動で脱力してしまっている.振動を安定させるため摩擦項を増やしても症状が改善しない.うーん,これは・・・
実際にはおそらくこうはならない.接地の衝撃で多少振動してもモータトルクは維持されるはずだ.減速機の特性を考慮してないのが原因かもしれない.

ODEによる歩行テスト2

今日は昨日に引き続き歩行シムのテスト.トロット歩容で安定化のための胴体揺動を一切行わず,単純に脚運動周期を速くした場合の変化をみる.いったんモータ性能を度外視していくらでもトルクが出せる条件でやってみた.

歩行速度が遅い場合

歩行速度が速い場合


歩行速度が遅い場合は遊脚を引きずるような動作になるが,十分速くすると胴体の挙動が安定することがわかる.どれぐらい速く足を動かせばよいかは,ロボットの自重によらず重心位置の高さによって決まる.短い棒より長い棒のほうが倒れるのが遅くなる原理で,胴体位置が高いほど安定になりやすい.具体的には,安定な歩行周期は胴体高さ(ロボット全体の重心高さ)の平方根に比例する.

 直感的には歩幅を小さくとり,かつ歩行周期を速めてちょこまかと脚を動かすと安定に速く歩けそうだが,手元の論文によると歩行周期を必要以上に速くすると歩行速度では逆に不利になることもあるそうだ.イメージとしては,
①倒れてしまって不安定となる周期>②安定性を確保できる最大周期>③遊脚の復帰が追いつかなくなる周期
という感じで②の状態でできるだけ歩幅を広くとることが歩行速度UPには重要らしい.
このあたりはこれまで難しい数式を交えて紙の上で検証しなければならず,実機でのイメージがつかみにくかった.しかし物理シミュレータがあれば3D画面でロボットを動かしながらより直感的に理解できる.実にすばらしい!

ODE上での歩行テスト




今週末までにODE上でRideモデルを歩かせることを行ってきた.ODEに慣れないためトラブル続発でかなりクロウしたが,ようやく歩かせることができた.上の動画はその一例.
ロボットの構成部材にはある程度実機に近い重量と慣性モーメントが設定されていて,関節ジョイントのモータもトルクやゲインなどを現実的な値に設定してある.

 最初のところで高さ500mmのところからロボットを落下させているが,実機でコレをやるのには相当の勇気がいるだろう.その後、静歩行で安定な3点支持旋回を行わせている.地面に摩擦があるためちゃんと胴体が地面に対して旋回している.地面の摩擦を極端に下げると支持脚が滑ってその場でもがいているような動きになる.また,脚のパターンを変えてわざとバランスを崩してやるとリアルに転倒する.

 ODEでは接触判定を点で近似しているため,脚先の面積で安定を確保するタイプのロボット(2足型など)では点をかなり増やさないと接触点の位置=力の作用点の位置が不正確になる(そして接触点を増やすと計算がとても長くなる).しかし多脚タイプでは極端に言えば脚先で一点接触する竹馬のようなモデルでも歩行の安定性はそれほど変わらない.
 ODEは静歩行のシミュレータとしては十分な性能を持っていることがわかった.しかし,本当にシムりたいのは動歩行である.引き続き格闘を続けていきたい.
プロフィール

もやね

Author:もやね
長野県在住の会社員(メカニカル・エンジニア).
ロボットは完全な趣味としてやってます.
E-mail:
mo_ya_ne[a]yahoo.co.jp
[a]⇒@

最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
FC2カウンター
ブログ内検索
RSSフィード
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。