rosbag-數據記錄工具
參考
使用示例
rosbag-wiki
Bag file format
MATLAB working with bag file
Bag file
rqt_bag
rosgab/migration
Python 分析rosbag files
How to extract data from bag file
Matlab: transform quaternion to rotation
前言
- 因實驗,需要將機器人坐標記錄下來,在matlab上做對比實驗
- 需要學習,rosbag的基本使用,bag文件的處理,matlab上ROS工具箱使用
記錄
rosbag基本使用
- bag實際上是將一個node的行為錄制下來,然后可以重新播放
- 使用命令行能夠:錄制,從包重新發布,獲取包的概括信息,檢查包的消息類型,使用Python表達式過濾包中信息,壓縮解壓縮包,重新索引包
- 如果錄制高帶寬的東西,例如圖像信息,建議在本地錄制和存放文件
- bag文件默認名字為日期,可以添加前綴
- 基本命令包括
- record:制定主題來錄制
rosbag record rosout tf cmd_vel
rosbag record -a #所有
rosbag record --duration=30 /chatter #持續30s,5m,2h
rosbag record --split --size=1024 /chatter #空間達到1024M后分文件存儲
rosbag record --split --duration=30 /chatter #持續時間到30s后分文件存儲
rosbag record -o session1 /chatter #為文件名字做前綴
rosbag record -O session2_090210.bag /chatter #為文件命名
rosbag record --node=/joy_teleop #錄制該節點左右消息
rosbag record -l 1000 /chatter # 錄制該主題1000個消息限制
- info
- play
- 注意:如果兩個包被播放,它們將作為一個包對待。比如你錄制一個包,在一個小時之后再錄制一個包,然后同時播放,這個時候你會經歷1個小時的空白。
rosbag play recorede1.bag
rosbag play --clock recorded1.bag #發布時鍾時間
rosbag play --clock --hz=200 recorded1.bag #時鍾頻率默認100
rosbag play -r 10 recorded1.bag # 發布速度翻倍
rosbag play -d 5 recorded1.bag #每一次advertise后等待5秒
rosbag play -u 240 recorded1.bag #只播放240s
rosbag play -l recorded1.bag # 循環播放
- check
rosbag check old.bag
rosbag check -g diagnostics.bmr diag.bag #生成一個移植規則文件migration rule file
- fix
rosbag fix old.bag repaired.bag myrules.bmr #使用規則文件恢復包文件內容
- filter
filter <in-bag> <out-bag> <expression> # 詳情請訪問網頁,可以使用topic, m, t, 等要素,分別是主題,消息,時間
rosbag filter input.bag output.bag "t.to_sec() <= 1284703931.86"
- compress
- decompress
- reindex
- 修復包的命令
rqt_bag
- 提供全方位的圖形化界面,具有錄制,播放,顯示,保存,加載文件,暫停等功能
數據修改
- 請參考migration網頁
數據導出到matlab分析
- 先導出為CSV文件,逗號分隔值文件格式
rostopic echo -b log_file.bag /topic_name
rostopic echo -p /topic_name #使用matlab友好格式進行顯示
- 再存為文件
rostopic echo -b file.bag -p /topic > data.txt