モーションスクリプトの作り方 歩行編

第1章 足を動かして歩行

プチロボXのスクリプト作成手順をステップをおって説明します。
基本動作である二足歩行のスクリプト作成からプチロボXを動かす「コツ」をつかんでください。

●準備
下記のものを準備してください。
用意するもの

■パソコン(Windows2000、XP、Vista が正常動作しているもの)
※プチロボX専用ソフトウェアのインストールが完了し正常動作していること

■電池 (単3形 4本 充電池可)
■完成しているプチロボX本体
■専用シリアルケーブル
(注1)
(注1)以降の動画・写真では無線コントロールモジュール(オプション)を搭載した状態で撮影しています。
有線(専用シリアルケーブル)でも動作可能ですが、そのケーブルが障害となりモーション作成(実行)の制限を受ける場合があります。無線コントロールモジュールの導入を強くお奨めします。

オプション無線モジュール「WER-418B」


専用シリアルケーブルをプチロボXとパソコンに接続(無線を使用する場合は無線コントロールモジュールの送信機にシリアルケーブルを接続)し、プチロボX専用ソフトウェアを起動後にプチロボXの電源を入れて「ホームセット」ボタンを押してください。
 

左右で位置が違っていたり、傾いていないか良くチェックしてください。

ホームセットで真っ直ぐになっていない場合は再セットしてください。

再セット(ホーム記録→ホームセット)する時は片手で持ち上げてサーボモータの動きを確認しながら、画面上のスライダ数値を"1"ずつ進めて調整します。

写真(赤ライン)のように真っ直ぐになっているかチェックします。

プチロボXの動作実験時は平らで硬い机の上で行ってください。

×カーペットの上
(毛足がひっかかります)

×ゴムなど摩擦の大きい素材の上
(足裏がすべらずにうまく動きません)


【注意!】プチロボXは金属製なので机の材質によっては傷つくことがあります。傷がついてはいけない場合は机の上に何かを敷くなどの対策をしてください。

×薄くて軽い紙の上
(硬い机の上でも紙自身が移動してバランスが取れなくなります。紙を敷く場合は動かないようにテープなどで固定してください。)


●足を動かすスクリプトの記述

モーションスクリプトボードの1行目に「;歩行テスト」と記述してください。

次に足を動かすスクリプトを書きます。
歩行なので、人体の膝にあたる部分のサーボモータを前に出す指令を書いてみます。

;歩行テスト
S1
1+30

【Tips】
◆スクリプトの基本記述 その1
・書式 "[サーボモータ番号]±[回転位置]" "1+30" は
 サーボモータ1を+の回転方向に30の位置(ホーム位置を0とする)まで動かすという意味です。

※1行目のコメント(; セミコロンを付けて記述)はファイル名になります。

※コメントを除きスクリプト記述の文字はすべて半角英数文字を使用してください。(全角文字はエラーとなります。)

【Tips】
◆スクリプトの基本記述 その2
書式 "S[数値]”でサーボモータを動かすスピードを変えることができます。
数値が大きくなる程スピードが速くなります。最小は"1"、最大は"110"くらいになります。
マイナス値は指定できません。
動作が速くないと成立しないスクリプト(勢いを利用する場合)もありますが、動きを見るために最初はゆっくりと動かしましょう。


ここで記述したスクリプトを実行してみましょう。
「ホームセット」ボタンを押して一旦ホームに戻し「モーション開始」ボタンを押してください。


「ジーッ」という音が大きくなってプチロボXが変な方向に傾きましたね。

一旦、ホームに戻して、今度はプチロボXを手で持って「モーション開始」ボタンを押してください。
横から見るとよくわかりますがサーボモータが動くことによって
足裏が接地面よりも下になっています。
足裏を接地面に押しつけて無理な力がかかっているのでサーボモータに負荷がかかり、大きな音がなっていたのです。この状態が長く続くと、大量に電流が消費され電池も消耗します。また、サーボモータのドライブ回路が発熱し最悪の場合は熱損して壊れてしまうことがあります。

これで 1つのサーボモータを動かすために他のサーボモータも連動して動かさなければ思うように動作しないということがわかりました。

どうやらサーボモータ0も同時に動かす必要がありそうです。
次にサーボモータ0の動作の記述を付け足してみましょう。

;歩行テスト
S1
1+30
0-30

追加した 0-30 は
足裏が水平になるように動作させるための記述です。

図はサーボモータの回転と足裏の状態を表しています。(側面 簡略図)
上のサーボモータと同じ角度だけ下のサーボモータを逆回転方向に動かせば足裏が水平になることがわかります。



記述したスクリプトを実行してみましょう。
「ホームセット」ボタンを押して一旦ホームに戻し「モーション開始」ボタンを押してください。

実行結果:

今度は、すーっと足が前に出たと思います。

これで次に反対の足も曲げれば1歩踏み出せそうです。
但し反対の足は"膝"では無く、足首を前に倒すようにします。

※両方の膝を曲げれば、ただの屈伸運動にしかなりません。興味のある人はやってみましょう。

;逆屈伸?スクリプト
1+30
0-30
4+30
3-30


足首を前に倒すスクリプト記述を追加

;歩行テスト
S1
1+30
0-30
4-30
3+30

【Tips】
◆スクリプトの基本記述 その3
複数のサーボモータに、まとめて指示を出す時はコマンドの間を","カンマで区切ります
例 0+0,1+0,2+0
この書き方で複数のサーボモータが同時に動作します。

今までの記述を、まとめる場合は
「1+30,0-30,4-30,3+30」

と記述して1行で表記できます。

※サーボモータ制御コマンドの実行はスクリプト行ごとに行われます。1行実行後、次の行が実行されます。
1個1個のサーボモータごとに改行していると時間がかかるので同時に実行しても問題無いと思われる時は1行にまとめましょう。

記述したスクリプトを実行してみましょう。
「ホームセット」ボタンを押して一旦ホームに戻し「モーション開始」ボタンを押してください。

実行結果:
何となく足が前に出て「歩行」らしくなりました。

次に今書いたモーションの左右逆のモーションを書いてみましょう。
左、右、左、右と足だしを繰り返せば歩行できるのでしょうか?


左右逆の動作のモーション記述は簡単です。
サーボモータの回転方向を決める符号を逆にするだけです。

;歩行テスト
S1
1+30,0-30,4-30,3+30
1-30,0+30,4+30,3-30

記述したスクリプトを実行してみましょう。
「ホームセット」ボタンを押して一旦ホームに戻し「モーション開始」ボタンを押してください。

動作完了後もう一度続けて「モーション開始」ボタンを押してください。


実行結果:

モーションを繰り返して動作していますが、一向に前に進みません。
同じ所で足を出したり引っ込めたりしているだけのようです。
なぜでしょうか?

人の歩行プロセスを考えてみましょう。
無意識に行っていますが歩行する時は「重心」の移動をしながら足を上げて前に出しています。
プチロボXに限らず人型ロボットを歩行させる時もこの重心の移動が非常に重要になります。



“重心”とは
物体全体の各箇所に働く重力を1つにまとめた時の一点(全質量がそこに集中したと見なせる仮想の点)を「重心」といいます。簡単に言うと物体を一点で支えた時に、ちょうど釣り合う点となります。
ペンを横にして指の上に乗せてみてください。
乗せる位置がペンの中央付近だと左右どちらにも落ちずに指の上に乗っていると思います。

そのバランスのとれている位置(写真の赤点位置)がペンの重心です。

次章ではプチロボXの重心移動について考えてみましょう。


このページトップへ ^サポートページトップへもどる次章へ >>