choreonoid用openrtm連携プラグイン python版 チュートリアル(四足歩行ロボット)

✏️ Edit this page on GitHub

このページではRTCEditorアイテム、ComponentListアイテムの利用方法を四足歩行ロボットのシミュレータ作成を例にして解説します。



#contents

アイテム追加

ワールド、シミュレータ

まずはワールドアイテム、シミュレータアイテムを追加します。 ファイル、新規からワールドとAISTシミュレータを選択して追加してください。

この時点でアイテムツリーは以下のようになります。

 World(ワールドアイテム)
    |-AISTSimulator(AISTシミュレータ)

モデル

次に地面、四足歩行ロボットのモデルを追加します。

ファイル、読み込みからOpenHRP モデルファイルを選択後、以下のファイルを読み込んでください。

  • {Choreonoidインストールディレクトリ}/share/model/QuadrupedRobot/QuadrupedRobot.yaml
  • {Choreonoidインストールディレクトリ}/share/model/house/floor.body

すると以下のように3Dモデルが表示されます。 表示されない場合はアイテムツリー上の該当アイテムのチェックボタンをオンにしてください。



この時点でアイテムツリーは以下のようになります。

 World(ワールドアイテム)
    |-AISTSimulator(AISTシミュレータ)
    |-QuadrupedRobot(model/QuadrupedRobot/QuadrupedRobot.yaml)
    |-floor(model/house/floor.body)

RTコンポーネント

PyRTCアイテム

RTコンポーネントを追加します。 ファイル、新規からPyRTCItemを選択して追加してください。

QuadrupedRobotアイテムの下にアイテムを追加して、QuadrupedRobotIOと名前を付けてください。

この時点でアイテムツリーは以下のようになります。

 World(ワールドアイテム)
    |-AISTSimulator(AISTシミュレータ)
    |-QuadrupedRobot(model/QuadrupedRobot/QuadrupedRobot.yaml)
      |-QuadrupedRobotIO(PyRTCItem)
    |-floor(model/house/floor.body)
Pythonファイルの設定

QuadrupedRobotIOのプロパティからRTC moduleという項目を設定してください。

ファイル名にQuadrupedRobot_Choreonoid.pyを設定してください。 これで四足歩行ロボット用の入出力RTCが起動します。

ComponentListアイテム

RTCランチャーを起動します。ファイル、アイテムからComponentListItemを選択して追加してください。



次にビューの表示からComponentListを選択してください。



すると以下のウインドウが表示されます。



RTCはカテゴリ別に分類されており、タブを切り替えることでほかのカテゴリのRTCを表示できます。 Controllerのタブを開いて、以下の2つのRTCを起動します。

  • Foot_Position_Controller(四足歩行ロボット足先位置制御コンポーネント)
  • Intermittent_Crawl_Gait_Controller(四足歩行ロボット間歇クロール歩容コンポーネント)

実行(rtcd、周期実行)ボタンを押すだけで起動できます。

※本来はトリガー駆動の実行コンテキストを使用したいのですが、OpenRTM-aist C++版のバグにより実現できていません。



この時点でRTCリストビューを更新すると以下のように表示されます。



RTCEditorアイテム

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システム構築

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