リガードの歩行をシミュレーションで行おうとしていますが、うまくいきません。
今までの問題点は、
- 振り出した(制止した)脚の反動でヨーイングを起こす
ことです。足を短い円筒の集合で表現しようとすると、接触部が”短い線”となり、トルクに抗うことが出来ませんでした。
そこで、足を円板としました。これで脚の動きによるトルクに摩擦トルクで釣り合わせます。脚との連結はユニバーサルジョイントで連結しました。そのままでは、自重で倒れてしまうので、ジョイントの回転角度には制限を設けています。足の裏と地面の摩擦は、一定の摩擦力とクーロンの摩擦力を組み合わせています。
衝突の判定は、足と地面の間だけで行っています。自身の体の構成部品同士の衝突判定は行っていません。(ですから、左右の足はぶつからずに動きます)
脚を動かすエネルギーは、勾配(下り5度傾斜)のついた地面を下るときの位置エネルギー(の減少分)と、上体を左右に揺動させるエネルギーです。
上体の揺動は、オレンジの軸周りに揺動するヒンジジョイントに周期的に変動するトルクを加えることで行っています。モーターかゼンマイのイメージですね。
pythonコードは次のとおりです。興味があれば見てください。私の環境での実行結果(動画)も添えておきます。時折、足の要素が発散のような動きをしますが、見逃してください。
Sample_ode_PasiveWalk_06ST(こちらが、pythonのコード)
Animation。実行結果です。
ここまで、トライ&エラーでパラメーターを求めていましたが、ここから先に進むためには、受動歩行の理論について勉強しなければいけませんね。できれば、上体の揺動をばねーダシュポッド系でモデル化し、初期変位を与えるだけで坂を下っていくモデルを作りたいのです。