シミュレーション時間に同期して周期実行されるRTコンポーネントの作成法

周期実行タイプのRTコンポーネントをシミュレーション時間に同期して実行されるようにする方法を説明します。
サンプルは、(OpenHRPをインストールしたディレクトリ)/share/OpenHRP-3.1/sample/example/simulationECにあります。

実行コンテキストの登録

OpenHRPにはシミュレーション時間に同期してRTコンポーネントの周期実行を実現するための実行コンテキストが含まれています。この実行コンテキストは以下の場所に収録されています。

(OpenHRPをインストールしたディレクトリ)/lib/SimulationEC.so

Windows版の場合は以下の場所です。

(OpenHRPをインストールしたディレクトリ)/bin/SimulationEC.dll

rtc.confの変更

RTコンポーネントが使用するコンフィギュレーションファイルに以下の行を追加します。1行目はシミュレーション用実行コンテキストを使用することを宣言し、以下の行は指定したディレクトリからSimulationEC.soをロードすることを設定します。

exec_cxt.periodic.type: SimulationEC
manager.modules.load_path: (OpenHRPをインストールしたディレクトリ)/lib
manager.modules.preload: SimulationEC.so

サンプルの実行

  1. GrxUIを起動し、SimulationアイテムとWorld Stateアイテムを作成します。
  2. SampleSimulationECCompを起動します。
  3. RT System Editor を使用して SampleSimulationECComp0 をActivateします。
  4. シミュレーションを開始します。
  5. SampleSimulationECCompの起動画面に onExecute と周期的に表示されれば、成功です。

注意事項

  • このシミュレーション用の実行コンテキストは生成時にSimulationアイテムへの登録処理を実行しますので、この実行コンテキストを使用するRTコンポーネントは、必ずSimulationアイテム生成後に起動して下さい。
  • 周期実行の時刻になるとRTコンポーネントの処理が開始され、その処理が終了するまでシミュレーションの処理は待ち状態に入ります。すなわち、RTコンポーネントの処理がどんなに長時間かかるものであってもシミュレーション世界では一瞬で終わることになります。従ってRTコンポーネントの実行周期時間にはRTコンポーネントの処理時間よりも必ず長い時間を設定して下さい。