PythonによるRTCの実装
Simple Wiki Based Contents Management System
ソフトウェア関連 >> OpenRTM-aist のRTC開発システム(Yarbs) >> RTCの実装 >> PythonによるRTCの実装

PythonによるRTCの実装

RTCの仕様であるYAML形式のファイルからPythonのプログラムを生成します。Pythonの実装では、DataFlowComponentを継承する中間クラス(DataFlowRTC_Base)を作成しており、このクラスを継承し、RTC仕様ファイル(YAMLファイル)を起動時に読込みポートやコンフィグレーションパラメータの定義部分を自動化しています。
このページでは、Pythonの実装コードを生成するための手順を説明します。この手順に従った具体的なサンプルコードは、下のリンクで説明していきます。

genRtcPythonによるひな形生成

まず、YarbsではPythonの実装コードを生成するために、このgenRtcPython.exeというコマンドを使用します。このコマンドは、Python3で実装されていますので、起動時にエラーが出るようであれば、環境変数PYTHON_EXEに適切なpython.exeが設定されていないと思います。
では、ワークスペースに移動後、ひな形コードを作成します。RTCの仕様を記述したYAMLファイルを rtc_spec.yaml すると下記のコマンドを実行します。
 > genRtcPython rtc_spec.yaml
これにより下のようなファイルが生成されます。(nameは sampleとします)
   sample
     +-idl
     +-scripts
       +-sample.py
       +-sample.yaml
       +-DataFlowRTC_Base.py
     +-sample.exe
     +-idlcompile.bat
     +-rtc.conf
上記はサービスポートがない場合ですが、サービスポートが設定されると idl/module_service.idl, sripts/service_impl.py が追加されます。
また、sample.yamlは、genRtcPythonへの入力と同じファイルになっています。Yarbsで生成するPythonのRTCは、起動時にこのYAMLファイルを読み込んで、ポートやコンフィグレーションパラメータの設定を行います。
idlcomple.batは、idlコンパイラの呼び出しのためのバッチファイルであり、idl/ にあるidlファイルをコンパイルします。独自変数定義やサービスポートの定義がなければ使うことはありません。

コアロジックコードの実装

ひな形の生成が終われば、RTCのコアロジックを実装していきます。上記の出力の場合には、sample.pyのみを修正することになります。
修正は、下記のようにC++の場合と同じコメントタグに囲まれた部分に追記します。
 #---< OnInitialize
 #--->
ここで囲まれた部分は、再度genRtcPythonでひな形を生成した場合にも保持されます。