【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
前面我们学习了hector-slam、gmapping slam两种slam方法。当时我们操作的时候,是通过手动操作的方法来建图的。但是这里面可能存在一个问题,因为建图的时候,我们只能选择一种slam建图方法。如果我们想针对同一种场景用不同的slam算法,比较下它们的建图效果,这个时候就没有办法了。好在ros给我们提供了一个数据回放的工具,即rosbag。
rosbag好处蛮多的,最主要的就两个。一个是方便学习。对于刚开始ros入门的同学来说,可能自身缺少相应的传感器,无法对算法进行分析和测试。但是有了rosbag之后,数据可以按照之前的速度进行回放处理,这个时候即使没有传感器,没有实际数据,也可以对算法进行单步调试的。第二个好处就是debug了。这个比较显而易见。对于部分复杂的场景,用rosbag来分析问题是再好不过了。现场fae人员描述得再好,都不如一个rosbag文件来得踏实。
下面我们就用小乌龟行走的场景,看下rosbag应该怎么使用。
1、第一步打开roscore
这个比较好理解,roscore是所有消息的分发器,它肯定第一个被启动。
2、依次打开turtlesim_node和turtle_teleop_key
前者是打开小乌龟的界面,后者是实际操作。两者的命令是,
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
3、打开rosbag工具
在用turtle_teleop_key操作小乌龟之前,我们需要用rosbag记录一下所有的话题和消息。对应的命令是,
rosbag record -a
输入完毕之后,我们就可以在当前目录下看到生成了一个bag文件,
feixiaoxing@feixiaoxing-VirtualBox:~/Desktop$ ls
2023-10-13-16-44-52.bag catkin_ws wpr_simulation-master.zip
这个bag文件就是系统记录的数据包了。
4、操作小乌龟,继续生成bag文件
所有操作都准备好了,就可以操作小乌龟了。让小乌龟各个方向都走一走,最好是走出一个图案出来。这样在后续rosbag回放的时候,可以看下生成的图案和当前的图案是否一致。等图案生成后,就可以关闭turtlesim_node、turtle_teleop_key、rosbag了。
5、确认bag文件是否正确
为了验证bag文件是否正确,可以输入rosbag info 2023-10-13-16-44-52.bag的方法来进一步确认下,
feixiaoxing@feixiaoxing-VirtualBox:~/Desktop$ rosbag info 2023-10-13-16-44-52.bag
path: 2023-10-13-16-44-52.bag
version: 2.0
duration: 1:07s (67s)
start: Oct 13 2023 16:44:52.39 (1697186692.39)
end: Oct 13 2023 16:46:00.20 (1697186760.20)
size: 607.8 KB
messages: 8646
compression: none [1/1 chunks]
types: geometry_msgs/Twist [9f195f881246fdfa2798d1d3eebca84a]
rosgraph_msgs/Log [acffd30cd6b6de30f120938c17c593fb]
turtlesim/Color [353891e354491c51aabe32df673fb446]
turtlesim/Pose [863b248d5016ca62ea2e895ae5265cf9]
topics: /rosout 6 msgs : rosgraph_msgs/Log
/rosout_agg 3 msgs : rosgraph_msgs/Log
/turtle1/cmd_vel 191 msgs : geometry_msgs/Twist
/turtle1/color_sensor 4223 msgs : turtlesim/Color
/turtle1/pose 4223 msgs : turtlesim/Pose
6、数据回放与验证
有了bag文件,其实下面就可以通过回放的方法来进一步验证了。验证的步骤也不复杂,主要分成这三步。第一,打开roscore;第二,打开turtlesim_node;第三步,这里用rosbag play 2023-10-13-16-44-52.bag来代替turtle_teleop_key了。可以观察一下,确认小乌龟生成的图案和之前保存的图案是否一致。如果一致,基本代表整个过程都是ok的。
feixiaoxing@feixiaoxing-VirtualBox:~/Desktop$ rosbag play 2023-10-13-16-44-52.bag
[ INFO] [1697186826.134207057]: Opening 2023-10-13-16-44-52.bag
Waiting 0.2 seconds after advertising topics... done.
Hit space to toggle paused, or 's' to step.
[DELAYED] Bag Time: 1697186692.394805 Duration: 0.000000 / 67.807504 Delay [RUNNING] Bag Time: 1697186692.394805 Duration: 0.000000 / 67.807504 [RUNNING] Bag Time: 1697186692.394805 Duration: 0.000000 / 67.807504 [RUNNING] Bag Time: 1697186692.396400 Duration: 0.001595 / 67.807504 [RUNNING] Bag Time: 1697186692.496650 Duration: 0.101844 / 67.807504 [RUNNING] Bag Time: 1697186692.596853 Duration: 0.202048 / 67.807504 [RUNNING] Bag Time: 1697186692.639153 Duration: 0.244348 / 67.807504 [RUNNING] Bag Time: