Choreonoid用OpenRTM連携プラグイン Python版 マニュアル

Choreonoid OpenRTM連携プラグイン Python版はChoreonoid上のロボットとPythonで開発したRTCを連携させるためのプラグインです。 主に以下の機能が利用可能です。

Pythonにより効率的にChoreonoid上のシミュレータと連携するRTCを開発可能

Choreonoidに標準で付属しているOpenRTM連携プラグインはC++によるRTCの開発ができるようになっていますが、ビルド環境の構築が難しく、またコンパイルに時間を要するため効率的ではないという問題がありました。 そこでビルド済みのChoreonoid+OpenRTM連携プラグイン Python版を配布することで、ダウンロードしてすぐにChoreonoid上のシミュレータと連携するRTCが開発可能です。


cnoid-rtm-py1.png

Pythonコードの動的編集ツールによる高速な開発

本プラグインにはChoreonoid上で動作するPythonエディタが付属しています。


cnoid-rtm-py2-2.png

Pythonエディタ上でコードを編集して保存するだけで、即座にRTCに変更が反映されます。 またデータポート、サービスポート、コンフィギュレーションパラメータの設定も可能になっており、ChoreonoidとPythonのみでRTCの開発、動作確認を可能にしています。


cnoid-rtm-py4.png

RTCランチャー

RTCを一覧に表示してボタン一つで起動化可能なランチャーがChoreonoid上で動作します。 本プラグインにはサンプルコンポーネントとして73種類のRTCが付属しており、Choreonoid上で様々なRTシステムを開発できます。


cnoid-rtm-py3.png

RTCの登録手順

Choreonoidインストールディレクトリのshare/rtc以下に適当な名前のフォルダ(例:TestRTC)を作成します。

その下にRTC.xmlとRTCを実行するためのPythonファイル、もしくは実行ファイル、dllを置くと完了です。 Pythonファイル、実行ファイル、dllについては、TestRTCフォルダ直下でなくとも検索で見つけることができます。

※C++のRTCを登録する場合、本プラグインがVisual Studio 2015(64bit)で開発しているため、dllは同じVisual Studioでビルドしたものでないとロードできません。実行ファイルからの起動はできますが、その場合は必要なdll(RTC120_vc12.dll等)のフォルダをPATHに追加する必要があります。

 choreonoid
      |-share
            |-rtc
                |-TestRTC
                       |-RTC.xml
                       |-TestRTC.py(もしくはTestRTCComp.exe、TestRTC.dll)

インストール手順、チュートリアル

インストール手順やチュートリアルは以下のページに記載してあります。

Choreonoid用OpenRTM連携プラグイン Python版 インストール手順

動作環境

動作環境は以下の通りです。

  • Windows 8.1
  • Windows 10
  • Ubuntu 14.04
  • Ubuntu 16.04

Windowsの場合はビルド済みバイナリを配布してあります。

インストール手順(Windows)

Python

Python 2.7(64bit)をインストールしてください。

Choreonoid

ビルド済みChoreonoid+OpenRTM連携プラグインは以下からダウンロードできます。

このファイルをLhaplus等で適当な場所に展開すればインストール完了です。

ソースコードからビルドする場合

何らかの事情によりソースコードからビルドせざる得ない場合は、以下のページの手順でビルドしてください。

インストール手順(Ubuntu)

ダウンロード

Choreonoidのインストール手順についてはChoreonoid ホームページに詳しく記載されているようなのですが、一応こちらでも説明します。

Choreonoidのソースコードですが、以下の理由により独自の変更を加えてあります。

  • OpenRTM連携プラグインのRTシステムエディタ上でRTCをダブルクリックした際に専用Pythonエディタを開く機能を追加するための変更
  • 2017年7月時点でWindowsで動作しなかったため一部変更
  • Pythonでライトを操作するための関数追加

このため、オリジナルのChoreonoidではなくフォークしたものをクローンしてください。

 git clone https://github.com/Nobu19800/choreonoid.git

gitをインストールしていない場合は以下のコマンドを入力してください。

 sudo apt-get install git

インストール

依存ライブラリ

Choreonoidには必要ライブラリをインストールするスクリプトが付属しているようなので、このスクリプトを起動してください。

 cd choreonoid
 sh misc/script/install-requisites-ubuntu-14.04.sh

OpenRTM-aist

 wget http://svn.openrtm.org/OpenRTM-aist/tags/RELEASE_1_1_2/OpenRTM-aist/build/pkg_install_ubuntu.sh
