4足歩行を制御してみた話

4足歩行を制御してみた話

皆さんこんにちは。KINKI KNIGHTSのラーメンおじさんです。

本記事はKINKI KNIGHTSのGWアドベントカレンダー2日目の記事です。

デスマーチ気味だったCoREが終わり早1ヶ月。
次なるデスマーチの舞台「レスコン予選」へと歩みを進めています。

この記事では、CoREに出場した4足歩行ロボット「ストライダー」の開発を振り返っていこうと思います。

コンセプト

開発初期のコンセプトスライドです image.png (268.8 kB)

通常のOSSの四足歩行ロボットの費用が80万~数百万するのに対し、コストを抑えて10万円以下で開発することを目指しました。

ハードウェア構成

ルール上、直進と段差の乗り越えさえできれば良いので各脚を2自由度とし、アクチュエータ数と軸の数を削減しました。 また、AliExpressで4個1万円程度で買える150kgcmのPWMサーボを利用してコスト削減を図りました。

設計当初は1軸は中華PWMサーボ、もう1軸はGM6020を想定していました。 GM6020は電流センサが搭載されているため、制御トルクを取得することができます。 そこで、腿関節への負荷をGM6020で、脛関節への負荷を脚先端に取り付けたロードセルで読み取ることを構想していました。

image.png (401.8 kB) image.png (180.6 kB)

制御手法

制御についてはクロール歩容と呼ばれる、重心を常に接地点の内側に収める方法で考えていました。
余裕があれば、高速なトロット歩容に切り替えるつもりでした。
当時、四足歩行ロボットの歩容をたいして調べもせず、代表的な歩容を偶然ついていたのはある意味すごいといえるかもしれません。(実際に制御していく中で、考えていた歩容に名称がついていることを知りました。)

image.png (152.0 kB)

実際に作ってみた!

機体完成!

image.png (902.6 kB)

機体は軸と青色の大きな板金以外、自宅のCNCとメンバーの大学のフライスで加工しました。

ナットをほとんど使用せず、全てT5,T6アルミへの側面タップで締結しています。

電装抜きで機体が完成したのが12月末、この時点で実は当初のスケジュールより1か月遅延していました。

原因は私が同時並行で進めていたアタッカーの基板設計が完了せずストライダーに手が回らなかったことでした。(マルチタスク良くない…)

GM6020がトルク不足だった

最初に当たった壁は腿関節に使用していたモーターのトルク不足でした。

GM6020に制御信号を送ると一瞬立ち上がろうという意思を見せますが、過電流で安全機能が働きすぐに脱力……

トルク計算を間違えていて実はGM6020だとトルクが足りないことが発覚しました。

image.png (15.2 kB)

お正月デスマーチ

急遽腿関節にも中華サーボを使用する方針に変更…… お正月休みを全てつぶして設計変更と加工にいそしみました。

スマートだと思っていた同軸構造を無くし、機体外側にサーボが付いたため、当時はかなり落ち込みました。

image.png (904.9 kB)

その後電装し、立ち上がりを確認。

この後ビデオ審査までアタッカーに専念するため放置されます……

ドタバタのビデオ審査

本格的に制御を始めたのはビデオ審査前の2月末、この時点ではとりあず安定性を重視しました。 クロール制御と呼ばれる、一歩ずつ踏みしめるような動きで歩いていました。

当初、予定していたロードセルを用いた重心制御は基板のファームウェアまで手が回らずこのタイミングで断念しました。

その後、段差を乗り越えるアルゴリズムを作成し、段差越えのビデオ撮影に挑みます。

この時はまだセンサーが何もついていなかったため、次の1歩の位置をリアルタイムにテンキー入力で指定しながら撮影していました。

試合1週間前

撮影後、再びアタッカーに専念していたためストライダーの進捗はありませんでした。

しかし、大会では一歩一歩足の位置を入力していては間に合わない….

大急ぎでLRFを取り付け、機体の前方の段差を検出して自律的に足の高さを調整するよう改良しました。

image.png (730.1 kB)

試合当日

試合当日、SSH経由で事前に立ち上げていたROSノードがフィールドでWiFiが切れたことにより自動終了されてしまうトラブルが発生、スタートエリアで立ち往生する羽目になりました。

CoREは他のロボコンと違い、1度フィールドに出たら4試合程度連続で動作するためなかなか修正出来ず…… 原因はわかっているのに対処できない歯がゆさがありました。

同盟の試合が終わったタイミングでプログラムの自動起動を設定、以降ストライダーが試合でようやく歩き始めました。

残念ながら段差越えのプログラムにバグがあり段差を乗り越えきれなかったものの、一つ目の目標である平面ゾーンの走破までは達成することができました。

かなり悔いが残る結果にはなりましたが、自分の四足歩行への挑戦はこうして幕を閉じました。

image.png (433.9 kB)

つくろがや 出展

愛知県で開催されたつくろがやにお邪魔させていただき、ストライダーを展示しました。

2日間動作し続けていて、さながら耐久試験でした笑

ブースに足を運んでくださった皆様、どうもありがとうございました!

考察 なぜトロット歩行ができなかったのか

クロール歩行(一歩一歩踏み出す歩き方)では速度が出ない他、歩幅の調整もあまりききません。

開発段階で何度かトロット歩行(馬の駆け足のような歩き方)の実装を試みましたが、結局実現しませんでした。
原因は主に下記3点だと考えています。

  • アクチュエータが非力で瞬発力が出せなかった
  • アクチュエータのフィードバックが無かった
  • 脚が2自由度しかなかった

瞬発力についてはロボットの構造の問題が大きかったです。
瞬間的に大きな負荷がかかると、タイミングベルトや樹脂製のサーボホーンが歯飛びしやすく、脚を蹴りだすような動作をあまり出来ませんでした。

アクチュエータのフィードバックについては、通常のPWMサーボなので現在角度の情報すら帰ってきません。
プログラム側でサーボの疑似モデルを用意し、その状態を基に物理的にはフィードフォワード制御をやっていました。
そのため、機体の状態が制御側から一切わからない状態でした。

2脚が宙に浮いている間、機体左右方向の重心は浮いている脚のモーメントによって大きく変化します。
前後・上下方向の2自由度の脚ではこの機体左右方向の重心の変化を吸収できず転んでしまいました。

最後に

1年間、四足歩行と向き合い本当に多くの経験を積むことができました。
苦労や後悔もありますが総評すると楽しい挑戦でした。

1人でのストライダー開発という無茶を許して、支えてくれたチームメンバーには感謝してもしきれません。

来年はアタッカーのシステム安定化に注力したいと考えているため、私自身はストライダーを開発しないと思います。

我こそは四足歩行をしたい!という方、是非KINKI KNIGHTSに入団してください。
全力でサポートするので、来年のCoREで今年より進化したストライダーを動かしませんか?

明日のGWアドベントカレンダーは、「インクリメンタルエンコーダの使い方」です! お楽しみに!


All News →