ROS企业级常用指令之rosbag

整理一下在做无人驾驶公司实习时较为常用的ROS指令,同时强化ROS学习!
0

莫笑他人背驼,
自己把腰挺直。

rosbag简介

命令 详细说明
rosbag record [选项] [话题名称] 将指定话题的消息记录到bag文件
rosbag info [文件名称] 查看bag文件的信息
rosbag play [文件名称] 回放指定的bag文件
rosbag compress [文件名称] 压缩指定的bag文件
rosbag decompress [文件名称] 解压指定的bag文件
rosbag filter [输入文件] [输出文件] [选项] 生成一个删除了指定内容的新的bag文件
rosbag reindex bag [文件名称] 刷新索引
rosbag check bag [文件名称] 检查指定的bag文件是否能在当前系统中回放
rosbag fix [输入文件] [输出文件] [选项] 将无法回放的bag文件修改成可以回放的文件

准备工作

关闭所有节点。通过在不同的终端窗口中运行以下命令来运行turtlesim_node和turtle_teleop_key。

1
2
3
$ roscore
$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key

rosbag record [选项][话题名称]

记录指定话题的消息。首先,使用rostopic list命令查看ROS网络上当前正在使用的话题列表。

1
2
3
4
5
6
$ rostopic list
/ rosout
/ rosout_agg
/ turtle1/cmd_vel
/ turtle1/color_sensor
/ turtle1/pose

如下所示,把要记录的话题作为record命令的选项来输入,则会开始记录于bag文件中。在开始记录之后,在运行turtle_teleop_key节点的终端窗口中用键盘的方向键移动乌龟,则会记录选定的/turtle1/cmd_vel话题。然后按[Ctrl + c]结束记录,则会生成一个文件名为“2019-06-29-14-16-28.bag”的bag文件,如下所示。

1
2
3
$ rosbag record /turtle1/cmd_vel
[INFO] [1499663788.499650818]: Subscribing to/turtle1/cmd_vel
[INFO] [1499663788.502937962]: Recording to 2019-06-29-14-16-28.bag

如果要同时记录所有话题,而不是特定话题,请在命令中添加“-a”选项。

1
$ rosbag record - a

rosbag info [bag文件名]

查看bag文件的信息。用户可以检查bag文件的信息。以下示例记录了/turtle1/cmd_vel话题,共记录了373
条消息。使用的消息类型是geometry_msgs/Twist。此外,还可以检查路径,bag版本和时间等信息。

1
2
3
4
5
6
7
8
9
$ rosbag info 2019-06-29-14-16-28.bag
path : 2019-06-29-14-16-28.bag
duration : 17.4s
version : 2.0
size : 44.5 KB
messages : 373
compression : none [1/1 chunks]
types : geometry_msgs/Twist [9f195f881246fdfa2798d1d3eebca84a]
topics : /turtle1/cmd_vel 373 msgs : geometry_msgs/Twist

#rosbag play [bag文件名]
回放指定的bag文件。下面是回放之前记录的2019-06-29-14-16-28.bag文件的命令。如此一来,当时记录的/turtle1/cmd_vel消息会原原本本地传输,因此在屏幕上可以看到乌龟移动的情况。但是,只有重新执行turtlesim_node,使得优先初始化机器人轨迹和机器人位置,才可以获得相同的结果。

1
2
3
4
5
6
7
8
$ rosbag play 2019-06-29-14-16-28.bag
[INFO] [1499664453.406867251]: Opening 2019-06-29-14-16-28.bag
Waiting 0.2 seconds after advertising topics ... done .
Hit space to toggle paused , or 's' to step .
[RUNNING] Bag Time : 1499663790.357031 Duration : 0.000000/17.419737
[RUNNING] Bag Time : 1499663790.357031 Duration : 0.000000/17.419737
[RUNNING] Bag Time : 1499663790.357163 Duration : 0.000132/17.419737
~ ~ ~

rosbag compress [bag文件名]

压缩指定的bag文件。如果使用本例中使用的命令对长时间记录数据进行压缩,则将占用很小的存储空间。

1
2
3
4
5
$ rosbag compress 2019-06-29-14-16-28.bag
2019-06-29-14-16-28.bag 0% 0.0 KB 00:00
2019-06-29-14-16-28.bag 100% 35.0 KB 00:00
2019-06-29-14-16-28.bag 12.7kB
2019-06-29-14-16-28.orig.bag 45.5kB

bag文件被缩减为1/4。 压缩前的原始文件会以文件名添加“orig”的文件另行存储。

rosbag decompress [bag文件名]

对指定的bag文件解压。这个命令会将文件恢复到压缩之前的状态。

1
2
3
$ rosbag decompress 2019-06-29-14-16-28.bag
2019-06-29-14-16-28.bag 0% 0.0 KB 00:00
2019-06-29-14-16-28.bag 100% 35.0 KB 00:00

-------------本文结束 感谢阅读-------------
0%