• 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

            前者是打开小乌龟的界面,后者是实际操作。两者的命令是,

    1. rosrun turtlesim turtlesim_node
    2. rosrun turtlesim turtle_teleop_key

    3、打开rosbag工具

            在用turtle_teleop_key操作小乌龟之前,我们需要用rosbag记录一下所有的话题和消息。对应的命令是,

    rosbag record -a

            输入完毕之后,我们就可以在当前目录下看到生成了一个bag文件,

    1. feixiaoxing@feixiaoxing-VirtualBox:~/Desktop$ ls
    2. 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的方法来进一步确认下,

    1. feixiaoxing@feixiaoxing-VirtualBox:~/Desktop$ rosbag info 2023-10-13-16-44-52.bag
    2. path: 2023-10-13-16-44-52.bag
    3. version: 2.0
    4. duration: 1:07s (67s)
    5. start: Oct 13 2023 16:44:52.39 (1697186692.39)
    6. end: Oct 13 2023 16:46:00.20 (1697186760.20)
    7. size: 607.8 KB
    8. messages: 8646
    9. compression: none [1/1 chunks]
    10. types: geometry_msgs/Twist [9f195f881246fdfa2798d1d3eebca84a]
    11. rosgraph_msgs/Log [acffd30cd6b6de30f120938c17c593fb]
    12. turtlesim/Color [353891e354491c51aabe32df673fb446]
    13. turtlesim/Pose [863b248d5016ca62ea2e895ae5265cf9]
    14. topics: /rosout 6 msgs : rosgraph_msgs/Log
    15. /rosout_agg 3 msgs : rosgraph_msgs/Log
    16. /turtle1/cmd_vel 191 msgs : geometry_msgs/Twist
    17. /turtle1/color_sensor 4223 msgs : turtlesim/Color
    18. /turtle1/pose 4223 msgs : turtlesim/Pose

    6、数据回放与验证

            有了bag文件,其实下面就可以通过回放的方法来进一步验证了。验证的步骤也不复杂,主要分成这三步。第一,打开roscore;第二,打开turtlesim_node;第三步,这里用rosbag play 2023-10-13-16-44-52.bag来代替turtle_teleop_key了。可以观察一下,确认小乌龟生成的图案和之前保存的图案是否一致。如果一致,基本代表整个过程都是ok的。

    1. feixiaoxing@feixiaoxing-VirtualBox:~/Desktop$ rosbag play 2023-10-13-16-44-52.bag
    2. [ INFO] [1697186826.134207057]: Opening 2023-10-13-16-44-52.bag
    3. Waiting 0.2 seconds after advertising topics... done.
    4. Hit space to toggle paused, or 's' to step.
    5. [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:

  • 相关阅读:
    无需插数据线,adb通过wifi无线调试
    jQuery Validation Engine验证模拟的下拉列表非select
    编译原理之词法分析器随笔和简单实现
    x86_64、AArch64、ARM32、LoongArch64、RISC-V
    语言基础篇15——Python中的面向对象编程
    如何训练聊天机器人面对复杂的语言环境和需求?
    Django笔记六 常用字段类型,字段选项
    深度学习硬件配置推荐(kaggle学习)
    自动化测试系列 —— UI自动化测试
    初探生物信息数据库——生信原理第一次实验报告(华农)
  • 原文地址:https://blog.csdn.net/feixiaoxing/article/details/133814278