sudo sh pkg_install_ubuntu.sh

OpenRTM-aist-Python

以下のコマンドを入力してください。

 wget http://svn.openrtm.org/OpenRTM-aist-Python/tags/RELEASE_1_1_2/OpenRTM-aist-Python/installer/install_scripts/pkg_install_python_ubuntu.sh
 sudo sh pkg_install_python_ubuntu.sh

Choreonoid

 cd sample
 git clone https://github.com/Nobu19800/OpenRTMPythonPlugin.git
 cd ..
 mkdir build
 cd build
 cmake .. -DENABLE_PYTHON=ON -DBUILD_PYTHON_PLUGIN=ON -DBUILD_OPENRTM_PYTHON_PLUGIN=ON
 make
 sudo make install

cmakeコマンドのオプションを変更してビルドしてください。

 cmake .. -DENABLE_PYTHON=ON -DBUILD_PYTHON_PLUGIN=ON -DBUILD_OPENRTM_PYTHON_PLUGIN=ON -DENABLE_CORBA=ON -DBUILD_CORBA_PLUGIN=ON -DBUILD_OPENRTM_PLUGIN=ON

動作確認に必要なソフトウェアのインストール

動作確認のためにゲームパッドのRTCを使用しますが、このRTCの動作にはPySDL2がインストールされている必要があります。

動作確認用のRTCに必要というだけなので、次ページの動作確認を行わない場合はインストールの必要はありません。

以下のコマンドを入力してください。

 wget https://bitbucket.org/marcusva/py-sdl2/downloads/PySDL2-0.9.5.tar.gz
 tar xf PySDL2-0.9.5.tar.gz
 cd PySDL2-0.9.5
 sudo python setup.py install

さらにSDL2のインストールが必要なので、以下のコマンドでインストールしてください。

 sudo apt-get install libsdl2-2.0-0 libsdl2-image-2.0-0

これで準備完了です。

Choreonoid用OpenRTM連携プラグイン Python版 チュートリアル(TankJoystick)

このページではChoreonoid OpenRTM連携プラグイン Python版でTankモデルをゲームパッドで操作するまでの手順を説明します。 使用するモデル、作成するRTCはChoreonoid公式ページのチュートリアルとほぼ同じです。


choreonoid-openrtm-py60.png

RTC作成

この章ではシミュレータ上のアクチュエータ、センサなどの入出力を行うRTCの開発手順を説明します。

RTC Builder起動

まずはRTC Builderでソースコードのひな型を作成します。 RTC Builder利用のために、OpenRTM-aistをインストールしてください。

インストールが完了したらRTC Builderを起動してひな型を作成してください。 Windows 8.1の場合は「スタート」>「アプリビュー(右下矢印)」>「OpenRTM-aist 2.0.1」>「OpenRTP」をクリックすると起動できます。

作成手順は以下が参考になります。

RTCひな型作成

作成するRTCの仕様は以下のようになっています。言語はPythonを選択してください。


8b893cd4-2b7f-11e7-958c-8ba2052c448d.png

コンポーネント名称 TankIoRTC_Py
InPort
ポート名 velocities
型 TimedVelocity2D
説明 車体の目標速度
InPort
ポート名 torques
型 TimedDoubleSeq
説明 砲塔部分の関節トルク
InPort
ポート名 lightSwitch
型 TimedBooleanSeq
説明 ライトのオンオフ
OutPort
ポート名 angles
型 PanTiltAngles
説明 砲塔部分の関節角度
言語
Python

ソースコード編集

生成したソースコードにRTCのモジュール名のクラス(TankIoRTC_Pyならばclass TankIoRTC_Py)が記述されているので、そのクラスに以下の関数を追加してください。

関数名 引数 内容
setBody body Bodyオブジェクトを設定する関数
inputFromSimulator センサの計測値などをアウトポートから出力する処理等を記述する関数。シミュレーションステップ後に実行される
outputToSimulator アクチュエータのトルクなどをインポートから入力する処理等を記述する関数。シミュレーションステップ前に実行される

