はじめに
4足歩行ロボットを作ったので報告連絡相談。
trot gait pic.twitter.com/DVhx6LOzf9
— jの者 (@k218675554) 2022年3月20日
システム構成
M5StickC先生にお世話になった。
外観
見た目は・・・そこまで凝ってはいない。リンク回転部はM2の鍋ねじで留めてるだけ。
ソフトウェア構成
リモートブレーン。M5StickCはPCで算出したリンク角指示値に基づいたPWMを出力するだけ。PC上で自由に歩容生成できるので楽。
数学的なお話
逆運動学を解いて、目標とする脚先端位置を実現するリンク角(サーボモータ指示角度)を得る。逆運動学を解くにはいくつかの方法があるが、組み込みの場合は計算リソースが限られるので幾何学的手法がよく用いられる。
下記の通り計算した。動かしたとき何となく想像通りの動きをしたから多分合ってる。
逆運動学の確認 pic.twitter.com/7289t99cXs
— jの者 (@k218675554) May 12, 2022
実機試験
実機で初めて動かしてみた結果。レギュラー歩容(duty比0.25)で歩行させた時の様子を下記に示す。
レギュラー pic.twitter.com/UIfNAS3QSK
— jの者 (@k218675554) 2022年5月12日
ツイートにもあるように重心位置がずれているので摺り足気味。
レギュラー歩容は常に3本足で接地を維持する歩容で、接地点が成す三角形の中に重心投影点がないとき転倒するので重心位置が重要。(慣性力などがあるのでロボットを1点で支えたときに回転モーメントが0になる点という方が正しいと思うけど、ゆっくり動けば重心投影点と変わんないよね。)
要するに重心が真ん中くらいにないとあかん。
トロット歩容(duty比0.5)で歩行させた時の様子を下記に示す。
トロット pic.twitter.com/XJK96oTDeh
— jの者 (@k218675554) 2022年5月12日
同様に摺り足。トロット歩容は常に対角2本足で接地を維持する歩容。ちなみに側方2本足だとペース歩容。これらの歩容は2本足でロボットを支持する性質上、接地脚の成す線周りに転倒モーメントが働く。そのためゆっくり歩行すると転倒してまともに歩けない。
下記の動画は、トロット歩行での転倒モーメントをできる限り抑える重心の軌道を示している。 青いプロットは支持脚の位置を示し、赤いプロットはx-y平面に投影された重心の位置を示している。
トロット歩行での転倒モーメントを抑える重心の軌道を示す。 青いプロットは支持脚の位置、実線は転倒軸を示し、赤いプロットはx-y平面に投影された重心の位置を示している。 pic.twitter.com/z7Gg2B0U1R
— jの者 (@k218675554) 2022年5月12日
歩容1周期の転倒モーメントを最小化するための最適化問題とすることで重心軌道を得た。最適化手法は遺伝的アルゴリズムでっす。GA芸人名乗っていいかな?
歩容1周期の転倒モーメントを最小化するための最適化問題とすることで重心軌道を得た。最適化手法は遺伝的アルゴリズム。 pic.twitter.com/uymLjZvD45
— jの者 (@k218675554) 2022年5月12日
上記の重心軌道をコマンドに含めて歩かせた結果が下記の動画。
quadruped pic.twitter.com/p2hx3tjR9u
— jの者 (@k218675554) 2022年3月20日
効果のほどは評価していないのでわからん。某論文によればピッチ(ロール)レートの最大値とかで評価しているらしいのでそのうち確認してみる。
実はこんな面倒なことしなくても転倒する前に次の足を出せば継続して歩行ができる。
トロット歩容は対角2本足接地なので重心が接地脚の成す線上に近くなり脳死状態で歩行しても比較的安定しやすく、歩く速度を早くすると転倒によって遊脚が接地する前に次の足を出せるので摺り足をせずに継続歩行でき、足の運びを斜め方向とかにすれば、下記のように斜め歩行もできる。
trot gait pic.twitter.com/DVhx6LOzf9
— jの者 (@k218675554) 2022年3月20日
一方でペース歩容は側方になるのでロボットを左右に大きく揺らしながら歩行する必要がある。
まとめ
4足歩行ロボットを作成し、歩容制御の基礎を復習した。
IMUつかって面白いことしたいけど、いつになることやら・・・