操作
調査 #943
完了[RTM-1.0.0-RC1]データポートのTimeStampにCPU時刻が自動付与によるシミュレータ側の影響
開始日:
2009/09/25
期日:
進捗率:
100%
予定工数:
説明
OpenRTM-1.0.0-RC1-C++を使ってますが、データポート型のデータ(例えばTimedDooubleSeqなど)
にある「tm.sec」「tm.nsec」について、0.4.2では空だったものが、1.0.0ではCPU時刻が自動で
付与されているようです。
仕様でしょうか?
実時間で処理する際、特にロボット実機で処理する際には何ら不都合はないのですが、
OpenHRP3のようにシミュレータを使う際に、シミュレーション時刻の取得が出来ないので
不都合が生じてます。
ちなみに、自分で自作RTCのデータ送信元にてtm.secなどの値を入れて送信すると、
受信側では、CPU時刻に上書きされているようです。
どのタイミングでCPU時刻がつけられているのでしょうか?
複数台PCに分散したRTCでNW上でやりとりする場合、もしPCの時刻がNTPなどで一致させて
いない場合、どうなるでしょうか?
自動で、どのタイミングでついているか分かりませんが、0.4.2では、よく
受け取り側でデータ順が入れ替わって取得することがありました。
その際、自作RTCで付与したtimestampにてソートをして正確性を保ってましたが、データの入れ替わりが1.0.0系でも起きる場合の弊害などが懸念される。
自動付与、手動付与の選択が可能、もしくは、手動付与がされていない場合
(tmがnullの時)だけ自動付与などはどうでしょう。
とりあえずの報告です。
操作