简介
场景:在 7.2.1 导航实现01_SLAM建图中,我们是通过键盘控制机器人移动实现建图的,而后续又介绍了机器人的自主移动实现,那么可不可以将二者结合,实现机器人自主移动的SLAM建图呢?
上述需求是可行的。虽然可能会有疑问,导航时需要地图信息,之前导航实现时,是通过 map_server 包的 map_server 节点来发布地图信息的,如果不先通过SLAM建图,那么如何发布地图信息呢?SLAM建图过程中本身就会时时发布地图信息,所以无需再使用map_server,SLAM已经发布了话题为 /map 的地图消息了,且导航需要定位模块,SLAM本身也是可以实现定位的。
该过程实现比较简单,步骤如下:
编写launch文件,集成SLAM与move_base相关节点
执行launch文件并测试
实现步骤
编写launc文件
<launch>
<!-- 包含slam文件 -->
<include file ="$(find nav_demo)/launch/nav_slam_01.launch" />
<!-- 包含movebase文件 -->
<include file ="$(find nav_demo)/launch/nav_movebase_test.launch" />
</launch>
运行gazebo仿真环境
然后执行launch文件
在rviz中通过2D Nav Goal设置目标点,机器人开始自主移动并建图
使用 map_server 保存地图