Skip to content

DaikiMin/rosbag_tutorial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

rosbag Tutorial


rosbagの取得 : rosbag record

  • topic通信でのメッセージをbagファイルとして保存するコマンド
$ cd ~/rosbag
$ rosbag record -a -O robot_bag
  • 保存方法は,以下の3通り

rosbag record -a

  • すべてのtopicを取得
  • 記録漏れ防止になる
    • しかし,画像や点群などの情報量は膨大
    • そのため,保存できるtopicのレートも落ちる可能性がありますので注意が必要

rosbag record /topic1 /topic2

  • topic名を指定して特定のtopicを取得できます.

rosbag record -e "/tf.*|/cmd_vel"

  • 正規表現でマッチングしたものを記録します.
意味
/tf.* /tf/tf_staticを記録
/group/.* /group/topic1/group/topic2のように、そのネームスペース以下のものをすべて記録
/topic1|/topic2 /topic1と/topic2を記録
その他のオプション
意味
-h, --help ヘルプを表示
-a, --all 全てのtopicを流れる情報を記録
-e 正規表現topic名, --regex=正規表現topic名 正規表現で名前が一致したtopicに流れる情報を記録
-x 正規表現topic名, --exclude=正規表現topic名 正規表現で名前が一致したtopicを除いたtopicに流れる情報を記録
-q, --quiet コンソール出力させない
-o hoge, --output-prefix=hoge hoge_YYY_MM_DD_HH_mm_ss.bagで保存
-O hoge, --output-name=hoge hoge.bagで保存
--split=SPLIT_SIZE 指定された容量、周期を超えた場合、バッグを分割
--max-splits=MAX_SPLITS 最大N個のバッグファイルを保持し、最大になった時点で最も古いものを消去し、ファイル数を一定に保つ
--size=SIZE 最大サイズSIZE MBのバッグを記録(デフォルト: 無限)
--duration=DURATION mまたはhが付加されていない限り、最大継続時間DURATIONのバッグを秒単位で記録
-b SIZE, --buffize=SIZE SIZE MBの内部バッファを使用 (デフォルト: 256, 0 = 無限)
--chunksize=SIZE 上級者向け.SIZE KBのチャンクに記録 (デフォルト: 768)
-l NUM, --limit=NUM 各topicのメッセージをNUM個だけ記録
--node=NODE 特定のノードが購読している全てのtopicを記録する
-j, --bz2 BZ2圧縮を使用
--lz4 LZ4圧縮を使用
--tcpnodelay topicを購読する際にTCP_NODELAYトランスポートヒントを使用
--udp topicを購読するときに UDP トランスポートヒントを使用
--repeat-latched 新しいバッグファイルの開始時にラッチされたメッセージを繰り返す

おすすめの使用方法

  • 端末上でコマンドをrosbag recordと打ち込んで実行するものいいですが,シェルスクリプトを作っておくと便利です.
  • 例えば,/odom/cmd_vel_mux/input/teleopを記録する場合,以下のようにシェルスクリプトを作成します.
rosbag_record.sh
#!/bin/bash

rosbag_file="my_bag"
if [ $# = 0 ]; then
    echo "rosbag file name = " $rosbag_file
else
    echo "rosbag file name = " $1
    rosbag_file=$1
fi

cd ~/catkin_ws/src
rosbag record   /odom \
                /cmd_vel_mux/input/teleop  \
                -o $rosbag_file

rosbagの確認 : rosbag info

$ rosbag info bag_file_name.bag
その他のオプション
意味
-h, --help ヘルプを表示
-y, --yaml YAMLフォーマットで情報を表示
-k KEY, --key=KEY 与えられたキーに関する情報を表示
--freq topicメッセージの頻度統計を表示

rosbagの再生 : rosbag play

$ cd ~/rosbag
$ rosbag play bag_file_name.bag --rate=2.0 --clock --loop

オプション

意味
-h, --help ヘルプを表示
-p PREFIX, --prefix=PREFIX すべての出力topicに接頭辞を付ける
-q, --quiet コンソール出力させない
-i, --immediate 全てのメッセージを待たずに再生
--pause 一時停止モードで起動
--queue=SIZE SIZEの送信キューを使用(デフォルトは100)
--clock 時計の時刻を公開 (TF使用時は必須)
--hz=HZ 時計の時間を公開するときにHZの周波数(デフォルトは100)
-d SEC, --delay=SEC topicのコールバック後にSEC秒スリープする(サブスクライバが接続できるようにするため)
-r FACTOR, --rate=FACTOR 発行レートにFACTORを掛ける
-s SEC, --start=SEC rosbagの再生をSEC秒後開始します
-u SEC, --duration=SEC rosbagの再生をSEC秒間行います
--skip-empty=SEC SEC秒以上メッセージのない領域をスキップ
-l, --loop ループ再生
-k, --keep-alive rosbagの終わりまで生き続ける(ラッチされたtopicを公開するのに有効)
--try-future-version プレーヤーがバージョン番号を知らない場合でも、Bagファイルを開こうとする
--topics=/topic1 再生するtopic
--pause-topics 再生中に一時停止するtopic
--bags=BAGS 再生するBagファイル
--wait-for-subscribers 各topicに最低1人の購読者がいることを確認してから公開する
--rate-control-topic=RATE_CONTROL_TOPIC 与えられたtopicを監視し、もし最後の公開がRATE_CONTROL_TOPIC以上前に公開された場合は、そのtopicが再び公開されるまで待ちます.topicが再び公開されるまで待ち、再生を継続します.
--rate-control-max-delay=RATE_CONTROL_MAX_DELAY RATE_CONTROL_MAX_DELAYからの最大時間差 から一時停止するまでの最大時間差

rqt_bag

  • bagファイルの中身を時系列的に見ることができます
$ cd ~/rosbag
$ rqt_bag bag_file_name.bag

csvへ出力

  • rosbagで記録したtopicをcsvファイルに保存することが出来ます
$ rostopic echo -b bagファイル.bag -p /topic名 > csvファイル.csv
  • シェルスクリプトを作っておくと便利です.
  • 例えば,/cmd_vel_mux/input/teleop/odom/twist/twistをcsvファイルに記録する場合,以下のようにシェルスクリプトを作成します.
bag2csv.sh
#!/bin/bash

cd ~/catkin_ws/src
# csvを作るrosbagファイル
rosbag_files=(
    "my_bag_1" \
    "my_bag_2" \
    "my_bag_3"
)

for ((i = 0; i < ${#rosbag_files[@]}; i++)) {
    echo "${rosbag_files[i]}"
    rostopic echo -b ${rosbag_files[i]}.bag -p /cmd_vel_mux/input/teleop  > teleop_${rosbag_files[i]}.csv
    rostopic echo -b ${rosbag_files[i]}.bag -p /odom/twist/twist> odom_velocity_${rosbag_files[i]}.csv
}

Reference


About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published