[openrtm-users 00960] OpenRTM-aist-1.0.0-RC1 (C++) DataPort型データのTimeStamp不具合

Yusuke Nakajima y.nakajima @ aist.go.jp
2009年 9月 25日 (金) 15:59:20 JST


産総研の中島です。

OpenRTM-aist-1.0.0-RC1 (C++) をUbuntu8.04環境で使用していますが、
データポート送信における、タイムスタンプの扱いに不具合があるよう
ですので報告します。

DataPort型データを送信する際に、例えば「Timed〜〜」型で定義していると、
「tm」がも送信されますが、0.4.2では確か「空っぽ」でユーザーが自らセット
する仕様だったと思いますが、1.0.0では、自動でCPU時刻が付与されているようです。

これは仕様でしょうか?またどのタイミングの時刻でしょうか?

上記を踏まえて、利用していると以下2点問題があります。

===

【1】同一データを複数のRTC間を経由する際のタイムスタンプの上書き

 テスト用に、RTCを3つ用意し、「testA」->「testB」->「testC」
という順に、「testA」で作成したデータを送信し、「testB」で受信し、
そのまま送信用にコピーし再送信、「testC」で受信という一連の処理を
する場合をテストしました。
「testA」内部で"tm.sec","tm.nsec"に値を入れて送信しても、「testB」で受信
し、中身を見ると、"tm.sec","tm.nsec"はCPU時刻にて上書きされています。
(どのタイミングでの時刻か不明ですが・・)
さらに、上書きされたデータを「testB」が「testC」に送信し、「testC」が受
信し、中身を見ると、"tm.sec","tm.nsec"は「testB」で見た時刻とは異なり、
新たに時刻が上書きされていることが判明しています。
つまり、唯一のでデータが送信の度に変更されてしまっている状態。

【2】シミュレータ(OpenHRP3など)との兼ね合い

0.4.2までは、自動付与がないため、OpenHRP3からシミュレーション上の時刻を
タイムスタンプとして取得可能でしたが、現在公開中のOpenHRP3.1.0_beta3では、
どうやら、この時刻もCPU時刻に上書きされているようです。
つまり、シミュレーション上の正確なデータを取得不可となっている状態。

===

この辺り、影響が大きいと思われますので、対応をお願いいたします。

以上





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