--[RtcHandleを用いたスクリプトによる起動方法]--

0. はじめに

ここでは、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のパッケージ内に入れていますので、こちらをご利用ください。また環境構築手順も異なりますのでご注意ください。


1. 環境構築

1-0. 環境変数"OPENINVENTHOME"の設定

まず、OpenINVENTのパッケージを解凍したディレクトリのパスが"~/.bashrc"等に環境変数"OPENINVENTHOME"に設定されていることを前提条件とします。

1-1. OpenRTM-aist-Python-1.0.0-RC1のインストール

RtcHandleはPythonで書かれているため、Python版のOpenRTMが必要になります。)

OpenRTMのインストールページを参考にしながら、Python版のOpenRTMをインストールします。環境変数PYTHONPATHの設定も忘れずに行います。

1-2. 独自型のDataPortを利用する場合のIDLコンパイル

独自型のDataPortを利用している場合は、RtcHandleで認識させるためには、それらを定義したIDLファイルをコンパイルし、Python版RTMのモジュール群に追加する必要があります。

今回、OpenINVENTでは、センサ関連のIDLと、速度指令のIDLが該当します。「$OPENINVENTHOME/Script/RtcHandle/」内に「OpenINVENT.idl」がパッケージに含まれているので、以下の処理を行います。

これにて、Python版の"RTC"というモジュールに独自型定義の情報も追加され,利用可能となる。


2. 事前準備作業

GrxUI,InventGUIの両プラグインを事前にEclipseからマニュアル起動させておく。(スクリプトでは自動起動させていないため)


3. スクリプトの実行

「$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で何度も繰り返す手順は起動方法のページと同じです。