1)在gazebo中构建一个用于建图和导航的虚拟环境,可以使用Building Editor工具创建,也可以使用其他功能包中已有的虚拟环境;将前面作业完成的带传感器的移动机器人(小车)模型放置到虚拟环境中,使用gmapping 和 hector_slam功能包实现SLAM仿真,并将简历完成的地图保存到功能包的maps文件夹中,随作业一同提交。
①首先使用gmapping将要执行的launch文件中内容修改成自己建立的虚拟环境
②然后就可以执行教材上的命令,之后在gazebo就出现了自己的虚拟环境和rviz上的地图
③执行移动命令后可以对机器人进行控制,绕地图一周,配置好地图。大概的地图情况如下图
④然后保存地图,最开始我的虚拟机里没有map_server,所以出现了找不到这个包的情况
⑤然后我就通过以下命令下载了map_server
⑥下载成功后就可以运行保存地图的命令了
⑦完成后会有两个文件保存在根目录下,分别是yaml文件和pgm文件
⑧可以看到pgm是形成的地图,而yaml是一些参数
我们可以通过画图软件来对pgm进行操作,比如在某个地方加上黑线,实际上就是在虚拟环境中加上一堵墙,这里就不展示了。
我们再用 hector_slam功能包来制作地图
1.首先下载hector_slam功能包
2.然后打开gazebo
3.再打开rviz通过hector_slam构建地图
4.启动控制机器人移动的程序开始控制机器人
5.可以看到因为我控制机器人的速度快,然后还有多处旋转,所以得到的地图和本身的有很大差异
但是还是同样的保存下来
6.同样在根目录可以看到yaml和pgm文件
7.查看这两个文件内容
2)在第一题建立完成的地图上,实现基于move_base和amcl功能包的机器人自主导航仿真。
①首先下载move_base包
②下载完成后可以进行导航仿真,打开上一题创建好的地图,在打开之前需要修改一些内容,修改mbot_laser_nav_gazebo.launch中的一个内容,把如图的地方修改成自己保存的yaml文件。
在修改之前要记得把之前保存的yaml文件和pgm文件转到mbot_navigation文件夹下的maps文件夹,否则修改之后会报错。
③然后就打开这个launch文件
④这里我们可以点击rviz的2d new goal来让机器人移动
⑤下面开始实现机器人的自主导航仿真
因为我之前建立的模型有两个封闭环境,还有一个门,在执行py文件的时候选择的点有时候会很难到达,所以我重新建立了一个模型来实现自主导航仿真,建议刚开始不要用很复杂的环境。
然后同样的把mbot_laser_nav_gazebo.launch文件的world改为新创建的world名字,
⑥然后打开rviz
⑦最后打开可以控制机器人移动的py文件
⑧可以看到rviz上机器人开始根据py文件的数据前往一个个点
最后形成一个比较完整的地图
⑨然后保存地图
⑩同样在根目录下可以看到两个文件
⑪然后查看这两个文件
可以看到自主导航的结果和我们之前自己操作的结果差不多。
在用hector_slam功能包来构建地图的时候,因为机器人的速度比较快,然后还在移动的同时多处旋转,所以造成地图有很大的差异,所以我个人认为还是gmapping比较好。然后在自主导航仿真这一部分,我发现程序在设置点,机器人前往这些点的路线是最优路线。并没有考虑障碍物,然后在行进的过程中发现有障碍物,会反应一段时间再进行改变,然后最开始因为我构建的模型是两个封闭环境,内部的那个封闭环境有门可以进出,最开始机器人是在内部的环境中,然后程序设置的第一个点在两个封闭环境的过道中的话,机器人就找不到那个门出去,就一直卡在哪里。 所以我建议最开始的时候还是建立一个简单的模型会有利于实验的进行。
如果觉得《ROS机器人SLAM学习:Gazebo定位与导航自主仿真》对你有帮助,请点赞、收藏,并留下你的观点哦!