2019年8月24日土曜日

四脚歩行ロボットを作る その5 四脚歩行の分析

1.四脚歩行について考察

バンビ1号の完成により、ソフト開発が出来る様になりました。
当初の予定通り、四脚歩行の「モノマネ」をしてみましょう。

まず参考にしたのはこちらの動画です。


本物の犬ではありませんが、モデル化してくれてるので実物よりも判りやすいですね。
正確な理解ではありませんが、歩様によって名前がついており、これはwalk(なみあし)でしょうか。さらに早くなるに従い、trot(はやあし)、canter(駆足)、galop(襲歩)と呼ぶ様です。

簡単に分析してみると、左右の前足はほぼ1/2周期のズレで同時に着地している時間がわずかに存在しています。左右の後足も前足と同様の関係にありそうです。前後の足の周期は微妙なタイミングで、右前脚が着地するよりもわずかに早く左足が持ち上げられています。

全体的に眺めると、常に2本乃至は3本の足が着地しており、左右の足は逆位相、前後の足は3/8とか5/16周期ぐらいの位相のズレが有るイメージですね。

ややこしいので模式図にしてみるとこんな感じでしょうか。簡易的に考えるため、一歩の周期を16分割しています。

walk時の足の状態模式図
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
右前足
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
左前足
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
右後足
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
左後足
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
足が着地している
 
足が浮いている

2.足の動きのモデル

足を動かす際の周期はおおよそイメージが付きました。
続いて、一本づつの足の動きについてですが、バンビ1号は実物に比べると関節を省略した構造になっていますのであまり表現力が有りません(足首の返しとか出来るととてもそれっぽくなりそうですが)。
いきなり複雑な動きを制御するのも難易度が高くなりすぎますので、足先位置の軌跡を次のように単純化します。本来は蒲鉾型に近い軌跡になりそうですが、単純化して三角形として考えます。
一本一本の足はこのモデルの様に動かし、動かすタイミングをずらすことで、四本足の動きを表現してみます。

3.ロボット制御はパラパラ漫画

ロボット制御のサイトをあさるとロボット制御はパラパラ漫画だと言います。ロボットの動きを時間で分解し、ある瞬間ごとのサーボ位置を再現してつなげていくと動的なモーションが完成しているという考え方です。
今回もその方法に沿ってスケッチを書いてみます。

4.足先の座標計算

上で考えた様な足の動きをサーボモーターでトレースしようとするには、
  1. 足先の座標を計算する
  2. 狙いの座標に足先を動かすためのサーボモータの角度を計算する
  3. サーボモータに指令を出す
と言うながれになります。
足先の軌跡は単純化していますので、歩幅と肩位置の高さと、軌跡の最高点を決めてやれば軌跡の形が定まります。
また、座標は時間の経過に応じて定まりますので、歩くスピードと、足先の接地時間、滞空時間の比率を決めると、時間Tでの足先の座標が決まります。

x(T)=x(0)+vx(T)
y(T)=y(0)+vy(T)

式を立てるとすると、こんな感じ。一次元の方程式なのでこれなら中学生レベルの私でも大丈夫です。
実際には三角形の軌跡なので、一歩当たりの周期や肩までの高さ、歩幅、足の振り上げ高さあたりを任意に決めると各頂点ごとにx(0)とy(0)やvx、vyが決まります。

このあたり、計算ばかりであまり面白くないので今回はすっ飛ばします。
機会があれば次の逆運動計算と合わせてまとめるかも。

5.逆運動計算

もう一つ厄介な計算が逆運動計算です。
これは足先の座標を満足するためのサーボの角度を算出する計算です。
今回用いた2関節の足の場合、こちらのサイトに2リンク系の逆運動計算が詳しく紹介されていますので、ほぼそのまま利用しました。
少々ややこしいですが、最後の式を計算させれば、肩位置サーボの角度(θ1)と肘位置サーボの角度(θ2)が求められます。
なお逆運動計算では逆三角関数を利用する為、スケッチを書く際にはmath.hライブラリをインクルードしておきましょう。

6.まとめ

あれやこれやの計算が出てきますが、資料を探してそのまま使っているだけです。時間をかけてブログ等で解説してくださっている先人に感謝です。
次回はいよいよバンビ1号を動かしてみたいと思います。

0 件のコメント:

コメントを投稿

ESP32でスマホとシリアル通信 その2 BluetoothでLチカ

1.BluetoothでLチカ制御 前回、Bluetoothでの双方向通信に成功しましたので、ついでに少しスケッチを修正してスマホからESP32のLチカを制御した様子が以下の動画です。 撮影が悪くて画面が良く見えませんが、"1"を送信...