A.T.A.

ACwiki技術部見習い活動(仮)

「アリシアたんを自律制御させてみたい」

第3話 〜はじめての歩行モーション作製〜



pastupfuture

■ 0.序論

これまで、「歩行モーション」というものを作ったことがありません。
というのも、これまで作ってきたロボット達は、
脚の動きが全て手動で制御されたり、
動きそのものがリンク等で機械的に決定されていたからです。

このため、電気的に姿勢を制御しながら
歩行を行う、ということは初めての体験になります。

多くのことを学べると期待しています。
なお、今回もやはりロボット方面に明るい方は
読み飛ばした方が良いでしょう。


今回は、アリシアフレームに適用した場合の
モーション作製を練習しておく、という意味を込めて、
現状の足の裏が広く関節も安定しているロボットで
簡易的な歩行モーションを作製していきます。



■ 1.テーマ選定

純正のモーションを全て破棄し、
操作マップなどから全て作製していきます。

しかし、ツルシの状態から全てセットアップする・・・というわけでもなく、
稼動範囲の設定やPWM設定は加速度センサ補正等を除き
純正のものを流用します。



■ 2.現状把握と目標設定

新しいモードスイッチの設定をし、
・待機姿勢
・前進
・後退
・左右移動
・旋回
これらのモーションを作製し、
コントローラに割り当てます。



■ 3.活動計画

目標を順に達成していきます。

今回がいちばん面白くないのでさっさと進めます(笑)。



■ 4.要因解析

まずは待機姿勢を決定します。
待機姿勢には、2つの考え方があると思います。
1.待機電力の少ない、「楽な」ポーズ
2.次の行動にすぐ移行できる、「警戒」ポーズ

1.の楽なポーズに関しては、
待機電力を抑えることで稼働時間を延ばす目的があり、
サーボにトルクをかけない≒フレームに重量をかける姿勢をとります。

2.の警戒ポーズに関しては、
とっさに動けるように、
・大きな加速度を出せるよう重心位置を下げる
・間接の特異点から生じる移動できない方向をなくす
ような姿勢をとります。
(特異点:脚を伸ばした状態では脚を畳む速度がほぼ0)

実際の自律歩行ロボットは、
客受けを重視する場合は楽なポーズ、
相撲などの競技的な意味が強い場合は警戒ポーズをとります。

ちなみに現在頭の中にあるアリシアフレームでは、
両方のメリットを活かせる待機状態ができる設計になっています。

今回は、逆間接への適用を前提とした練習なので、
市販ロボットの前後を入れ替えて動かしてみます。
逆間接を意識するため、少し間接を曲げておきたいことから、
必然的に警戒ポーズになります。

一般的な警戒ポーズは、直立状態からそれぞれの間接を
少しだけ曲げたような状態が多いです。
ちょっとやってみましょう。
画面右側が正面です念のため。


・・・ださっ。

個人的には左右対称が嫌いなので、
実際の動物の警戒ポーズらしく
左右非対称の待機姿勢をとってみましょう。


左右非対称にするメリットは、
移動モーションへの移行がスムーズなこと、
(出す足が必然的に決まる)
前後方向への加速度も高くできることなどがあります。

デメリットは、まず旋回モーションの対称性がないことです。
どうせACでの私の機体も右旋回をかなり強くしているので、
これは問題ではありません。
問題なのは、移動モーションの停止方法です。
左右対称の待機状態では、
例えば前進モーションを止める時には
後ろ側の脚を前側に揃えて止めればいいのですが、
待機状態が左右非対称ですと
その状態になるまで進むか、脚を踏み換えなければいけません。
待機状態を左足前と右足前の2通り使えれば良いのですが、
そういった設定はできないようです。
クロムハウンズのような待機状態で自重をフレームにかける構造の
逆間接であれば、待機状態で脚部の脱力を行えれば良さそうですが、
今回の市販ロボットには適用できません。

・・・ちょっと待てよ?

活動の最終目標を今一度確認してみると、
  ・「逆間接型脚部をもち、単独にて自律歩行が可能」
