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

Shunji Satoh shun @ is.uec.ac.jp
2011年 2月 23日 (水) 16:34:05 JST


清水さま,みなさま

電通大院・佐藤俊治です.
下記,ありがとうございました.なぜこのような挙動をするのか,清水さんのご返信とありがたい
encourage で理解することができました.

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

なるほど.python よりも c++ の方が慣れているので,ExtTrigExecutionContext.h ならびに,これ
が継承している PeriodicContext.h のソースを読んだのですが,
StateMachine::m_sm をメンバとして持っていて,
----
m_sm.setEntryAction(ACTIVE_STATE, &DFPBase::on_activated);
m_sm.setDoAction   (ACTIVE_STATE, &DFPBase::on_execute);
m_sm.setPostAction (ACTIVE_STATE, &DFPBase::on_stateupdate);
----
なので,ExecutiohContext の「1周期分進める」を記号⇒で示すと,
(Inactive)⇒
   (Inactive->Active/on_activate())⇒
   (Active->Active/on_execute())
と理解しましたが,これで合っていると期待しています.(いかがでしょうか).

状態遷移図については,
http://www.openrtm.org/openrtm/sites/default/files/162/RTCStateMachine040.png
や,著書「はじめての〜」を眺めていたのですが,on_execute() の記載がなく,とても不思議に
思っていました.on_execute() は Active のときに周期的に呼ばれるとの記載がありましたが,
「すごいな,実際,どうやっているんだろう?」と思い,現在も調べていますがいまだわかっていま
せん.

ところで下記のコメントありがとうございます.大変 encourage されました.現在,ソースをあれ
これ追って勉強している最中です.
# ただどうしても,tick() がどのようにして on_execute() を呼び出しているか,いまだつかめて
いません.

ありがとうございました.以上です.

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



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