5

SLAM从入门到精通(第一次hector slam建图)

 11 months ago
source link: https://blog.csdn.net/feixiaoxing/article/details/133385653
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

        目前建图的方法一般有视觉建图和激光建图两种。其中激光建图,又可以分成hector、gmapping、cartographer这几种。要说最简单的建图方法,那还真是非hector莫属。因为hector建图的话,本身需要的数据类型非常少,只需要lidar的输入数据即可,不再需要其他的数据。当然,hector建图也有自己的缺点,比如说长走廊,就不太合适hector。当然我们这里只是为了演示hector的使用方法,可以先暂时不用考虑hector的缺点。

1、构建一个虚拟场景

        之前我们运行的环境时wpb_simple.launch,这是一个开放的环境。周围没有什么阻挡物,不太适合建图。因此,我们需要重新构建一个环境,即wpb_stage_slam.launch,这样输入roslaunch wpr_simulation wpb_stage_slam.launch,就可以看到这样的一个场景,

9d95b87028eb4de69abff93b4358275e.png

2、运行hector程序

        之前因为我们执行过./install_for_noetic.sh,所以这里其实已经安装了hector建图工具。所以,此时只需要执行rosrun hector_mapping hector_mapping即可。这个程序没有界面,只有一串信息打印,



newCodeMoreWhite.png

3、利用rviz查看建图效果

        虽然小车还没有移动,但是这个时候已经可以看到一点建图的效果。输入rosrun rviz rviz,通过添加RobotModel和Map,订阅/map话题,就可以看到这样的建图效果,

b63761fd9fe046d9882ff62db7d9f597.png

4、移动小车,构建完整的小车地图

        当前小车还没有移动功能。需要我们输入rosrun rqt_robot_steering rqt_robot_steering,通过速度和角度控制,就可以让小车开始移动起来了,最好让小车走完所有可以行走的空间。

028df1c70e294961b869a58feaaf35b9.png

        移动小车的目的还是为了建图。通过移动小车,这样激光可以扫描到所有的空间,也就可以实现完整的建图过程了。

3dd34bc66cb04175a0bec8ae41bca913.png

5、保存地图

        所有这一切都做好之后,就可以用map_server保存地图了。直接输入rosrun map_server map_saver即可。不出意外,我们会先看到这样的打印,

        等待一会之后,ls一下,可以看到多了两个文件,

        这多出来的文件,一个叫map.pgm,一个叫map.yaml。从大小来看,map.pgm就是地图文件数据,可以用gimp打开。而map.yaml是配置文件,内容如下所示,

        将pgm文件拷贝到windows平台,用gimp软件打开,就可以看到这个地图信息,其实就是一张图片,这就是我们要的地图数据。

6f41b5796fb345d3bf35c1c0aca2acc1.png

注:

        没有安装hector的同学可以通过sudo apt-get install ros-noetic-hector-slam安装。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK