🤖
ros2のbagファイルをcsvにする
モチベーション
-
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
rosに依存しないbagファイル操作用のライブラリがありました.