具体的には以下のソースコードを記載します。

 class TankIoRTC_Py(OpenRTM_aist.DataFlowComponentBase):
     (省略)
 
     #ボディオブジェクト設定関数
     def setBody(self, body):
         
         self.ioBody = body
         
         #Linkオブジェクト取得
         self.cannonY = self.ioBody.link("CANNON_Y")
         self.cannonP = self.ioBody.link("CANNON_P")
         self.crawlerL = self.ioBody.link("CRAWLER_TRACK_L")
         self.crawlerR = self.ioBody.link("CRAWLER_TRACK_R")
         
         #Lightオブジェクト取得
         self.light = self.ioBody.getLight("MainLight")
         
         
     #センサの計測値などをアウトポートから出力する処理等を記述する関数
     #シミュレーションステップ後に実行される
     def inputFromSimulator(self):
         if self.ioBody:
             #砲台の角度取得、格納
             self._d_angles.pan = self.cannonY.q
             self._d_angles.tilt = self.cannonP.q
 
             #砲台の角度出力
             OpenRTM_aist.setTimestamp(self._d_angles)
             self._anglesOut.write()
 
 
     #アクチュエータのトルクなどをインポートから入力する処理等を記述する関数
     #シミュレーションステップ前に実行される
     def outputToSimulator(self):
         if self.ioBody:
             #砲台のトルク入力
             if self._torquesIn.isNew():
                 data = self._torquesIn.read()
                 self.cannonY.u = data.data[0]
                 self.cannonP.u = data.data[1]
             #車体の速度入力
             if self._velocitiesIn.isNew():
                 data = self._velocitiesIn.read()
                 vx = data.data.vx
                 va = data.data.va
                 
                 rms = (vx + va*self._wheel_distance[0])/self._wheel_radius[0]
                 lms = (vx - va*self._wheel_distance[0])/self._wheel_radius[0]
                 
                 #クローラーの速度入力
                 self.crawlerL.dq = lms
                 self.crawlerR.dq = rms
             #ライトのオンオフ入力
             if self._lightSwitchIn.isNew():
                 data = self._lightSwitchIn.read()
                 
                 self.light.on(data.data[0])
                 self.light.notifyStateChange()
 
 
まず、setBody関数内で制御対象のLinkオブジェクト、Lightオブジェクトを取得しています。 Link、Lightオブジェクトは名前で取得できます。

Link名はモデルに対応するアイテムを選択後、左下のビューから""リンク""タブを表示すれば確認できます。


choreonoid-openrtm-py33.png

Light名の確認方法は分からないのでChoreonoid公式サイトを確認してください。

     def setBody(self, body):
         self.ioBody = body
 
         self.cannonY = self.ioBody.link("CANNON_Y")
         
         (省略)
         
         self.light = self.ioBody.getLight("MainLight")

関節の角度の取得q変数により取得できます。

 self._d_angles.pan = self.cannonY.q

関節の速度の入力はdq、トルクの入力はu変数に格納することでシミュレータに反映できます。

 self.crawlerL.dq = lms

 self.cannonY.u = data.data[0]

ライトのオンオフはon変数にbool変数を格納します。

 self.light.on =  data.data[0]

RTシステム作成

Choreonoid起動

Windows

Windowsの場合はChoreonoidを展開したフォルダのbin/chorenoid.exeをダブルクリックしてください。

Ubuntu

Ubuntuの場合はコマンドからchoreonoidと入力してください。

アイテム追加

ワールド、シミュレータ

まずはワールドアイテム、シミュレータアイテムを追加します。 ファイル、新規からワールドとAISTシミュレータを選択して追加してください。 ※表示されるアイテムの順番が変わることがあるため、この画像と違う画面になる可能性があります。


choreonoid-openrtm-py31.png

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

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

アイテムツリーの概要、アイテムの移動方法は以下のページを参考にしてください。

モデル

次に環境、タンクのモデルを追加します。

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

  • {Choreonoidインストールディレクトリ}/share/model/tank/tank.wrl
  • {Choreonoidインストールディレクトリ}/share/model/Labo1/Labo1.wrl


cf26b56c-2b79-11e7-9cb9-7c3844c4508b.png

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

 World(ワールドアイテム)
   |-AISTSimulator(AISTシミュレータ)
   |-Tank(model/tank/tank.wrl)
   |-Labo1(model/Labo1/Labo1.wrl)

RTコンポーネント

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


choreonoid-openrtm-py32.png

Tankアイテムの下に3つのアイテムを追加して、TankIO、Controller、Joystickと名前を付けてください。

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

 World(ワールドアイテム)
   |-AISTSimulator(AISTシミュレータ)
   |-Tank(model/tank/tank.wrl)
       |-TankIO(PyRTC)
       |-Controller(PyRTC)
       |-Joystick(PyRTC)
   |-Labo1(model/Labo1/Labo1.wrl)

