FC2ブログ

爪車

ヒト型ロボット 45 3次元に拡張

つま先を考慮した2次元線形倒立振子モデルに左右方向も考慮して、3次元に拡張してみました。

支持脚の切替は、前後方向は着地タイミングによる調整、左右方向は着地位置の調整による制御です。

つま先つきの3次元線形倒立振子モデルだと、支持脚切替が、踵とつま先部で起こることになります。
しかし、左右方向の着地位置調整に踵とつま先で2回ともすると、踵とつま先の距離を一定に保つのが難しくなってしまうので、つま先の着地位置は踵の着地位置に従属とし、踵の位置が決まればつま先の位置も決まるようにして、着地点の調整は踵が接地するときのみにしました。
ただ、この方法では、つま先での着地位置の調整による運動の制御ができないので、一歩の最終状態を目標最終状態に近づけることは困難になります。
一歩の最終状態を目標に近づけるためには、踵の着地位置調整時につま先のことも考慮する必要があります。

つま先の着地位置が踵の着地位置に従属で、支持脚切替タイミングが前後方向の運動によって事前に決定するので、一歩の最終状態は踵の着地位置により一意に決まります。
この踵の着地位置による最終状態と、目標最終状態の誤差を評価することで、修正された踵の着地位置を求めることができます。

踵の修正着地位置を求める計算は面倒なことになりそうだったので、フリーの数式処理ソフトMaximaで処理しました。(WindowsでwxMaxima利用)

Maximaは文字式をそのまま、微分積分を含めた各種計算、式の展開などが簡単にでき、非常に便利なソフトです。

参考までに踵の修正着地位置はこうなりました。
spx=-((a*Sf*Sm+a*Cf*Cm-a)*Tc^2*xd+
((-a*Sf^2*Sm^2+(a-2*a*Cf*Cm)*Sf*Sm-a*Cf^2*Cm^2+a*Cf*Cm)*Tc^2-b*Cf^2*Sm^2-2*b*Cf*Cm*Sf*Sm-b*Cm^2*Sf^2)*x1+
(-a*Cf*dx1*Sf*Sm^2+((a*Cf-a*Cf^2*Cm)*dx1-a*Cm*dx1*Sf^2)*Sm+(a*Cm-a*Cf*Cm^2)*dx1*Sf)*Tc^3+
((a*Cm-a)*d*Sf*Sm+(a*Cf*Cm^2+(-a*Cf-a)*Cm+a)*d)*Tc^2+
(-b*Cf*dx1*Sf*Sm^2+(-b*Cm*dx1*Sf^2+b*Cf*dxd-b*Cf^2*Cm*dx1)*Sm+(b*Cm*dxd-b*Cf*Cm^2*dx1)*Sf)*Tc+b*Cf*
d*Sm^2+b*Cm*d*Sf*Sm)/((a*Sf^2*Sm^2+(2*a*Cf*Cm-2*a)*Sf*Sm+a*Cf^2*Cm^2-2*a*Cf*Cm+a)*Tc^2+b*Cf^2*Sm^2+2*b*
Cf*Cm*Sf*Sm+b*Cm^2*Sf^2)


Maximaには式を簡単化する機能があるのですが、あまりにも式が複雑だと処理できないみたいです。
手作業で式をまとめるのは面倒だったので、このまま利用しています。

Cでプログラムして、gnuplotで出力。

Screenshot-Gnuplot-20100203.gif
赤線部が踵による支持、緑線部がつま先による支持。

なんとかうまくいきそうです。

« 大変なことに・・・|Top|ヒト型ロボット 44 重心の上下運動を考慮した2次元線形倒立振子モデル »

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://tsumeguruma.blog46.fc2.com/tb.php/110-ec833507

Top

HOME

tsumehashi

Author:tsumehashi
FC2ブログへようこそ!

05 | 2020/06 | 07
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 - - - -