ここでは、RtcHandle(元産総研 末廣さん作成)を利用し、RTCの起動から各DataPort/ServicePortの自動接続、Configurationパラメータの初期設定、RTCのActivate化までを自動で一括処理させるPythonスクリプトの使い方を解説します。複数のスクリプトを用意していますので、用途にあわせて選択/編集願います。
このツールを使うことで、各RTCのコマンドラインからの起動や、RtcLink/RtSystemEditorなどのGUIツールを利用せずとも、同様にOpenHRP3によるシミュレーションを行うための準備を整えることができます。
このツールはまだ未完の部分がありますので、RtcLink/RtSystemEditorなどを用いた通常の起動方法以外の、あくまで補助ツールの位置づけでご利用頂けるとよろしいかと思います。
また、このページでは、起動方法のページで操作に慣れている方を対象に、詳細は省きながら記述していますので、ご了承ください。
(*)OpenINVENT-3.0.0までのRtcHandleでは動作しません、産総研の松坂さんによるOpenRTM-1.0.0化非公式パッチを適用し、プラスαの改良を加えたものをOpenINVENT-4.0.0のパッケージ内に入れていますので、こちらをご利用ください。また環境構築手順も異なりますのでご注意ください。
まず、OpenINVENTのパッケージを解凍したディレクトリのパスが"~/.bashrc"等に環境変数"OPENINVENTHOME"に設定されていることを前提条件とします。
RtcHandleはPythonで書かれているため、Python版のOpenRTMが必要になります。)
OpenRTMのインストールページを参考にしながら、Python版のOpenRTMをインストールします。環境変数PYTHONPATHの設定も忘れずに行います。
独自型のDataPortを利用している場合は、RtcHandleで認識させるためには、それらを定義したIDLファイルをコンパイルし、Python版RTMのモジュール群に追加する必要があります。
今回、OpenINVENTでは、センサ関連のIDLと、速度指令のIDLが該当します。「$OPENINVENTHOME/Script/RtcHandle/」内に「OpenINVENT.idl」がパッケージに含まれているので、以下の処理を行います。
Python版OpenRTMを解凍したディレクトリ内の"OpenRTM-aist-Python-1.0.0/OpenRTM_aist/RTM_IDL"内にコピーし、同ディレクトリ内にて、
$ omniidl -bpython OpenINVENT.idl
を実行する。その後、"python setup.py build","python setup.py install"にてコンパイルし直す。
"/usr/lib/python2.?/site-packages/OpenRTM_aist/RTM_IDL"内でomniidlでコンパイルが必要。
$ omniidl -bpython OpenINVENT.idl
これにて、Python版の"RTC"というモジュールに独自型定義の情報も追加され,利用可能となる。
GrxUI,InventGUIの両プラグインを事前にEclipseからマニュアル起動させておく。(スクリプトでは自動起動させていないため)
「$OPENINVENTHOME/Script/RtcHandle/」ディレクトリに移動した後、以下のようにコマンド入力する。
$ python EnvSampleMAP-RH2_withObstacleAndBumpSensor.py
この時点で、各RTCのポートの接続とConfiguration値の初期設定が終了しINACTIVE状態に留まっているはずである。
[Input the command] All Activate[a] ? or All Deactivate[d] ? or Finish[f] ? (enter [a]/[d]/[f]):
上記のようなメッセージがコンソールに出ている。ここで、"a"を入力すれば、すべてのRTCをAcitivateさせ、"d"を入力すればDeactivateさせる。また、"f"を入力すれば、すべてのRTCをDeactivateさせて、スクリプトの処理を終了する。各RTCが起動している端末は手動でctl+cなどで終了させる必要がある。
以降、シミュレーションの開始から終了までの流れと、Activate-Deactivateで何度も繰り返す手順は起動方法のページと同じです。