このページでは歩行アルゴリズムについて説明します。
1歩ごとに足を下ろす位置を計算しながら
歩く方法と、あらかじめ決めた軌道に沿って、
足先を周期的に動かし歩く方法を試しました。
実験の結果有効だと感じた、「軌道を使った歩行プログラム」の説明をします。
軌道を使った歩行プログラムの処理の流れは、以下のようになっています。
1.軌道を発生する。
2.軌道上の点を取り出す。
3.足先が軌道上の各点に来る関節角度を求める。(計算手順の説明)
4.各関節角度に対応するサーボデータを求める。
5.軌道上の点列の順にサーボへサーボデータを出力する。
本ロボットの歩行には、長円形と長方形の軌道を採用しています。 平坦な場所を速く歩く場合には、足先をスムーズに動かすことに 重点を置いた長円形軌道を、不整地歩行には、足先を障害物に 引っかける可能性を減らすことに重点を置いた長方形軌道を採用しています。
足先軌道(長円)
0,2,4番(セットA)の脚と、1,3,5番(セットB)の脚をセットにして動かします。
セットAの足が接地しているときは、セットBの足は浮いています。
セットAとBで、制御波形を半波長ずらすパターンでは、
セットAの足先がF->A->Bと動く間に、セットBの足先はB->C->D->E->Fと
動きます。足先軌道の図で分かるように、
接地中の距離に比べて遊動中の距離の方が、
足を持ち上げる分とおろす分の経路だけ長くなります。
主にセットAとセットBの間で制御波形を半波長ずらすサイクルを使っていますが 、別のサイクルも試しました。原理的には、接地している足先を結んで出来る 3角形の内側に重心があれば、安定なはずですが、パワー不足と、「全体の重量 に比べて脚の重量が無視できないほど重い」という特徴から、他のサイクルでは、 あまりバランス良く歩きませんでした。
本機では、軌道の接地部分"F->A->B"を、何mmピッチで分割するかによって、 移動速度をコントロールしています。 信号発生ボードがデータを受け取れるようになり次第、 次のデータを書き込むデータ転送方法を採用しているので、 結果的に一定の転送レートで信号発生ボード へ、サーボ出力データを書き込んでいます。
トップページの動画に使用した制御波形は、"F->A->B"の長さが60mm〜100mm、 分割単位は6mm前後です。足先が届く範囲内のそれぞれの座標で、 垂直方向に発生できる最大の力が異なります。(中立位置で最大) パソコンから制御していたときの重量が約1900g、ラジコン操縦時が 約2600gなので、重くなっている分、一歩の長さが短くなっています。
直進:前後左右など、任意の方向に直進する場合、全ての脚に 同じ長円軌道から計算した制御波形を出力します。セットAとBへは、 制御波形を半波長ずらして出力します。
正面へ直進 斜め45度方向へ直進
緩旋回:以下のステップにより脚先軌道を計算します。計算結果の
軌道は、円筒の面に描いた長円形となります。
1.”旋回の中心”(接地中の足が作る3角形の外)を決めます。下図では、緑色の線が軌道の接地部分に、赤の線がロボット中心が 移動する軌跡になります。普通の車のように旋回します。
2.接地中の足が作る3角形を、”旋回の中心”を中心として回転させます。
(この時に3角形の各頂点が描く軌跡が、足先軌道の接地部分となります。)
3.脚先が接地せずに移動する部分を計算する。
緩旋回
超信地旋回:以下のステップにより脚先軌道を計算します。計算結果の
軌道は、上記の緩旋回と同様、円筒の面に描いた長円形となります。
ただし軌道を脚先がたどる向きが、左右の脚で異なります。
プログラムの考え方は緩旋回と同じですが、コーディングの都合で
サブルーチンを分けています。
1.”旋回の中心”(接地中の足が作る3角形の内側)を決めます。下図では、緑色の線が軌道の接地部分になります。 例では、「ロボットの中心」を「旋回の中心」としていますので、 ロボットの中心は移動しません。 パワーショベル等が、左右の覆帯を逆方向に回転させた時の様に旋回します。
2.接地中の足が作る3角形を、”旋回の中心”を中心として回転させます。
(この時に3角形の各頂点が描く軌跡が、足先軌道の接地部分となります。)
3.脚先が接地せずに移動する部分を計算する。
超信地旋回
針路変更:ロボットの中心の対地移動速度が同じ、直進用の波形と旋回用の波形を、 波形スタート位置で切り替えると、ロボットは滑らかに直進歩行から 旋回歩行に入ります。