[openrtm-users 01589] Re: ExtTriggerのサンプル

Shunji Satoh shun @ is.uec.ac.jp
2011年 2月 22日 (火) 18:03:24 JST


栗原様,みなさま

電通大院・佐藤です.
早速のご返信ならびにスクリプトの添付,誠にありがとうございます.

結果から報告しますと,頂いた ExtTrigExecutionContext.py で動作することを確認しました.あり
がとうございます.ただ,一点質問があります.

ExtTrig のサンプルを実行すると,私が想定してる挙動と異なる動作をします.私の誤解である可能
性が大きいのですが,具体的には以下の通りです.
----
1.Connector.py の画面において,
2."0"を選択,すなわち「0: tick ConsoleIn component」とすれば,ConsoleIn.py::onExecute()
が実行されるので,"Please input number:" のプロンプトが出ると期待していたが,
3.見た目上,何も変化せず,
4.Connector.py の画面においてもう一度,"0" を選択すると,"Please input number:" が表示さ
れる.
5.2回目の"0"入力以降は,"0" を入力するたびに "Please input number:" が表示される.
----

なぜ,"0" を2回入力しないと ConsoleIn::onExecute() が実行されないのかが理解できません.原
因は,「tick():処理を1ステップ進める.ExecutionContextの処理を1周期分進める.」において,
「ExecutionContextの処理を1周期分進める」とは具体的に何を実行するのかを正確に理解していな
いからだと思っています.

「ExecutionContextの処理を1周期分進める」とは具体的にどのような処理を行うことなのか,情報
源がありましたら,ぜひ教えていただきたいと願っております.
私なりに,調査・検索してみましたが,どうしてもわかりませんでした.


> これまでのバグフィックスを行ったパッケージを間もなくリリース予定
> です。
> ただ、現在のところWindows用のインストーラは準備できているのですが、
> 他のパッケージがまだですので、それまでは、ファイルの置き換えでご対
> 応頂ければと存じます。

楽しみにしております.よろしくお願いします.

> なお、これまでのバグ情報につきましてもWebにアップするように致します。

可能でしたら URL を教えていただけますでしょうか.

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


> On Mon, 21 Feb 2011 20:22:48 +0900
> Shunji Satoh<shun @ is.uec.ac.jp>  wrote:
> 
>> 電気通信大学大学院・佐藤と申します.
>>
>> お世話になっております.
>>
>> 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 メーリングリストの案内