はじめに

インストール>サンプルシミュレーションの所で、サンプルプロジェクト(SampleRobotPD.xml)をロードしてOpenHRP3の動作確認を行いました。
ここでは、自分でプロジェクトを作成して、シミュレーションを行う手順について説明を行います。

OpenHRP3を利用するためには、ロボットモデルとコントローラを作成する必要がありますが、今回はSampleRobotPD.xmlと同様に、

ロボットモデル:OpenHRP3/etc/sample.wrl
コントローラ :OpenHRP3/Controller/server/PDcontroller

として以降の説明を進めます。

なおPDcontrollerは、

PDゲインファイル : OpenHRP3/Controller/server/etc/PDgain.dat
歩行パターンファイル : OpenHRP3/Controller/server/etc/angle.dat

を読み込んで、実行するコントローラです。

GrxUIの起動

Linux環境の場合

以下のコマンドでGrxUIを起動します。

$ cd (OPENHRPをインストールしたディレクトリ)/bin/unix
$ ./GrxUI.sh
またはファイルブラウザなどのGUIを使用してもGrxUI.shを実行できます。

Windows環境の場合

以下のコマンドでGrxUIを起動します。

>cd (OPENHRPをインストールしたディレクトリ)/bin/dos
>GrxUI.bat
またはエクスプローラなどのGUIを使用してもGrxUI.batを実行できます。


fig.1: Initial Window

使用するモデルのロードと初期設定

モデルのロードは、fig.2に示すようにItemView上で行います。


fig.2: load models


モデルアイテムを扱うViewには、ロボットモデルと環境モデルとを区別するものがあり、fig.3のようにItem Viewの右クリックメニューから変更します。


fig.3: Robot model to Environmental model


ロードしたモデルは3DView上に表示され、位置・姿勢、関節角度等を編集できるようになります。
編集した内容は、初期条件として各モデルのプロパティに設定されます。
編集中のモデルの関節角度は、RobotStateViewで確認する事ができます。


fig.4: 3DView and RobotStateView

関節角度編集モードでは、マウス操作により各関節を回転できる他、カーソルキー操作でも関節角度を調整できます。
ここでは、PDcontrollerが読み込む動作ファイルの初期姿勢に設定します。左上図の関節角度を参考に設定して下さい。

なお、PropertyViewを利用する事で、数値を直接入力して編集することも可能です。

コントローラの設定

ロボットモデルがある場合は、OpenHRP/Controllerタブで、コントローラを関連付ける事ができます。

Controller
接続するコントローラのCORBAオブジェクトIDを指定します。
今回は、"PDcontroller"と指定します。

Control Time[s]
コントローラの実行周期を指定します。
今回は、動作パターンが0.002[s]刻なので、0.002を指定します。


fig.5: Edit Controller Settings

干渉チェックペアの設定

干渉チェックペアは、OpenHRP/Collisionタブにより編集します。
中央左側のAddボタンを押すと、Collisionタブの下側半分が操作できるようになります。
Addボタンが押せない場合は、まずモデルがロードされている事を確認して下さい。


fig.5: Edit Collision Pair

コンボボックスObject1Object2でモデルを選択し、Link1Link2で干渉チェックを行うリンクを特定します。
Linkの所で何も選ばなかった場合は、そのモデルにある全てのリンクを干渉チェックの対象とします。

この例では、ロボットモデルsampleと環境モデルlongfloorの干渉チェックを設定します。
Object1とObject2でそれぞれ、sampleとlongfloorを選択するように変更し、OKボタンを押して下さい。

実行条件の設定

OpenHRP/Simulationタブでシミュレーション時間等の設定を行います。
設定内容がWorldStateアイテムに記録されるため、まずWorldStateアイテムを生成します。


fig.6: create WorldStateItem

Total Time[s]
Sampleのコントローラは、あらかじめ生成された歩行パターンファイルを読み込んで、ロボットを駆動します。
そのパターンファイルの実行時間が13.4であるため、13.4を設定します。

Integration Step[s]
同じくパターンファイルのタイムステップが0.002[s]刻になっているため、ここでは0.002を設定します。

Loggin Step[s]
Logging Stepの変更で、結果の記録によるファイルアクセスを減らす事ができますので、シミュレーション時間を短縮できます。
ここでは、Integration Stepと同じく0.002[s]に設定します。Integration Step以下に設定した場合は、Integration Stepと同じ値とみなされます。


fig.7: Edit Collision Pair

プロジェクトの保存

ここまでに設定した各アイテムの状態は、プロジェクトファイルとして保存することができます。 メニューからFile->Save Projectを選択し保存します。


fig.10: Edit Collision Pair

その後、下図に示すダイアログが現れますので、画面構成を保存するかどうかを選択します。


fig.11: Edit Collision Pair

プロセスマネージャの設定

サンプルプロジェクトSampleRobotPD.xmlには、シミュレーション開始時に自動的にOpenHRP3/bin/unix/PDController.shを実行するための記述が追加してあります。
現時点では、この設定をGUIから行う事ができません。
従って、プロジェクト保存後、テキストエディタにて、プロジェクトを開き以下の行を追加して下さい。

<process id="PDcontroller" com="$(BIN_DIR)/PDController$(BIN_SFX)" dir="$(BIN_DIR)/" hasshutdown="true" autostart="false"/>

上記を追加後、この変更を有効にするために一度プロジェクトをLoadし直して下さい。

シミュレーションの開始

下図赤枠のシミュレーション開始ボタンを押して下さい。
このボタンを押した時点で、Item View上で選択状態にあるモデルアイテムやCollisionPairアイテムが、シミュレーション中有効になります。


fig.8: Edit Collision Pair

OpenHRP/Controllerタブで設定したコントローラが起動していなければ、自動起動を試みます。
この時Controllerへの接続に成功するとシミュレーションが開始されます。
接続に失敗した場合、
1.もう少し待つ
2.Controllerなしでシミュレーションをスタートする
3.キャンセルする
かを選択する下図のダイアログが現れます。


fig.9: Edit Collision Pair

シミュレーションの中断・終了

シミュレーション開始ボタンは、 シミュレーション実行中、中断・終了ボタンに変わります。
中断・終了ボタンを押すと、シミュレーションは一時中断し、終了してもよいかを問うダイアログが現れます。
このダイアログのOKボタンを押すと、シミュレーションは終了します。

プレイバック機能の利用

シミュレーション結果は、画面上部にある再生・スロー再生・早送り・巻戻しボタン等を押す事でプレイバックできます。
シミュレーション結果はWorldStateアイテムに記録されており、スライダの指す時刻のデータを、3DView、Graph、RobotStatといった各Viewが表示します。

グラフ機能

グラフ表示する項目は、GraphContentsアイテムに記録されます。
まずはItem View上でGraphContensアイテムを生成します。


fig.10: Create Graph Contents

次にGraphビューのSeriesボタンを押し、表示する項目を選択します。
表示項目は、シミュレーション終了後でも選択する事が可能です。
登録した内容は、プレイバック時、もしくは次回のシミュレーション時に表示される事になります。


fig.10: Create Graph Contents