→ ・「その場でジャンプができる」 ←
→ ・「前方へジャンプができる」 ←
  ・「形はアリシア(アンサング)に可能な限り近づける」

逆間接のメリットで挙げたのは
・「待機状態からすぐにジャンプ可能」
・「膝間接部の力で前方へ飛び出せる」
でした。
待機状態からすぐにジャンプできなければメリットを活かせず、
ただの劣化2脚になってしまいます。
ジャンプに必要な力は大きいため、
2本の脚を全て使わなければならず、
必然的に「脚を揃える」必要があります。
このため、待機姿勢は左右対称のダサい姿勢にしましょう。
何かを得るためには何かを捨てなければならないのです。
うわーん。


歩行などのモーションについては、
面倒が嫌いなので実際に動かしたもので説明します。



■ 5.対策検討と実施

先に断っておきますが、
現状は用意されたフレームでのモーション作りの練習ですので、
「動けばいい」をモットーに作製しております(笑)。
早くジャンプやアリシアフレームの考察に入りたいですし、
このフレームでの最適化を行う意味もないと思いますので・・・。

このため、本来必要な足先の軌跡の考察も省きます。
本来は想定される障害物の高さや重心移動のベクトルから
最適な足先の軌跡と時間が決まってくるものです。
過去の経験から、横から見ておよそ「逆カマボコ型」にしたいところですが、
今回は歩き方をかなり自由に設定できるため、
まずは簡単な長方形型の軌跡で歩きます。
長方形型の軌跡も、移動方向に対して対称ですから、
前進と後退、および右行と左行は時間方向に対称です。

▲逆カマボコ型軌跡の例


▲長方形型軌跡の例
左が前方です、念のため(笑)。

卑しくも逆カマボコ型とは、つまり無限軌道やキャタピラ、履帯などという
あの重たい上に左右移動ができない、一般的に軌道を変えられない、
何よりジャンプができないあいつの軌道です。
不整地踏破と速度という機能を追い求めると仕方のないことですが・・・

なお、加速度センサやジャイロセンサの値を利用して
サーボへの角度フィードバックを行い、姿勢を安定させています。
純正では、太腿ロール軸、ピッチ軸、足首ロール軸、ピッチ軸で
ジャイロセンサからのフィードバックでしたが、
今回は腕軸などへの加速度センサからのフィードバックも追加しました。
外力に対してある程度「踏ん張る」ようになりましたが、
あまりフィードバックゲインを上げすぎると
剛性もないのでブルブル震えて発振します(笑)。
掌の上に乗せておくと生まれたての小鹿を抱いているようです。

ユーザ変数を使って常時平均化処理や
鉛直方向の計算を行えれば良いのですが・・・
まだそこまで検討をするに至っていません。
また、各姿勢でそれぞれゲインも調整できますが、
今回そこまで最適化は行いません。
ジャイロセンサと加速度センサの利点欠点についても、
今後話せればと思います。


まずは前進です。
脚で歩く方法には大きく「静歩行」と「動歩行」に分かれます。
静歩行は、常に重心位置が接地面の中で支えられ、
どの姿勢の状態で停止しても転倒することがない歩行方法です。
メリットは転倒しづらく、動きが作りやすいこと、
デメリットは設置面内でしか重心が移動できないので遅く、
2脚では不整地などへの対応も難しくなります。
動歩行は、接地面以外に重心が飛び出す瞬間があり、
転倒する前に重心方向へ脚を出す必要があります。
メリットは速く移動できること、
デメリットは停止等の加速度を生じる場面で
重心のコントロールが必要なことです。
ちなみに多脚では、静歩行のまま動作速度を早くすることができます。
過去作製した多脚ロボットは抜群の安定性とキモさを持っていました。


最初に、簡単な静歩行のモーションから作製します。
なぜ簡単か、はご想像のとおり、各姿勢で自立できるため
1つずつ姿勢を確認しながら転倒しないように作れば良いからです。
というわけで早速。(音なし)


