このページではRTCEditorアイテム、ComponentListアイテムの利用方法を四足歩行ロボットのシミュレータ作成を例にして解説します。
まずはワールドアイテム、シミュレータアイテムを追加します。 ファイル、新規からワールドとAISTシミュレータを選択して追加してください。
この時点でアイテムツリーは以下のようになります。
World(ワールドアイテム) |-AISTSimulator(AISTシミュレータ)
次に地面、四足歩行ロボットのモデルを追加します。
ファイル、読み込みからOpenHRP モデルファイルを選択後、以下のファイルを読み込んでください。
すると以下のように3Dモデルが表示されます。 表示されない場合はアイテムツリー上の該当アイテムのチェックボタンをオンにしてください。
World(ワールドアイテム) |-AISTSimulator(AISTシミュレータ) |-QuadrupedRobot(model/QuadrupedRobot/QuadrupedRobot.yaml) |-floor(model/house/floor.body)
RTコンポーネントを追加します。 ファイル、新規からPyRTCItemを選択して追加してください。
QuadrupedRobotアイテムの下にアイテムを追加して、QuadrupedRobotIOと名前を付けてください。
この時点でアイテムツリーは以下のようになります。
World(ワールドアイテム) |-AISTSimulator(AISTシミュレータ) |-QuadrupedRobot(model/QuadrupedRobot/QuadrupedRobot.yaml) |-QuadrupedRobotIO(PyRTCItem) |-floor(model/house/floor.body)
QuadrupedRobotIOのプロパティからRTC moduleという項目を設定してください。
ファイル名にQuadrupedRobot_Choreonoid.pyを設定してください。 これで四足歩行ロボット用の入出力RTCが起動します。
RTCランチャーを起動します。ファイル、アイテムからComponentListItemを選択して追加してください。
実行(rtcd、周期実行)ボタンを押すだけで起動できます。
※本来はトリガー駆動の実行コンテキストを使用したいのですが、OpenRTM-aist C++版のバグにより実現できていません。
RTCエディタを起動します。ファイル、アイテムからRTCEditorItemを選択してワールドアイテムの下に追加してください。
四足歩行ロボットの目標速度を設定するアウトポートを追加します。 右側のウインドウから以下の設定を行ってください。
ポート名 | out |
ポート | DataOutPort |
データ型 | RTC::TimedVelocity2D |
作成ボタンを押すとデータポートを作成します。
ソースコードの編集を行います。
先ほど作成したデータポートにかかわる変数名については、右側のデータポート変数名タブからコピーできます。
左側のコード編集ウインドウは各アクティビティ+α(setBody、inputFromSimulator、outputToSimulator、グローバル)で実行する処理が記述できます。
onExecute関数の処理に以下を記述してください。
self._d_out.data.vx = 0.03 self._d_out.data.va = 0 self._outOut.write() return RTC.RTC_OK
変更した内容は更新ボタンを押すと反映されます。
World(ワールドアイテム) |-AISTSimulator(AISTシミュレータ) |-QuadrupedRobot(model/QuadrupedRobot/QuadrupedRobot.yaml) |-QuadrupedRobotIO(PyRTCItem) |-floor(model/house/floor.body) |-ComponentList |-RTCEditor
RTシステムアイテム追加後、表示、ビューの表示からRTCダイアグラムを表示してください。
RTCの各ポートを以下のように接続してください。
World(ワールドアイテム) |-AISTSimulator(AISTシミュレータ) |-QuadrupedRobot(model/QuadrupedRobot/QuadrupedRobot.yaml) |-QuadrupedRobotIO(PyRTCItem) |-floor(model/house/floor.body) |-ComponentList |-RTCEditor |-RTSystem
最後にシミュレーションを開始すると四足歩行ロボットが前進します。
シミュレータ起動中に例えば以下のようにRTCEditorのonExecute関数のコードを変更して更新ボタンを押すと、シミュレーション実行中に四足歩行ロボットが前進から旋回する運動に変化することが確認できます。
self._d_out.data.vx = 0 self._d_out.data.va = 0.8 self._outOut.write() return RTC.RTC_OK