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

Masayuki Shimizu masayuki.shimizu @ aist.go.jp
2011年 2月 22日 (火) 21:36:16 JST


佐藤様

静岡大の清水です。

> 2."0"を選択,すなわち「0: tick ConsoleIn
> component」とすれば,ConsoleIn.py::onExecute()
> が実行されるので,"Please input number:"
> のプロンプトが出ると期待していたが,
> 3.見た目上,何も変化せず,
> 4.Connector.py の画面においてもう一度,"0"
> を選択すると,"Please input number:" が表示さ
> れる.

最初のtick()では、アクティブ化処理が実行されます。
この時点でRTCはアクティブになりますが、
onExecute()は実行されません。

onExecute()を実行するためにはもう一度tick()を
コールしないとなりません。

なので、最初のtick()では何も起こってないように
「見える」だけです。実際はRTCがアクティブ状態に
遷移しています。SystemEditorなどで確認してみると
わかると思います。

# プログラミングに苦労しているようですが、
頑張ってください。
プログラミングのスキルアップには試行錯誤や
経験が必要です(と個人的には思います)。
一朝一夕には上達しないものです。
ソースを読んでみるというのは大変良いことです。
最初はわからなくてもだんだん分かってきます。
私もコードリーディングでRTMの勉強をしました。

清水
--- Shunji Satoh <shun @ is.uec.ac.jp> wrote:

> 栗原様,みなさま
> 
> 電通大院・佐藤です.
> 早速のご返信ならびにスクリプトの添付,誠にありがとうご
ざいます.
> 
> 結果から報告しますと,頂いた
> 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 メーリングリストの案内