SLAM从入门到精通(数据回放工具之rosbag)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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了。

SLAM从入门到精通(数据回放工具之rosbag)_第1张图片

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: 

你可能感兴趣的:(SLAM从入门到精通,机器人)