概要
ROS 2を用いたシミュレーションや実験のbagデータから,論文・レポート等向けにMATLAB等を用いた綺麗な描画を行うためには,csv等の形式へデータを変換できると便利です.
コマンドros2 topic echo /topic --csv > output.csv
で取得することも出来ますが,複数のトピックを変換したい時などは少し不便です.
そこで,rosbagsを用いて実装した,事前に指定しておいた複数のトピックデータをまとめてcsvファイルへ変換するリポジトリを紹介します.
https://github.com/toshi67026/ros2bag2csv
特徴
- 複数のトピックデータを一括変換
- YAMLファイルによる変換対象管理
- トピックごとで個別の出力方法を実装可能(QuaternionはEuler角へ内部で変換してから出力したい等)
使用方法
基本的な使い方は以下の通りです.依存ライブラリのインストール方法など詳細はgithubを参照してください.
python3 ros2bag2csv.py [-t target_topic.yaml] {rosbag_file_dir}
変換対象のトピック設定の例
変換したいトピックは以下のようなYAMLファイルで指定します
- /float
- /ns1/vel
- /ns2/array
サポートされているメッセージタイプ
現在,サンプルとして以下のメッセージタイプが変換可能です.
- std_msgs
- Bool
- Float32
- Float32MultiArray
- geometry_msgs
- Point
- Pose
- PoseStamped
- Quaternion
- Twist
- Vector3
カスタムメッセージを含む他のメッセージタイプは,個別に変換関数を実装することで追加可能です.MultiArrayのようなトピックは出力先がcsvのため,データの次元に制約があります.
データの活用
変換したcsvデータは空白が多く含まれるスパースな形式であることに注意が必要ですが,MATLABなどの解析ソフトを使えば簡単に利用できます.リポジトリにcsv_visualize.m
というMATLABのサンプルスクリプトを用意しています.
参考