Pythonファイルの設定

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


2c301ca2-2b7b-11e7-8ca8-25a7a17a73c1.png

各アイテムで以下のファイルを設定します。

アイテム名 ファイル名
TankIO TankIoRTC_Py.py
Controller TankJoystickControllerRTC_Py.py
Joystick JoystickPySDL2.py

Pythonファイルを設定するとRTCが起動します。 ※本プラグインではChoreonoidに付属しているC++版OpenRTMプラグインのようにControllerRTC、BodyIoRTC、RTCという区別はありません。RTCのソースコードにシミュレータ上のロボットの制御、センサ値の取得等の処理を書けばそれでBodyIoRTCと同じ動作ができます。

RTシステム構築

RTシステムを追加します。 ファイル、新規からRTシステムを選択して追加してください。


cnoid-rtm-py6.png

表示、ビューの表示から、RTCダイアグラムを表示してください。

'RTCリストが表示されていない場合は同様に表示してください。


cnoid-rtm-py7.png

RTCダイアグラム表示後、左下のRTCリストからドラッグアンドドロップすることで、RTCダイアグラム上にRTCを表示できます。


cnoid-rtm-py8.png

RTCダイアグラム上で以下のように接続してください。


5d02cf18-2b7c-11e7-8221-3e60171d65fd.png

シミュレーション実行

シミュレーションを開始する前に、時間分解能を1000fpsに設定してください。 これでシミュレーションを開始するとゲームパッドのジョイスティックでシミュレータ上のクローラー、アームの操作、ボタンでライトのオンオフを操作できるようになります。

RTCの仕様

基本はChoreonoid付属のOpenRTMプラグインのサンプルと同じですが、一部データ型の変更、コンフィギュレーションパラメータの追加を行っています。

TankJoystickControllerRTC_Py

Tankロボットの制御を行うためのRTCです。


8e0862be-2b7f-11e7-9a44-b553218fe3c9.png

コンポーネント名称 TankJoystickControllerRTC_Py
InPort
ポート名 angles
型 PanTiltAngles
説明 砲塔部分の関節角度
InPort
ポート名 axes_1
型 TimedVector2D
説明 右アナログスティックの状態。傾けると0.0~1.0の範囲で値を出力する。傾けた方向で右が正、左が負、下が正、上が負の値になります。
InPort
ポート名 axes_2
型 TimedVector2D
説明 左アナログスティックの状態
InPort
ポート名 buttons
型 TimedBooleanSeq
説明 ボタンのオンオフ
OutPort
ポート名 velocities
型 TimedVelocity2D
説明 車体の目標速度
OutPort
ポート名 torques
型 TimedDoubleSeq
説明 砲塔部分の関節トルク
OutPort
ポート名 lightSwitch
型 TimedBooleanSeq
説明 ライトのオンオフ
Configuration
パラメーター名 timeStep
型 double
デフォルト値 0.001
説明 シミュレーションのステップ時間
Configuration
パラメーター名 KP
型 double
デフォルト値 200.0
説明 比例ゲイン
Configuration
パラメーター名 KD
型 double
デフォルト値 50.0
説明 微分ゲイン

JoystickPySDL2

ゲームパッドのアナログスティック、ボタン等の状態を出力するRTCです。


8fa43300-2b7f-11e7-9fed-0deb4988cfdd.png

コンポーネント名称 TankJoystickControllerRTC_Py
OutPort
ポート名 axes_1
型 TimedVector2D
説明 右アナログスティックの状態。傾けると0.0~1.0の範囲で値を出力する。傾けた方向で右が正、左が負、下が正、上が負の値になります。
OutPort
ポート名 axes_2
型 TimedVector2D
説明 左アナログスティックの状態
OutPort
ポート名 buttons
型 TimedBooleanSeq
説明 ボタンのオンオフ
OutPort
ポート名 hats
型 TimedBooleanSeq
説明 十字キーの状態
OutPort
ポート名 balls
型 TimedVector2D
説明 ジョイボールの移動量
Configuration
パラメーター名 index
型 int
デフォルト値 0
説明 ゲームパッドのID

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

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


choreonoid-openrtm-py345.png

アイテム追加

ワールド、シミュレータ

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

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

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

モデル

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

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

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

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


cnoid-rtm-py14.png

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

 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を選択して追加してください。


