Electronics

2016.12.12

Arduino搭載四足歩行ロボットのプログラム

Text by Josh Elijah
Translated by kanai

robot-quadruped-arduino-program

足で歩くロボットは面白い。荒れた地面も車輪式のものより上手に踏破できる。動きもいろいろで、動物的でもある。しかし、それだけに歩行ロボットは複雑だ。Makerの手が入れられる部分が少ない。だから私は、歩行ロボットをもっと簡単にしようと考えた。それが今Kickstarterキャンペーンを行っているこれだ。ぜひ見て欲しい。

さっそく説明しよう。今回、私は四足ロボット(クアドラピッド)の歩かせ方を紹介する。「ゲイツ」と呼ばれる基本的な歩き方だ。それをArduinoにプログラムする方法も解説する。

クアドラピッドについて

自然界にもクアドラピッドはたくさんいる。4本足は安定している。常にバランスをとり続けなくても立っていられる。それでいて6本足のように複雑ではない。ロボットでも同じことが言える。4本足のロボットは、もっと多くの足を持つロボットよりも安く作れる。それでいて安定性が保たれる。

安定性のパッシブとアクティブ

椅子は受動的に(パッシブ)に安定している。立っているために特別な制御が必要ないからだ。人間が立っているときは、体の姿勢を保つように常にコントロールがされている。

クアドラピッドが4本足で立っているときは、パッシブに安定している。それを歩かせるときには2つの選択がある。常に3本の足を地面に付けて、パッシブに安定しながら第3の足を伸ばして歩行させるか、それともパッシブな安定性を犠牲にしてアクティブに安定をとりながら速く歩かせるか(ただしスムーズではない)だ。これらのタイプは、それぞれ「クリープ」と「トロット」と呼ばれている。今回はクリープゲイツについて解説する。

クリープゲイツ

クリープはもっとも簡単なゲイツだ。常に3本の足を地面につき、重心をその接地点の三角形の中に置くようにする。この三角形の外に重心が長時間出ると、ロボットは転んでしまう。

IMG1

とても単純なことだが、問題は、歩きながらどうやってこの安定性を保つかだ。下の図は、そのための試行錯誤にみなさんが何時間も費やす必要がないよう(実際に大変に苦労する)、簡単なパッシブゲイトの方法を示したものだ。

IMG2

では細かく解説しよう。

・これは静止状態。片側の2本の足が広がり、もう片側の2本の足は内側に閉じている。
・右上の足を浮かせて、ロボットの前方に伸ばす。
・すべての足を後ろにシフトさせ、本体を前方に押し出す。
・左後ろの足を浮かせて引き寄せ、本体の横に置く。これは最初の静止状態の左右対称形になる。
・左上の足を浮かせて前方に伸ばす。
・また、すべての足を後方にシフトさせて本体を前方に押し出す。
・右後ろの足を浮かせて引き寄せ、本体の脇に置く。

常に接地している3本の足が描く三角形の中に本体の重心があることに注目してほしい。これがクリープゲイツの要点だ。

このパターンからわかるとおり、基本的に左右対称の動きが1セットになっている。ステップ、ステップ、シフト。そして反対側でステップ、ステップ、シフト。これを繰り返す。EngiMake QuadBotでは下のような動きになる。

コードの書き方

このゲイツは非常にシンプルだ。しかし、実際にどんなコードを書けばいいのだろう。まずは、それぞれの足のXY座標の位置を決めることから始めよう。

IMG3

上の図はクアドラピッドのフレームだ。それぞれの足にXY座標軸が割り当てられている。ここで、それぞれの足の接地点の座標をミリメートルで指定していく。たとえば、左上の足の場合、足の原点との相対位置は(-50, 50)となっている。同じように、すべての足の接地点の座標値を決める。ここで、ロボットの実際の足の長さを考慮しておかないといけない。適正な値を決めるためには、実際に歩かせるクアドラピッドの足の長さを測っておくことが大切だ。

下はQuadBotを使った座標値の例だ。

IMG4

それぞれのステップの間で行うべきことは、上の図でピンクの矢印で示した足の移動だ。実際にはコードにどう書けばよいのだろうか。そのArduinoのコードを下に示す。

IMG5

びっくりするほどシンプルだろう。では1行ずつ見ていこう。

IMG6

IMG7

IMG8

IMG9

IMG10

IMG11

IMG12

以上だ。このアプローチを使えば、みなさんのロボットは今すぐ歩き出す。ほとんどのクアドラピッドは移動用にサーボモーターを使っている。あなたのロボットもサーボを使っていれば、先にインバースキネマティクスを学ぶ必要がある。サーボの角度を座標位置に変換する方法だ。詳しいことは、KickstarterのEngiMake QuadBotのページを見てほしい。

原文