今日はセンサーデータをCSVファイルに保存する方法についてお話します.
ROSは情報を送信したり受信する際,トピック(Topic)というものを使います.
あまり慣れない概念だと思いますが,
そんなものがあるんだぁ〜ぐらいの感覚で大丈夫だと思います.
具体的な説明が欲しい方は,ROSの公式ホームページに紹介されてますので,参考にしてみてください.
[http://wiki.ros.org/ja/ROS/Tutorials/UnderstandingTopics]
現在送受信が行われているトピックを確認するには,次のコマンドを入力してください.
$ rostopic list
分かりやすいコマンドですね.
ROSのTopicをリスト化すると覚えればいいと思います.
すると,トピックのリストがばぁーっと出てきます.
このあとからは,ロボットの開発でよく使われる/scanというトピックを例にして説明していきます.
* ROS用のデータ保存
ROSには専用のデータ保存形式があり,rosbagというコマンドを使います.
例えば,/scanというトピックの時系列データを保存したい場合,次のように入力します.
$ rosbag record /scan -O data.bag
rosbag + record + トピック名 + -O + 保存ファイル名.bag
という感じですね.
他のトピックを保存したい場合は,そのトピック名を入れればいいし,複数のトピック名を入れることもできます.
もし,すべてのトピックを保存したいときは,次のように入力してください.
$ rosbag record -a -O data.bag
-a オプションを使うことで,特定のトピックではなく,全トピックを保存することができます.
ただし,場合によってはものすごいデータ量になることがあるので,気をつけてください!
* ROS用のデータからCSV形式に変換
次には,bagファイル形式からcsvファイル形式に変換する方法について説明します.
データを扱うときに一番使われるファイル形式はcsvだと思います.
bagファイルに記録されたデータをcsvに変換するには,次のコマンドを入力してください.
$ rostopic echo -b data.bag -p /scan > data.csv
bagファイルに記録されているトピックの内,csvファイルに抽出したいトピック名を指定すればいいです.
すると,同じフォルダの中にcsvファイルができてると思います.
* おわりに
今日はROSを使ってセンサーデータを保存し,CSVファイルに変換する方法について説明しました.
よく分からないところや,うまくいかない場合がありましたらコメント残してください!