Download
latest Releases : 2.0.0-RELESE
2.0.0-RELESE | Download page |
Number of Projects
RT-Component | 153.5 |
RT-Middleware | 35 |
Tools | 22 |
Documentation | 2 |
Choreonoid
Motion editor/Dynamics simulator
OpenHRP3
Dynamics simulator
OpenRTP
Integrated Development Platform
AIST RTC collection
RT-Components collection by AIST
TORK
Tokyo Opensource Robotics Association
DAQ-Middleware
Middleware for DAQ (Data Aquisition) by KEK
はじめに
Choreonoidはオープンソースのロボット用シミュレーションソフトウェアです。 拡張性が高く、物理エンジン、通信機能、スクリプティング機能、制御アルゴリズム等をC++プラグインとして追加できます。
このページでは、Choreonoidシミュレータ上の移動ロボットの入出力を行うRTCの作成手順を説明します。
Choreonoidの起動
講習会の実習の場合はUSBメモリ等で資料を配布しているため、USBメモリ内のchoreonoidフォルダ内のchoreonoid.batをダブルクリックして起動してください。
アイテムの追加
Choreonoid上で以下のアイテムを追加してシミュレーション環境を構築します。
ワールド追加
Choreonoidで仮想世界を表現するワールドアイテムを追加します。 ボディモデル等の各アイテムはワールドアイテムと関連付けする必要があります。
「ファイル」->「新規」->「ワールド」をクリックしてWorldを追加してください。
名前は変更せずに生成します。
ワールドアイテムが追加されると、アイテムビューにWorldが表示されます。
シミュレータ追加
Choreonoidは複数のプラグインから使用する物理エンジンを選択することができます。 Choreonoid本体でサポートしているプラグインとしては、AISTシミュレータ、ODE, Bullet, PhysXが使用できます。
今回はAISTシミュレータを追加するため、「ファイル」->「新規」->「AISTシミュレータ」をクリックしてください。
名前は変更せずに生成します。
AISTシミュレータアイテムが追加されると、アイテムビューにAISTSimulatorが表示されます。
地面追加
地面を表現するボディアイテムを追加します。 「ファイル」->「読み込み」->「ボディ」をクリックしてください。
「ボディ読み込み」の画面でfloor.bodyを選択します。 左側のshareをクリックして、share/model/misc/floor.bodyのファイルを選択してください。
アイテムが追加されると、アイテムビューにFloorが表示されます。
Raspberry Piマウス追加
Raspberry Piマウスを表現するボディアイテムを追加します。 先ほどと同じ手順で「ファイル」->「読み込み」->「ボディ」をクリックしてください。
「ボディ読み込み」の画面でRaspberryPiMouse.bodyを選択します。 左側のshareをクリックして、share/model/RaspberryPiMouse/RaspberryPiMouse.bodyのファイルを選択してください。
アイテムが追加されると、アイテムビューにRaspberryPiMouseが表示されます。
また、シーンビューにRaspberryPiマウスの3Dモデルが表示されます。
RTSystem追加
Choreonoid上でRTSystemEditorの一部機能を使用するためのRTSystemアイテムを追加します。 「ファイル」->「新規」->「RTSystem」をクリックしてください。名前の変更は不要です。
アイテムが追加されると、アイテムビューにRTSystemが表示されます。
ネームサーバー、システムエディタ表示
この時点でChoreonoid上にネームサーバー、システムエディタは表示されていません。
まずネームサーバーを表示するには、「表示」->「ビューの表示」->「RTC List」をクリックします。
これでプロパティ、リンクプロパティの右にRTC Listタブが表示されます。
システムエディタを表示するには、「表示」->「ビューの表示」->「RTC Diagram」をクリックします。
これでシーンの右にRTC Diagramタブが表示されます。
RobotControllerコンポーネント追加
以下のページで作成したRobotControllerコンポーネントをシミュレータで利用可能にします。
RTCを表現するRTCアイテムを追加してください。
「ファイル」->「新規」->「RTC」をクリックします。
名前をRobotControllerに変更します。
アイテムが追加されると、アイテムビューにRobotControllerが表示されます。
RobotControllerコンポーネントの設定
次にRobotControllerComp.exeとRobotControllerアイテムを関連付けます。 アイテムビューからRobotControllerを選択して、プロパティからRTC moduleを設定します。
「ファイルを選択」の画面でRobotControllerComp.exeを選択します。 初期の状態だと拡張子dllのファイルしか表示しないため、ファイルの種類を全てのファイル (*) に設定してからファイルを選択してください。
RaspberryPiMouseIoコンポーネント追加
PythonのRTCをChoreonoid上で起動するため、PyRTCアイテムを追加します。
「ファイル」->「新規」->「PyRTC」をクリックします。
名前をRaspberryPiMouseIoに変更します。
アイテムが追加されると、アイテムビューにRaspberryPiMouseIoが表示されます。
RaspberryPiMouseIoコンポーネント作成
ここからはRTC Builderで作業します。
以下の仕様のRTCを作成してください。
RaspberryPiMouseIo.pyの編集
コード生成すると、RaspberryPiMouseIo.pyが作成されるのでこのファイルをVisual Studio CodeやIDLEなどで編集します。
RaspberryPiMouseIoクラスにsetBody、outputToSimulator、inputFromSimulatorのメンバ関数を追加します。
setBody関数はRTC側でChoreonoidのボディオブジェクトを取得する関数です。 取得したBodyオブジェクトからLinkオブジェクトを取得することで、対象のJointの入出力ができます。
outputToSimulator関数は、シミュレータ上のオブジェクトから取得したデータをOutPortから出力する処理を行う関数です。
inputFromSimulator関数は、InPortの入力データをシミュレータ上のオブジェクトに入力する処理を行う関数です。
各関数は、シミュレーション実行時に以下の図のような順序で呼ばれます。
RaspberryPiMouseIo.pyに以下のコードを追加してください。 Pythonなので、インデントには注意してください。「def ~」を「# def onRateChanged~」のインデントに合わせる必要があります。
RaspberryPiMouseIoコンポーネントの設定
Choreonoidでの作業に戻ります。 アイテムビューからRaspberryPiMouseIoを選択して、プロパティからRTC Moduleを設定します。
「ファイルを選択」の画面で先ほど編集したRaspberryPiMouseIo.pyを選択します。
※RaspberryPiMouseIo.pyを更新した場合は、再度この作業を行う事で再読み込みしてください。
アイテムの位置関係を確認
アイテムビューで、全てのアイテムはワールドアイテムの子アイテムとして配置する必要があります。 また、RaspberryPiMouseIoはRaspberryPiMouseの子アイテムとして配置します。
位置関係が違う場合はドラッグアンドドロップして移動してください。
ポート接続
起動したRTCのポートを接続します。
この時点でRobotController0とRaspberryPiMouseIo0が起動していますが、RTC Listに表示が無い場合は「Update」ボタンを押してください。
RTC ListからRTCをRTC Diagramにドラッグアンドドロップして、以下のポートを接続してください。
RobotControllerコンポーネントのアクティブ化
RTCアイテムにexeファイルを設定した場合はRTCを自動でアクティブ化しないため、RTC Diagram上でRobotController0を右クリックして「Activate」を選択してください。 ※RaspberryPiMouseIo0はシミュレーションを開始すると自動的にアクティブ状態になるため操作の必要はありません。
シミュレーション開始
「初期位置からのシミュレーション開始」ボタンを押すとシミュレーションを開始します。
シーンタブに切り替えるとシミュレーションを3DCGで表示します。
コンフィギュレーションパラメータの編集
Choreonoid OpenRTMプラグインにはコンフィギュレーションパラメータ編集機能がないため、RTSystemEditorで作業します。
ネームサービスビューでRobotControllerを選択して、コンフィギュレーションビューから「編集」ボタンを押して、コンフィギュレーションパラメータを変更してみてください。
Choreonoidで表示したRaspberry Piマウスが移動しているか確認すれば完了です。
ネームサービスビューにlocalhostと表示されていない場合については、以下のようにネームサービス接続ボタンを押して、localhostのネームサーバーに接続してください。