🤖

ros2のbagファイルをcsvにする

2022/02/14に公開
1

モチベーション

  • ros2 bag record で実験ログを取ったはいいけど,解析にかけたいのでcsvとかに変換したい.
  • データベースを直接読みに行くとトピックのデータ自体はBLOBになっててなかなか面倒くさそう.
  • ros2 bag play ** で再生しながら ros2 topic echo --csv /YOUR_TOPIC > MY_CSV.csv とかしたらいいんだけど,実験時間分待たなきゃいけないのでやだ.

2022/04/22 rosbagsを発見

rosbags を使えばOK.
ros2のシステムが入っていなくても使える.

以下は旧情報.

暫定解

Term1
ros2 topic echo /YOUR_TOPIC your_msgs/msg/YourMsgType --csv --qos-history keep_all --qos-reliability reliable > output.csv
Term2
ros2 bag play -r 100 YOUR_BAG_DIR
  • ros2 bag play -r 100 とかで早送りにする
  • 早送りにした分取りこぼしが発生するので,受信する側でQoS設定を変更する.
    • ros2 topic echo /YOUR_TOPIC your_msgs/msg/YourMsgType --csv --qos-history keep_all --qos-reliability reliable > output.csv
      • --qos-history keep_all で履歴を全部持っておくように指定.これがないと出力前に新しいメッセージ来たときに捨てちゃう?
      • --qos-reliability reliable 受信側に影響があるのかわからないけど一応.

問題

  • topicが複数あると面倒くさそう
    • 変換用のノードとか作るほうがいいかも
  • 1 min x 100 Hz 程度のトピックなら問題なく出力できるが, 1 hour x 100 Hz になるとqueサイズのwarningが出ることがある. -r 100 の大きさを調整する.

結論

もっとスマートな方法があるはずなので誰か知ってたら教えて下さい.

Discussion