わがロボットの譜

千葉工業大学、総合工学研究会所属の者です。とりあえず、二足歩行ロボット作成日誌です。

スポンサーサイト

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

PageTop

オフセットと逆運動学

とりあえず一日歩行モーション。歩いた感じはそれなりになってきたのだけれど、歩きだしが難しい。
脚の一番上の軸を傾けて重心を移動したいのですが、単純に動かすだけではロール軸も動いてしまうので脚が開いたり、閉じたり同時にしてしまいます。

で、まぁ計算するしかないので、計算。今日は部室でオフセットありの話が出たので、
自分は直交軸ですが計算してみました。

前方向をxの正、横に開いていく方向をy、高さ方向をzとします。
膝を曲げる角度をmage、開く角度をhiraki、振り出す角度をzengoとしています。

ピッチ間のリンク長をlink、膝のオフセットをhiza_offset、ピッチ軸とロール軸のオフセットをrole_offset
とします。

あとの条件は適当に、フツーな感じでときます。

で、式は直交軸の時は

x = sin(zengo)*(hiza_offset + 2*link*cos(mage))
y = sin(hiraki)*cos(zengo)*(hiza_offset + 2*link*cos(mage))
z = cos(hiraki)*cos(zengo)*(hiza_offset + 2*link*cos(mage))

こんな感じですが、


オフセットありの場合は

x = sin(zengo)*(hiza_offset + 2*link*cos(mage))
y = sin(hiraki)*(2*role_offset + hiza_offset*cos(zengo) + 2*link*cos(mage)*cos(zengo))
z = cos(hiraki)*(2*role_offset + hiza_offset*cos(zengo) + 2*link*cos(mage)*cos(zengo))

プログラム的には目標値(tx, ty, tz)与えられたとき

hiraki = atan(ty/tz)
tmp = (ty^2 + tz^2)^(1/2) - 2*role_offset
//cos(zengo)(hiza_offset + 2*link*cos(mage))
//(ty^2 + tz^2)^(1/2) = 2*role_offset + hiza_offset*cos(zengo) + 2*link*cos(mage)*cos(zengo)
              = 2*role_offset + cos(zengo)(hiza_offset + 2*link*cos(mage))
zengo = atan(x/tmp)
mage = acos((x^2 + tmp^2 - hiza_offset) / ( 2*link))


こんな感じがベスト?
意外と計算量少なそうです。

こっちの方がいいよとか、間違ってるだろとか突っ込んでください。


あ、式はリンクパラメータから出してmatlabで計算しました。
あとはもう、質問あればどうぞってことで。




スポンサーサイト

PageTop

コメント


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

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