Closed Kanazawanaoaki closed 3 years ago
ここでself.msgs
のtimestamp
とservice call
のtimestamp
を比較して,self.msgs
のtimestamp
が更新されるまで待つようにすると解決できそうですね.
@Kanazawanaoaki このPRを試してもらえますか? https://github.com/jsk-ros-pkg/jsk_common/pull/1669
@knorth55 そのままでは動かなかったのでhttps://github.com/knorth55/jsk_common/pull/2 のようにとりあえずエラーを起きないようにしました.
実機で試してみても画像がブレずに上手くいっていそうです.
https://github.com/Kanazawanaoaki/jsk_demos/blob/ebc8fa648b795b90e06ab4366509387dc40445c2/jsk_2020_04_pr2_curry/launch/data_collection_prosilica.launch#L20-L35 でdata_collection_serverを使って低Hzの画像トピックを保存するとサービスを呼んだタイミングよりも大分前の画像が保存されて,ブレてしまいました.
https://gist.github.com/Kanazawanaoaki/f0ba8039274772a4d44877fa8e53c97b
のように動作をさせてwait-interpolationを入れた後に画像を保存しても,動作中のぶれている画像が保存されました.
原因としては,data_collection_serverではサービスコールが呼ばれた時点でサブスクライブしている最新のトピックを保存するようになっているので,そもそも
rossetmaster
をしている遠隔PCから実行しているために遅延が生じていて,さらに低Hzのトピックだとサービスコールを呼んだ時点よりもかなり前のトピックが保存されることが考えられます.解決策としては,
が考えられます.
のようにしてぶれていない画像が保存できることは確認できました.