●基準姿勢を調整する


ロボットを組み立て終わりましたらいよいよ電源を入れて立たせてみます。
「アクション初期化」をひとつ配置します。実はこれだけで全てのサーボを90°に駆動します。

micromachine_tutorial_visual_5-1

この状態でロボットに転送して実行しますが、倒れないようにロボットは寝かせておきます。腕は割とラフで構いませんが、両足は前から見て、横から見て、まっすぐになるようにソフト的にこれを修正します。下記のように修正用の変数の配列"offset[12]"(名前はなんでも良い)を使います。数値を12個並べたものです。
一応各関節(サーボ)に名前をつけました。

0 LHR Left Hip Roll 左股関節左右
1 LHP Left Hip Pitch 左股関節前後
2 LAP Left Ankle Pitch 左足首前後
3 LAR Left Ankle Roll 左足首左右
4 LSP Left Shoulder Pitch 左肩前後
5 LSR Left Shoulder Roll 左肩左右
6 RSR Right Shoulder Roll 右肩左右
7 RSP Right Shoulder Pitch 右肩前後
8 RAR Right Ankle Roll 右足首左右
9 RAP Right Ankle Pitch 右足首前後
10 RHP Right Hip Pitch 右股関節前後
11 RHR Right Hip Roll 右股関節左右

配列のブロックは「マイクロマシーン」の宣言ブロックと要素ブロックを使います。宣言のところで"offset"と名前をつけて、要素は歯車をクリックして"item"を12個に増やしてください。要素ブロックには数値の"0"を12個接続し、アクション初期化の"Offset"には変数カテゴリから"offset"をドラッグして接続します。

micromachine_tutorial_visual_5-2

配列の要素は上から#0,#1,#2...です。
アクション初期化ブロックの内部で、サーボの角度指定のところに補正値を足して実際に出力される角度を修正しています。offsetの12個の値をいろいろ変えてロボットを立たせてみてほどよい値を見つけるのですが、とは言え、いちいち数値を変更するごとにコンパイルしてコピー&ペーストして、というのはかなり面倒ですので、少し楽になるツールを用意しました。

こちらのArduinoプロジェクトmm_correctorをダウンロードしてください。mm_corrector.inoをダブルクリックして実行し、矢印ボタンでロボットに書き込んでください。

シリアルモニタを起動して上部の送信窓から角度補正値を送るとすぐに補正された位置にサーボが動きます。フォーマットは、a,bという形でaはサーボの番号(0から11)bはaサーボに与える補正値です。下の受信エリアには、#1サーボの補正値,#2サーボの補正値...というふうに表示されます。だいたい良い感じ(ガタガタしない)になったところで補正の値をメモしておきます。今後はいつもプログラムにはこの補正値を使います。

micromachine_tutorial_visual_5-6

サーボの回転方向はこちらの図で確認してください。最初から大きくずれてしまっている場合(30°以上)はサーボホーンを1歯ずらしてみてください。
だいたい合ったところで電池を背負った状態で後傾になっていないかどうか確認します。もし後ろに体重がかかっていると歩行で倒れやすくなりますので、足首の関節で調節します。
非常に根気のいる作業です。落ち着いて頑張りましょう。下図の矢印は各サーボの+の回転方向を示しています。
mm_joints

●歩行させる

調整が終わりましたら歩かせてみます。とりあえず下記の変更部分を追加して動かしてみましょう。offsetの各値はご自分のロボットに合わせて書き換えてください。

micromachine_tutorial_visual_5-3

いかがでしょうか。倒れずに前に進めば合格です。左右で動きが違う等の問題はイニシャル姿勢のオフセット調整で修正します。

●練習問題

後ろに歩かせてください。
プログラム例

micromachine_tutorial_visual_5-4
●練習問題

前進3歩(3サイクル) → 右旋回2歩 → 左横歩き2歩 → 停止
ヒント ・○歩は繰り返しブロックを使う
   ・停止の後、前進3歩に戻らないために「Arduino」→「ずっと待つ」を使う
プログラム例

micromachine_tutorial_visual_5-5

<= マイクロマシーン チュートリアル(4)
チュートリアルベース
マイクロマシーン チュートリアル ビジュアル版(6) =>