岡田先生、皆様
安藤です
我々も、とある用途でそういった仕様のECを検討しています。
具体的に言いますと、現在のECのトリガオペレーション tick() の代わりに
tick (in long sec, in long usec) を使ってアプリケーション側から
時刻を与えられるようにし、ECは与えられた時刻を論理クロック
(グローバルに1個、論理時間を保持するだけのもの) に書き込み、
coil::gettimeofday() が返す値に反映させる、というものです。
#添付のホワイトボードの図を参照ください。
もう一つ考えているのは、この論理クロックをEC内部に持たせ、
RTObject_implにECの時刻を取得するメンバ関数を追加するというものです。
最初の方法は、クロックを論理クロックに切り替えたあとは、
すべてcoil:gettimeofday で取得した時刻が論理時間に切り替わるので、
例えば、ログに記録される時刻もすべて論理時間と同じになるので、
挙動とログを照らし合わせるときなどは便利ですが、そのたgettimeofday
に依存してロジックを組んでいる場合、そこでおかしな現象が起こる可能性もあります。
後者は、ECに論理時間を取得しに行くロジックだけ、論理時間を元に
動作するのでわかりやすいといえばわかりやすいですが、他の時刻は
実際のクロックのままです。
今のところ、前者の実装を行なっているところですが、みなさんでなにか
アイディアがおありの方がいらっしゃいましたら、コメントいただければ幸いです。
よろしくお願いします。
2012年1月6日18:10 Kei Okada :
> 岡田です.度々お騒がせしております.
>
> ECから時刻をとれるようにする,という機能があると以下の状況で
> 便利かと思いましたので,よろしくご検討いただければ幸いです.
>
> ー
> シミュレータと実機で同じコンポーネントを使うような状況で,
> コンポーネント内で,例えば実行周期を確認する為などの場合で,
> シミュレータではシミュレーションの時刻を知りたく,実機では実時刻を
> 知りたい場合,ECから現在の時刻をとれるような機能があれば,
> コンポーネントでonExecuteが呼ばれる度にこれを参照する,という
> プログラムがかけそうです
> _______________________________________________
> openrtm-users mailing list
> openrtm-users@openrtm.org
> http://www.openrtm.org/mailman/listinfo/openrtm-users
岡田です.度々お騒がせしております.
ECから時刻をとれるようにする,という機能があると以下の状況で
便利かと思いましたので,よろしくご検討いただければ幸いです.
ー
シミュレータと実機で同じコンポーネントを使うような状況で,
コンポーネント内で,例えば実行周期を確認する為などの場合で,
シミュレータではシミュレーションの時刻を知りたく,実機では実時刻を
知りたい場合,ECから現在の時刻をとれるような機能があれば,
コンポーネントでonExecuteが呼ばれる度にこれを参照する,という
プログラムがかけそうです
_______________________________________________
openrtm-users mailing list
openrtm-users@openrtm.org
http://www.openrtm.org/mailman/listinfo/openrtm-users