• SLAM从入门到精通(利用数据集来离线制图)


    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

            前面我们的测试大部分都是基于仿真来实现的。但是很多时候,我们其实希还是望自己的算法能够跑在真实场景的数据上。可问题来了,此刻我们自己既没有钱买机器人,也没有时间采集那么多数据,那么应该怎么办呢。所以,为了解决这个问题,我们想到一个很简单的办法,那就是去网上找符合格式的数据集来进行离线制图。这和我们当初为了学习opencv图像处理、深度学习,去网上找测试集是一个道理。

            当然,这么做还有一个好处,那就是可以基于同一份传感器数据来制图,这样根据图的质量来评判不同算法的好坏。不然,不同的算法本身运行在不同的数据集上,这其实并不太好判断的。

    1、下载数据集

            网上rosbag的数据集还是有一些的。比如github上就有很多我们需要的数据集。这里给出一个示例地址,

    https://github.com/MST-Robotics/MST_ROS_Catkin_Packages/blob/master/basic_localization_stage.bag

    2、启动roscore

            所有的程序启动都需要依赖于roscore,这是也我们一开始学习ros就知道的知识点。

    3、设置重放数据时间

            这里需要通过rosparam的设置告诉ros系统,当前数据的时间不是本地时间,而是历史时间。对应的命令为rosparam set use_sim_time true。

    4、启动gmapping运行

            为了方便验证,这里直接给出了ros gmapping的操作命令,直接输入rosrun gmapping slam_gmapping scan:=base_scan。注意这里的scan为base_scan,因为数据包里面的topic就是base_scan,所以要修改一下。

    5、开始播放rosbag数据

            直接输入rosbag play --clock basic_localization_stage.bag即可。输入之后,我们就可以看到类似这样的打印,

    6、打开rviz验证效果

            所有工作都准备好之后,就可以用rviz订阅base_scan和map这两个topic了,直接输入rosrun rviz rviz即可。为啥会订阅两个topic,主要有两个目的。订阅map肯定是为查看制图效果,而订阅base_scan则可以看到当前的lidar的扫描轮廓出现在什么地方,这样也能大致推断出机器人当前走到了哪里。过了一段时间之后,不出意外的话,我们就会看到这样的图片效果,

            如果需要保存地图的话,可以直接输入rosrun map_server map_saver即可。相信大家对这一点都已经非常熟悉了。这样不仅仅是gmapping,我们还可以用hector slam、cartographer等多种算法来进行测试和评比,最后选出适合我们的slam算法。

  • 相关阅读:
    SwiftUI 5.0(iOS 17)TipKit 让用户更懂你的 App
    Find My资讯|美国警察通过Find My找回失窃车,苹果Find My为防盗窃起大作用
    Leetcode: 645.错误的集合 题解【超详细】
    Ventory制作多系统启动u盘 和 安装 windows10+ubuntu双系统
    MySQL 空间碎片详解
    nginx负载均衡配置及常见负载均衡策略
    Web Crawler
    手机-电脑互传软件:在 Windows 上安装和使用 Localsend 的完整指南
    Linux-安装MySQL(详细教程)
    【AI】Interesting Applications
  • 原文地址:https://blog.csdn.net/feixiaoxing/article/details/133914363