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でひな形を生成した場合にも保持されます。