ロボット設計モードでは、ロボットの動き(モーション)やロボットの構成(寸法、質量、関節数等)を自由に設計することができます。
メニューから、【モード】ウィンドウを開き、【ロボット設計】を選択してください(図 5-1)。 次に図 5-2のような画面になっていることを確認してください。
メニューの【入門/上級】で、入門モードと上級モードに切り替えることができます。
入門モードにしますと、難しい操作を行うメニューが使用できないようになります。
操作に慣れるまでは、入門モードにされることをお勧めします。
ロボットのモデルデータには様々なデータが含まれています。例えば寸法質量等のデータや、外装のポリゴンファイルデータ、歩行モーション等を記述したデータ等様々なデータがあります。
これらのデータをロボット毎に一つにまとめたものを「ロボットプロジェクト」として、管理しています。
図 5-3 プロジェクト
メニューの【プロジェクト】→【ロボットプロジェクト】を選択してください。プロジェクトウィンドウ(図 5-4)が表示されます。
ロボットプロジェクトを新規に作成するには、図 5-4のように、①プロジェクト名を記入し、②【新規作成】ボタンを押してください。すると、③ロボットが新規に作成されます。
本章の解説では、このロボット(以下、「デフォルトのロボット」と呼びます)をベースに改造していくことになります。
なお、基本的な設定やモーションは登録されていますので、デフォルトのロボットですぐにゲームを楽しむことができます。
図 5-4 プロジェクトウィンドウ
既に作成されたロボットを開くときは、図 5-5のように、①ロボットを選択し、②【開く】ボタンを押してください。
念のため③ステータス表示を確認してください。もしもロードに失敗すると、エラーやワーニングが表示されることがありますので内容を確認してください。
図 5-5 ロボットプロジェクトのロード
ロボットプロジェクトを削除するときはロボットを選択し、【削除】ボタンを押してください。
尚、安全のためここで削除してもファイル自体は削除されないようになっています。
次節で解説するように【プロジェクトフォルダを開く】ボタンを押すと、エクスプローラが立ち上がりますので、
そちらでフォルダの内容を確認しますと、プロジェクトフォルダが「test01」→「_del.test01」のようにリネームされているのが確認できます。
フォルダの先頭に「_del.」とあったらプロジェクトフォルダとして認識しないようになっています。
再度使用したい場合は、フォルダ名の「_del.」という部分を消してください。
設計モードで使用するステージを選択することが可能です。
メニューの【プロジェクト】→【ステージ選択】を選択してください(図 5-6)。
ロボットプロジェクトと同様に選択し、【開く】ボタンを押してください。
【デフォルト】エリアはインストール時に一緒に用意されるステージです。
【ユーザ作成】エリアはユーザーが作成したステージが表示されています。
尚、ここではステージは開くのみで編集はできません。ステージの編集はステージ設計モードで行うことができます(ステージ設計モードを参照)。
図 5-6 ステージ選択
本節では、ロボットのモーションの作成方法を解説します。
事前にロボットプロジェクトを新規作成してください(プロジェクトメニューの節参照)。デフォルトのロボットを元に解説を進めて行きます。
ポーズを作成するには、図 5-8のようにFKタブの【白い欄】に数値を入れることによって、ロボットの関節角を指定することができます。単位は[度]です(関節がスライダージョイントの場合は[mm]です)。
なお、FKとは順運動学(Forward Kinematics)という意味で、詳細はモーション作成(IK)の節を参照ください。
図 5-8 ポーズ作成
物理演算を行っていますので、例えば図 5-9のようにバランスが崩れると転倒します。
転倒した場合は、【設定】メニューの【RESET】ボタンを押すと元の位置に戻ります(図 5-10)。
モーション(ロボットの動き)は、前節で作成したポーズを複数つくって、順次再生してつくります。パラパラ漫画のような要領で複数ポーズを用意して再生します。
モーションを作成するには図 5-11のようにポーズを一つ一つ登録していきます。
主な流れは、①ポーズを登録する行を選択し、②関節角を動かしてポーズを決め、
③【→】ボタンを押すと①で指定した行にポーズが登録されます。
この操作を繰り返し、図 5-12のように、④複数のポーズを登録してください。
そして、⑤【Run Motion】ボタンを押すと登録されたポーズを連続的にモーションとして実行されます。
図 5-11 モーション登録(ポーズの登録)
図 5-12 モーション登録(複数ポーズを登録後、実行)
その他のFKタブでの使用可能な機能を図 5-13にまとめました。
モーションデータの、保存、ロード、削除は図 5-14 の【Save】、【Load】、【Delete】ボタンから行うことができます。
予めサンプルモーションが複数登録されていますので、これらをロードして参考にされると良いでしょう。
ロードしたら図 5-12 で解説したように、【Run Motion】ボタンを押すとモーションが実行されます。
なお、モーション名には半角英数字のみ指定可能です。
モーションファイルの保存場所はファイル構成ページのROBOT_PROJECTS フォルダの節を参考にしてください。
図 5-14 モーションのSave,Load,Delete
図 5-15 デフォルトロボットに予め用意されているモーション
これまでは一つの関節毎の操作方法を解説しましたが、複数の関節を同時に動かすことが可能です。
【モーションエディタ】の【FK sync】タブを選択してください(sync=「同期」の略です)。
例えばロボットの右肩と左肩を同時に動かすには図 5-16 のように、①右肩と左肩の数値を1に設定し、②+/-ボタンを押すと、③右腕と左腕が同期して前に動きます。
図 5-16 モーションエディタFK syncタブの使用方法
FK syncタブのすべての値を0クリアするには図 5-17の【Clear】ボタンを押してください。
FK syncの値を保存、削除するには【Save】【Delete】ボタンを押してください。
図 5-17 FK syncのClear, Save, Delete
保存した値をロードするには図 5-18 のコンボボックスから選択します。FK Syncタブのタブエリアの外にありますので、いつでもロードすることが可能です。
図 5-18 FK syncのLoad
初期状態では全ての関節角を操作できるようになっていますが、一部の関節角のみに制限することが可能です。
【Switch】タブのチェックボックスを外し(図 5-19(1))、【FK】タブで確認すると、関節角の操作を出来ないようにロックされていることが確認できます(図 5-19(2))。
この機能は、モーションを連結する際に便利なときがあります。
例えば既に他のモーションで上半身のポーズを作り、次に上半身はそのままのポーズに固定して歩行したいとします。このとき、通常のように歩行モーションを作ると上半身の動きも指定されてしまうので、ポーズを固定できません。そこで、上半身の関節のSwitchを全てOFFにして、下半身のみで歩行モーションを作れば、上半身のポーズはそのままで歩行モーションを実行することができます。
これまでのロボットの動作作成では、関節角を直接指定しました。
このようなロボットのポーズの指定方法を順運動学(Forward Kinematics; FK)と呼びます。
逆に、例えばロボットの手先の位置や姿勢をして、自動的に関節の角度を指定する方法を逆運動学(Inverse Kinematics; IK)と呼びます。
FK及びIKはロボットやCG、ゲーム等、3次元モデリングの分野でよく使われる用語ですので興味のある方は詳しく調べてみてください。
Go Simulation!でもIKでロボットのポーズを作成することが可能です。
【IK】タブを選択し、図 5-20 のように、①デフォルトのロボットで固定パーツ1を「0」に、移動パーツを「23」に設定してください。
②固定パーツ(BODY0=胴体)が青枠で、移動パーツ(BODY23=右手)が緑枠で表示されていることを確認してください。
③【-Y】ボタンを7回、【+Z】ボタンを7回押してください(中央の数値0.010はボタンを押したときの移動量で1回ボタンを押すたびに相対で0.01m移動することを示しています)。
すると図 5-21(1)のように右手パーツが移動します。
引き続き【-RY】ボタンを20回程押すと(2)のように右手パーツが回転します(中央の数値1.0はボタンを押したときの回転量で相対で1.0deg移動することを示しています)。
IK駆動で指定すると、動けない位置・姿勢へ指定される場合もあります。その場合はできるだけ近い位置・姿勢に設定されます。 達成度の目安として図 5-22 の評価関数の値を参考にしてください。誤差の値が小さいほど目標位置・姿勢に到達しているということを示しています。
前節では固定部は1箇所でしたが、固定パーツを二箇所にすることが可能です。 例えば図 5-23 のように固定パーツ1と固定パーツ2、移動パーツを設定してください。 次にFKタブの操作でロボットが少ししゃがんだ状態にし、図 5-24 のように【+RX】ボタンを押すと+RX方向に回転します。 ロボットの両足を固定して胴体を動かすという操作を行ったことになります。 このようなモーションをFKタブの操作のみで行うのは非常に大変です。
本操作では「ロボットが少ししゃがんだ状態から」操作を行いました。
この操作を行わずにIK操作をしますと、思わぬ動作になります。
例えばしゃがまない状態から【-Z】方向に移動すると、図 5-25 以下のように片方の脚が逆関節に曲がることがあります。
このようになる場合もありますし、うまく行く場合もあります
。曲げ方向が何通りかあるときは、予め希望する方向に少しだけ動かしてからIK操作をさせると良いでしょう。
図 5-25 IK駆動で予想外の方向に駆動してしまった例
IK設定が可能なループと不可能なループを図 5-26 に示します。
(1)のように、[3]→[1]→[0]または、[0]→[2]→[4]のように、Body番号が減少のみまたは増加のみの場合は設定可能です。
(2)のように、[2]→[0]→[1]→[3]のように、Body番号の減少と増加が混在するようなループは設定することができません。
サーボモータの精度がHinge(回転)の場合は0.01[deg]、Sliderの場合は0.001[m]となっているため、これより高精細なIK駆動をすることはできません。
歩行モーションを自動で生成する機能があります。 デフォルトで作成されるロボットに近いモデルでしたら、この機能を使うと簡単に歩行させることができます。 ただし、簡易的なアルゴリズムですので、より高速な歩行等を目指す場合は、この機能に頼らずに歩行モーションを作成したほうが良い場合があります。
【Walk】タブを選択し、図 5-27 のように、①【歩行モーション生成】ボタンを押し、②モーションが自動作成されたことを確認し、③【Run Motion】ボタンを押すと歩行モーションが実行されます。
初期状態のパラメータはその場で足踏みをするようになっています。
例えば前進させるには、【前後角(歩幅)[deg]】の値を7.0等に設定してみてください。
先ほどと同様に①→②→③の手順でモーションを実行してください。前進することが確認できます。
バランスが崩れ始めたら他のパラメータを調整してください。
本機能を使用するためには、デフォルトのロボットと同じように以下の関節角の変数名が設定されている必要があります。
AnkR_R, AnkR_L, HipR_R, HipR_L, AnkP_R, KneP_R, HipP_R,
AnkP_L, KneP_L, HipP_L, ShoP_R, ShoP_L
変数名の設定についてはサーボモータ設定の節を参照ください。
ロボットの歩行を安定させるためにジャイロ制御がよく用いられます。
ジャイロは角速度、簡単に言うと“揺れ具合”を測定するセンサーです。
ジャイロ制御では、ジャイロセンサーで揺れをみて、揺れを抑える制御を行います。
デフォルトのロボットには予めジャイロ制御パラメータ(制御の強さ)が設定されています。
ジャイロ制御パラメータの設定はジャイロ制御設定の節を参照ください。
ジャイロ制御の有効性を確かめるために、例としてデフォルトのロボットで、
【モーションエディタ】→【FK】タブ→【Load】→【0WalkYokoTaore.rmo】をロードしてください。
【RunMotion】ボタンを押して実行するとバランスを崩して倒れてしまいます。わざと不安定な歩行をさせているためにバランスを崩しています(図 5-28 )。
次に【ジャイロ制御On/Off】にチェックを入れてから(図 5-29 )、モーションを実行してください。倒れずに歩行できていることが確認できます。
このようにバランスを崩しそうなモーションでもジャイロ制御を入れることによって、バランスを保つことができます。とはいえ万能ではありませんが。
モーション保存時に【ジャイロ制御On/Off】の状態もモーションデータと一緒に保存されます。モーションによってジャイロ制御のOn/Offを使い分けることが可能です。
複数のモーションデータをまとめてモーショングループとして登録可能です。 繰り返し部分の多いダンスモーションや、連続コンボ技などを登録するのに便利です。
モーショングループを登録するには、【モーション設計】→【モーショングループ】を選択すると図 5-30 (1)のようなウィンドウが表示されます。
①登録する行を選択し、②登録するモーションを選択し、【セット】ボタンを押すとモーションが登録されます。
同様の操作で二つのモーションを登録すると、図 5-30 (2)のようになります。
そして④【実行】ボタンを押すと、二つのモーションが連続で実行されます。
また、⑤【For】で繰り返し実行される回数を個別に設定することが可能です。
モーショングループから他のモーショングループを呼び出すことも可能です。
データの【Save】【Load】【Delete】が可能です。
ジョイパッドのボタンに任意のモーションやモーショングループを割り当てることが可能です。
ジョイパッドの操作法についてはバトルモードページの操作方法の節を参照ください。
ジョイパッドの設置をするには、【モーション設計】→【ジョイパッド設定】を選択してください。
図 5-31 のようなウィンドウが表示されます。デフォルトのロボットには予めいくつかのモーションが登録されています。
変更するには、①コンボボックスからモーションファイル又はモーショングループを選択、
②再生ボタンを押すと指定モーションが実行されますので動作を確認してください。最後に③【Save】ボタンを押すと設定が保存されます。
尚、設定データは【Save】ボタンを押した後にジョイパッドに反映されます。
ジャイロ制御についてはジャイロ制御の反映の節で解説しました。
ここではジャイロ制御のパラメータ(強さ)の設定方法について解説します。
ジャイロ制御を調整するには、【モーション設計】→【ジャイロ設計エディタ】を選択してください。
図 5-32 のようにジャイロ設計設定ウィンドウが表示されます。
X、Y、Z軸の各軸毎に制御系設定をすることが可能です。デフォルトのロボットにはX軸(ロール軸)方向の制御のみ設定されており
、図 5-32 のようにX軸周りの左右足首、左右腰のロール軸のパラメータをそれぞれ80に設定されています。
ジャイロ制御の反映節で解説したようにロール軸方向の揺れに対して強くなっています。
ロボットの制御はオリジナルのスクリプト言語で記述されています(スクリプト言語のページ)。
スクリプト言語のデバッグ用にコマンドウィンドウが用意されています。
コマンドウィンドウを開くには、【モーション設計】→【コマンドウィンドウ】を選択してください(図 5-33 )。
簡単なコマンドの実行方法について解説します。
ロボットの関節指令値にはサーボモータ設定の節にあるように、変数が設定されています。
コマンドウィンドウから直接変数の値を読んだり、書き換えたりできます。
デフォルトのロボットの場合、右肩ピッチ軸の変数は「ShoP_R」となっています。
①コマンドウィンドウでShoP_Rと打ち込んでください。
②ShoP_Rの現在値(ShoP_R=0)が表示されます。
③ShoP_R=9000と入力してください。ロボットの右肩が90[deg]回転します。
値1カウントに対し0.01[deg]に設定されていますので、9000で90[deg]に相当します。
④rmo(0Walk)と入力してください。
モーションファイル0Walk.rmoが実行され、ロボットが前進歩行します。
⑤rmg(LR-Step)と入力してください。
モーショングループLR-Step.rmgが実行され、ロボットが左右に移動します。
⑥runと入力すると、スクリプトmain.txtが実行されます。
main.txtは無限ループ実行されるので、停止するには、【設定】→【Reset】ボタンを押してください。
構成設計のメニューではロボットの構成や形状等を大きく変更することができます。小型ロボット、大型ロボット、車輪型ロボット、動くステージ、障害物など、様々なものを作成可能です。
そのため、モーションを作成した後に、構成設計のメニューを使用しますとこれまでに作成したモーションで動かなくなる場合や、モーションが使えなく場合もありますので、注意してください。
新規にロボットを設計される場合は、最初に構成設計を行い、そのあとにモーション設計をされることをお勧めします。
ロボットの設計を解説する前に、ロボットやステージのパーツの構成について解説します。
パーツ単体は図 5-34 のような構成になっており、物理情報とポリゴン情報、そしてジョイント情報より構成されています。
各パーツは一つだけジョイントを持っていて、これを接続することで図 5-35 のようなロボットのモデルを作ります。但し0番目のパーツにはジョイント情報がありません。
ロボットの各パーツには親子関係があり、例えば図にありますようにパーツ1番の親は0番となっています。子は親に連動して動きます。
変更したデータを保存するには、【保存】ボタンを押してください(図 5-36 )。
設定データの保存先は、【データフォルダを開く】ボタンを押したときにエクスプローラ等に表示される、config.txtになります。ファイル構成についてはファイル構成ページを参照ください。
設計エディタではBODY毎に設定を行います。例えば17番のBODYを編集したいときは、図 5-39 のように選択します。
選択したときに、3D Viewウィンドウ上で赤色で表示されているBODYが現在編集中のBODYで、黒破線で表示されているBODYは親BODYです。BODYの親子関係については、パーツの構成の節を参照ください。
パーツの位置・姿勢を変更するには、①【位置姿勢】タブを選択し、②Body Posの値を変更し(例ではX方向に123.4[mm])、③Body Rotを変更(例ではX軸周りに34.5[deg]回転)します。
図 5-40 BODYの位置・回転
親に対して、どの位置に配置するかを設定できます。図 5-41 のようAlignment(アライメント)を調整することによって、親パーツに対する位置を設定することが可能です。設定内容は表 5-1 のようになります。
図 5-41 Alignmentの変更
表 5-1 Alignmentの設定値
設定値 | 動作 |
---|---|
Center | 親パーツのCenter(中心)に合わせる |
+X | 〃の+X面(前)に合わせる |
-X | 〃の-X面(後)に合わせる |
+Y | 〃の+Y面(左)に合わせる |
-Y | 〃の-Y面(右)に合わせる |
+Z | 〃の+Z面(上)に合わせる |
-Z | 〃の-Z面(下)に合わせる |
ジョイントの位置や方向は、【Joint】タブで設定可能です。
図 5-43 の例では右肩のJoint Axisをピッチ方向(0,1,0)→ヨー方向(0,0,1)に 変更しました。
関節の駆動方向が変わったことが確認できます。
簡易表示時の色は、【簡易表示用色】タブで設定可能です。
図 5-44 の例では右肩の色を、(R=0, G=1.5, B=0, A=0)→(R=2, G=0, B=0, A=1)に 変更しました。
但し、RGBAの定義は以下の通りです。
R:赤成分
G:緑成分
B:青成分
A:透明度
通常、簡易表示部の表示は行わないので、A=0に設定することになると思います。
Aの値を増やしていくと、常に表示されるようになります。
図 5-44 簡易表示色
その他の設定は特殊設定タブにまとめてあります(図 5-45 )。
図 5-45 特殊設定
Joint Type
ジョイントのタイプを選択することができます。
HINGE | 回転ジョイント |
SLIDER | 直線駆動するジョイント |
FIXED | ジョイントを固定する(モータ駆動しない) |
NONE | ジョイント無し |
Body Type
衝突判定エリアの形状を選択することができます。
BOX | 直方体 |
SPHERE | 球体 |
CAPPED_CYLINDER | カプセル型形状 |
CYLINDER | 円柱型形状(接触判定の動作が不安定なためお勧め致しません) |
各形状は図 5-46 のようになります。
図 5-46 Body Type
Phys Type
物理演算を行うかの設定をします。
物理演算ON | 全ての物理演算を行います。 |
接触判定のみ | 接触判定のみを行います。動かない壁や床等はこの設定にすると演算速度が速くなります。 |
物理演算OFF | 物理演算を行わないようにします。駆動出来ますので、ビジュアル的に駆動させることが可能です。 |
Parent
親パーツを設定することができます。
親パーツに設定できるのは、自分のパーツ番号よりも小さいパーツです。
親パーツ無しに設定することも可能です。
ポリゴンファイルの設定方法について解説します。
設定は図 5-47 のエリアで行います。
図 5-47 ポリゴンファイルの設定
ポリゴンファイルを追加するには、【ポリゴン追加】ボタンを、削除するには【ポリゴン削除】ボタンを押してください。
ポリゴンファイルの数に応じてタブが増えます(図 5-48 )。
CAD等で作成したポリゴンファイルを使えるようにするには、
【データフォルダを開く】ボタンを押してフォルダを開き、
STLファイルの場合は【stl_data】フォルダ内に、
Xファイルの場合は【X File】フォルダ内に、
コピーしてください(STL, X FILEについてはワンポイントページのSTLファイルの軽量化方法の節、
ワンポイントページのメタセコイアからのインポート方法の節を参照ください)。
ポリゴンファイルを変更するには【FILE TYPE】から【STL】か【X FILE】を選択してください。
次に【FILE 名】でファイルを選択してください。
STLファイルの場合は色を設定できますので、色を設定してください
(X FILEの場合はファイル内で色が既に設定されています。)
位置を変更するには【Pos[mm]】の値を、姿勢を変更する場合は【Rot[deg]】の値を、拡大縮小を行う場合は【Zoom】をそれぞれ選択してください。
【センター基準】にチェックが入っていない場合は、ポリゴンの位置はファイルの座標値をそのまま使用します。
チェックが入っている場合は、ポリゴンの中心位置を原点とします。
【ポリゴン表示】のチェックを外すとポリゴンが一時的に表示されなくなります。
最後に、以上の機能を使用してポリゴンデータを追加した例を図 5-49 (右肩の赤いパーツ)に示します。
パーツの一部の情報をコピーし、別のパーツにペーストすることが可能です(図 5-50 )。
【寸法質量色Copy,Paste】ボタンで、質量・寸法の節の寸法質量情報と、
簡易表示用色の節の簡易表示情報のCopy,Pasteを行うことができます。
【ポリゴン情報Copy,Paste】ボタンで、ポリゴン設定の節のポリゴン情報のCopy, Pasteを行うことができます。
ロボットの足裏となるパーツの番号を設定できます。
足裏パーツの定義は、バトルでの転倒判定に使用されます。
バトルでは足裏以外が地面についたらダメージが蓄積されます。
従って、ここで定義された11番と12番のパーツが地面に接している間はダメージが蓄積されません。
また、各モード共通機能ページの設定メニューの節のZMP表示の計算にも足裏のパーツ番号を使用しています。
ロボット搭載カメラ(各モード共通機能ページのカメラメニューの節)をどのパーツに載せるかを設定することができます(図 5-52 )。
ロボットの関節のサーボモータの特性を設定することが可能です。
設定を行うには、メニューから【構成設計】→【サーボモータ設定】を選択し、図 5-55 のサーボモータ設定ウィンドウで設定します。
図 5-55 サーボモータ設定
各項目の設定内容は次の通りです。
ID:BODY番号 変数名:スクリプトで使用する変数名 方向:モーターの回転方向を+,-で設定 最大トルク:モータの最大トルク(or 力) 位置gain :位置制御の強さ モータPgain:モータの保持力の強さ モータDgain:モータの粘性力の強さ 摩擦力:関節に加わる摩擦トルク(or 力) 最大速度:関節の最大速度 最小範囲:最小駆動範囲 最大範囲:最大駆動範囲 デッドバンド:制御できない範囲(ギアのバッククラッシュの模擬用) 制御タイプ:位置制御か速度制御を選択
ロボット内のパーツ同士をグループ化し、グループ同士を接触させることが可能です。
接触グループの設定を行うには、メニューから【構成設計】→【接触グループ設定】を選択し、図 5-56 の接触グループ設定ウィンドウで設定します。
図を例に、接触グループ設定ウィンドウの見方を解説します。
メニューから【構成設計】→【配置エディタ】を選択すると、配置エディタウィンドウが表示されます。
配置エディタには大きく2つの機能があります。
ロボットによって関節の構成が違いますので、ロボット毎にモーションエディタ等でのボタン配置を変更する機能が設けられています。
例えば図 5-57 (1)のように配置を設定すると、図 5-57 (2)のようにモーションエディタ等のボタンの配置が変わります。
配置エディタでロボットのパーツ数を自由に変更することが出来ます。
例えばパーツ番号25番を追加するには、追加エリアに「25」と設定して【追加】ボタンを押します。左手に、24番パーツの子としてパーツが追加されました(図 5-58 (1))。
これを右手に移動させるには、配置エディタを閉じて設計エディタを開き、図 5-58 (2)のように【特殊】タブの、【Parent】の値を23(右手パーツ)に設定します。
その他各モードで共通的な操作は各モード共通機能のページを参照ください。