本教程教你如何使用rosbag record工具来录制ros通信数据。之后在通过rosbag play形式回放录制的数据包
此教程不详细解读,仅将rosbag record对应的help文档列出,并给出具体录制例子
bag包是存储ROS消息数据的文件格式,rosbag命令可以录制,回放,操作bag包。
rosbag用法是
rosbag [子命令] [选项] [参数]
rosbag更信息的文档可参考
rosbga record用于录制指定topic的数据为一个bag包进行存储。
用法是:rosbag record TOPIC1 [TOPIC2 TOPIC3 …]
可用选项有:
rosbag record -a -d=120s --split --max-splits=100
以每个bag录制120s的数据,录制系统内所有topic的数据,最多保存100个bag 包
以时间同步的方式回放数据包的内容。
用法:rosbag play BAGFILE1 [BAGFILE2 BAGFILE3 …]
可用选项
示例:rosbag play xx.bag
用法:rosbag decompress [选项] BAGFILE1 [BAGFILE2 BAGFILE3 …]
下面这部分主要是bag包的解析。
运行小乌龟例程,自行录制一个bag包。
rosbag record -a --duration=60s -o turtele
# 可以看到生成一个前缀是turtele的bag包
ls
turtele_2022-09-09-16-36-49.bag
需要注意的是,在进行下面的示例时,可以使用time命令来简单监控下各个命令的运行时间。如果你不希望获取各个命令的运行时间
,下面的示例命令中你把开头的time去掉即可。
你需要知道要从bag包中读取的消息的具体的topic。可以使用rosbag info 获取bag中的所录制的topic,以及各个topic上录制了多少条数据。
time rosbag info turtele_2022-09-09-16-36-49.bag
path: turtele_2022-09-09-16-36-49.bag
version: 2.0
duration: 23.5s
start: Sep 09 2022 16:36:49.84 (1662712609.84)
end: Sep 09 2022 16:37:13.35 (1662712633.35)
size: 234.2 KB
messages: 3139
compression: none [1/1 chunks]
types: geometry_msgs/Twist [9f195f881246fdfa2798d1d3eebca84a]
rosgraph_msgs/Log [acffd30cd6b6de30f120938c17c593fb]
turtlesim/Color [353891e354491c51aabe32df673fb446]
turtlesim/Pose [863b248d5016ca62ea2e895ae5265cf9]
topics: /rosout 4 msgs : rosgraph_msgs/Log (2 connections)
/turtle1/cmd_vel 225 msgs : geometry_msgs/Twist
/turtle1/color_sensor 1455 msgs : turtlesim/Color
/turtle1/pose 1455 msgs : turtlesim/Pose
real 0m0.507s
user 0m0.283s
sys 0m0.126s
从上面的rosbag info的结果可以看出,在/turtle1/cmd_vel 上有225条消息。
下面我们开始提取这部分数据。
# 终端1
reocore
# 终端2
rostopic echo /turtle1/cmd_vel | tee cmd_vel.yaml
# 终端3
time rosbag play --immediate turtele_2022-09-09-16-36-49.bag --topics /turtle1/cmd_vel
[ INFO] [1662714541.935355856]: Opening turtele_2022-09-09-16-36-49.bag
Waiting 0.2 seconds after advertising topics... done.
Hit space to toggle paused, or 's' to step.
[RUNNING] Bag Time: 1662712628.852830 Duration: 16.519400 / 16.519400
Done.
real 0m1.021s
user 0m0.319s
sys 0m0.165s
head cmd_vel.yaml
linear:
x: 0.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: -2.0
---
linear: