便利なrosbagの使い方です
参考は公式wiki
rosbagは出力されているtopicをリアルタイムで記録し,また,出力できる
ツール
ros的に言うと,topicをsubscribeして記録し,リアルタイムの形でpublishして再現することができます.
便利
まず記録
データを取りたいときは,
$ rosbag record <topic名>
具体的には
$roscore
$rosrun turtlesim turtlesim_node
$rosrun turtlesim turtle_teleop_key
で亀シミュレーションを起動すると,いろいろtopicが起動するはず
ここで,
$rosbag record /rosout /turtle1/cmd_vel
ってやれば,/rosout(ログ)と/turtle1/cmd_vel(速度)を記録してくれます.
ベンチマークとしてbagファイルを作ることが多いので,インプットを記録することが多めな気がします.
$ rosbag record -a
ってやれば,出力topicをすべて記録してくれます.
ただし,-aで記録中については,新しくtopicが増えた時は最初のほうそのtopicを記録されないことがあります(mastarに聞きに行くときのラグ).
-a以外のオプションもあるけど割愛
bagファイルの情報を見たいときは
$rosbag info <bag-files>
でbag fileの要約がわかる.
で,出力は
$play <bag-files>
で,
$ rosbag play recorded1.bag recorded2.bag
みたいにすれば2つbagファイルを出力できる.
最初に$rosbag record /rosout /turtle1/cmd_velで作ったbagファイルをexample.bagとすれば
$roscore
$rosrun turtlesim turtlesim_node
$rosrun turtlesim turtle_teleop_key
$ rosbag play bag1.bagで最初の動きが再現できるはずです.
turtlesim_nodeを少し変えても,同じ入力データで実行することができるので比較が容易です.
*システム内のわずかな時間変化にも敏感なアルゴリズムを実装すると,多少のずれは生じてしまいます.これはrosbagの限界といえます.
他には
rosbag check:bagファイルが現環境で実行可能か見る
rosbag fix:バッグファイルが壊れていれば修復
rosbag filter:bagファイルをPython式にしたがって変換
rosbag compress:バックアップを作って圧縮
rosbag decompress:バックアップ作って解凍
rosbag reindex:indexが故障したとき(bagがうまくクローズしないとき)修復する
なんてのもありますけど,そんなに使わなかった.
0 件のコメント:
コメントを投稿