[openrtm-users 01587] ExtTriggerのサンプル

Shunji Satoh shun @ is.uec.ac.jp
2011年 2月 21日 (月) 20:22:48 JST


電気通信大学大学院・佐藤と申します.

お世話になっております.

Python版の ExtTrigger のサンプルが,期待通りの動作をせず悩んでおります.た
だ,ExtTrigExecutionContext に関して私が誤解している可能性も大きと思っています.
実行環境は WindowsXP-SP3(32bit),OpenRTM-aist-1.0.0,python2.6,コンポーネントはすべて
ローカルで実行しています.

私は ExtTrigger の挙動を以下のように理解しているのですが,誤解でしょうか.ご指摘いただけれ
ば幸いです.(Open-RTM\example\Python\ExtTrigger のサンプルを試しています)
----
a.PERIODIC であれば周期的に実行されるが,
b.ExtTrigger サンプルである Connector.py は,キーボードからの入力 0/1/2 によって各コン
ポーネントの実行を制御している.具体的には「0: tick ConsoleIn component」「1: tick
ConsoleOut component」「2: tick both components」.
c.たとえば 0 の場合は,ConsoleIn の時間だけを進めるため,ConsoleIn は入力を受け付ける(例
えば999と入力)が,ConsoleOut に表示されない(999は表示されない).
d. 上記 b のキーボード入力が 1 である場合,ConsoleOut の時間が進み,その時点で 999 が表示
される.
----

しかしながら私の環境では,Connector.py へのキーボード入力が 0/1/2 のいずれであっても,同じ
挙動をします(外部トリガーによる制御ではなく,PERIODIC な実行をしているようです.)
上記 a〜d. は私の誤解でしょうか.

なおバグレポートになるかと思いますが,サンプル付属の ExtTrigger\run.py は rtm-naming.py の
呼び出しパスが適切ではないようです.そこで以下のように実行しています.
----
1.スタート⇒すべてのプログラム⇒OpenRTM-aist⇒Python⇒tools⇒Start naming service
2.コマンドプロンプトを立ち上げてディレクトリを移動したのち,以下を実行.
3.start ConsoleIn.py
4.start ConsoleOut.py
5.start Connector.py
----


以下,ExtTrigger サンプルを実行している理由について記します.
・複数のコンポーネントがあり,それぞれ compA, compB, compC とします.これらのコンポーネン
トは,とある系全体のシミュレーションをするために分割されたコンポーネントです.
・compA→compB→compC のデータの流れと,
・compB←compC のフィードバックがあります.
・compB はほかの二つに比べて,長いシミュレーション時間を要します.例えば物理的単位時間のシ
ミュレーションを行う際に,compB は CPU時間で 1分ほど要しますが,compA と compC はそれぞれ
1秒程度です.
・このような系を制御したく(同期といえますでしょうか)いろいろ調べた結果,どうやら
ExtTrigExecutionContext を使えばよいことがわかった.
・そこで使い方を勉強するために,ExtTrigger サンプルを試しているが,期待している結果が得ら
れない.


以上です.よろしくお願いします.







openrtm-users メーリングリストの案内