cnoid-rtm-py9.png

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


choreonoid-openrtm-py30.png

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


cnoid-rtm-py10.png

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

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

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

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


cnoid-rtm-py48.png

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


cnoid-rtm-py12.png

RTCEditorアイテム

RTCエディタを起動します。ファイル、アイテムからRTCEditorItemを選択してワールドアイテムの下に追加してください。


cnoid-rtm-py13.png

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


cnoid-rtm-py2-2.png

データポート追加

四足歩行ロボットの目標速度を設定するアウトポートを追加します。 右側のウインドウから以下の設定を行ってください。

ポート名 out
ポート DataOutPort
データ型 RTC::TimedVelocity2D

作成ボタンを押すとデータポートを作成します。


cnoid-rtm-py15.png

コード編集

ソースコードの編集を行います。

データポート変数名について

先ほど作成したデータポートにかかわる変数名については、右側のデータポート変数名タブからコピーできます。


cnoid-rtm-py16.png

コード記述

左側のコード編集ウインドウは各アクティビティ+α(setBody、inputFromSimulator、outputToSimulator、グローバル)で実行する処理が記述できます。

onExecute関数の処理に以下を記述してください。

 self._d_out.data.vx = 0.03
 self._d_out.data.va = 0
 self._outOut.write()
 
 return RTC.RTC_OK

変更した内容は更新ボタンを押すと反映されます。


cnoid-rtm-py17.png

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

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

RTシステム構築

RTシステムアイテム追加後、表示、ビューの表示からRTCダイアグラムを表示してください。

RTCの各ポートを以下のように接続してください。


cnoid-rtm-py18.png

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

 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

Choreonoid用OpenRTM連携プラグイン Python版 トラブルシューティング

Choreonoidが起動しない

以下の原因が考えられます。

Pythonの問題

まずPython 2.7の64bit版がインストールされていることを確認してください。

それでも起動しない場合は、PYTHONHOMEをPythonインストールディレクトリに設定してください。

 set PYTHONHOME=C:\python27

これで動かない場合は下のコメント欄でお知らせください。

PCの対応しているOpenGLバージョンの問題

Choreonoid内部のライブラリの問題でOpenGL 1.1にしか対応していないPCでは起動できません。 以下のサイトでOpenGLバージョンチェックプログラムを入手して確認してください。

OpenRTMプラグインがロードできない

現在、調査中です。

どのプラグインもロードできない

パスに日本語が含まれているとロードできません。

これはChoreonoid自体の問題なので、こちらでは対処しません。

RTCEditorアイテム追加時にプロセスが落ちる

この問題についても調査中です。

Choreonoid用OpenRTM連携プラグイン Python版(備考)

Choreonoid OpenRTM連携プラグインについて

Choreonoid標準で付属しているOpenRTM連携プラグインには以下の機能がありません。

  • コンフィギュレーションパラメータ設定機能
  • コネクタ接続時のデータ型判別機能

これらの機能は近いうちに追加される予定らしいですが、現状ではコンフィギュレーションパラメータの設定はRTShell等で外部から実行してください。

コネクタ接続時にデータ型が違っても接続するため注意が必要です。

既知のバグ

RTCEditorでPythonモジュールが読み込めない環境が存在するらしいです。 原因は調査中です。

未実装の機能

ComponentListアイテムで起動したRTCをシミュレータがtickで実行する機能は現在のところ未実装です。

使用したライブラリ

使用したライブラリは以下の通りです。

  • Choreonoid
  • boost-1.6.1
  • Eigen
  • omniORB-4.2.2
  • OpenRTM-aist-1.2.0
  • pybind11
  • Python-2.7.13
  • Qt 5.8
  • yaml-0.1.7

また、サンプルコンポーネントに以下のライブラリを使用しています。

  • ODE-0.13
  • PySDL2
  • SDL2

Choreonoidに関するメモ

  • アイテムの順番が環境によって違う事がある
  • プラグインの日本語化にはpoフォルダの中に言語ファイルja.poを用意する。
     Pluginルートディレクトリ
        |-po
            |-ja.po

ja.poの中身には以下のように翻訳前と翻訳後の文字を羅列する。

 msgid "RTC directory"
 msgstr "RTCディレクトリ"

これで自動的にPOファイルをMOファイルにコンパイルするはずですが、Choreonoidはプラグイン名に対応するファイルをロードするため、プラグイン名は正しく設定する必要がある。