えっちらおっちら。
まぁ曲がりなりにも歩いております(笑)。
脚を伸ばさないようにしてるから上下可動範囲の少ないこと少ないこと・・・

次に動歩行です。が、完全な動歩行に最適化するメリットもないため、
足の裏の広さを活かして「ちょっと速い静歩行」というイメージで
モーションを作製しました。
静歩行の速度には限界があるため、
静歩行のモーションをそまま速く実行させてみます。
(静歩行速度の限界:脚部の遠心力により脚部が接地できない)
さてやってみよう。(音なし)


遅いし(笑)、今にも転びそうです。
なぜ静歩行とは姿勢が異なるかというと、
単純に姿勢移行の時間を短くしただけですので、
サーボの動作速度の限界によって姿勢が決まって
しまっているからです。
頑張って歩いてる感がかわいいすぎるのでこれでOKにしましょう(笑)。
だいたい純正のモーションからして動歩行っぽくありませんし、
このあたりで良いのではないでしょうか。
サーボの動作速度とトルクについては次回考察します。
歩行速度の切り替えも今後実装していきましょう。


次に後退です。
見た目的には通常2脚の前進のようですが(笑)。(音なし)


通常2脚とは異なり、待機姿勢でかなり脚を曲げているため、
脚を立てると重心の上下動がかなり大きくなってしまいます。
あと、あんまり関節を曲げるとトルク不足になってしまいます。


左右への横移動です。(音なし)


これが一番簡単かな?
電圧が低かったのと最適化前で軌跡も三角になっちゃってますけど
純正フレームにそんな愛がないのでこんなもので。


旋回です。
脚にヨー軸がないため、
旋回モーメントを生み出すためには
摩擦を利用しなければなりません。
私がとった旋回方法を図で示すと以下のようになります。

※左旋回の場合。AとBは接地した状態にて行う
画面右回りに重心まわりのモーメントを作ることで、
その反力として重心を画面左回りに回すイメージです。

@脚を揃えた状態で脚を前後に開く
 地面とこすれた場合、旋回とは逆方向にモーメントを生じるが、
 重心からの距離が短いのでその値は小さい
A脚を左右に開く
 旋回方向へモーメントを生じる
B脚の前後を揃える
 旋回方向へモーメントを生じる
C脚を閉じて待機姿勢に戻る

なんとも妥協案のような気はしますが・・・。
実際のモーションです。(音なし)


動作@の時に腕を広げているのは、
鉛直軸まわりの慣性モーメントを増大させ
逆方向への旋回を抑える意味があります。
あと、Bで脚の前後を揃えきっていません。
完全に揃えるとCで旋回してしまうという・・・
脚のピッチ方向に軸がないので仕方ないのですが。

見て分かるとおり、足を出す関係で前進しながらの旋回です。
ついでに後進しながらの旋回も追加しようと思ったのですが、
純正フレームでそこまでする必要もないので省略します。
ちなみに、完全な同時押しからはモーションを呼び出せませんので、
アリシアちゃんでは「前後進しながらの旋回判定」と
「旋回しながらの前後進判定」などによって動作させる予定です。
平行移動についても同様にしたいと考えています。


■ 6.効果確認

それぞれのモーションからモーションへの移行を確認します。(音なし)


特に問題はなさそうです。
こんなところに時間を喰うより(笑)、
さっさと次に進みましょう。



■ 7.標準化及び今後の課題

無線コントローラへのモーションの割り当ては、
私のAC操作(旧キングスフィールド操作)に合わせて
以下のように設定しています。
・↑:前進
・→:右旋回
・↓:後退
・←:左旋回
・R1:右平行移動
・L1:左平行移動
・移動同時押し:組み合わせ移動(予定)
・○を押しながら方向キー:速く移動(予定)
・×:ジャンプ(※実装済み)
・右スティック左右:アナログ値で首サーボと連動(笑)


第4話では、ジャンプについての考察を予定しています。
まぁ、時系列では既に純正フレームでジャンプはできているのですが。








pastupfuture