ROS机器人SLAM学习:Gazebo定位与导航仿真
- 一. 在 gazebo 中构建一个用于建图和导航的虚拟环境,可以使用 Building Editor工具创建,也可以使用其他功能包中已有的虚拟环境;将前面作业完成的带传感器的移动机器人(小车)模型放置到虚拟环境中,使用 gmapping 和 hector_slam 功能包实现 SLAM仿真,并将简历完成的地图保存到功能包的 maps 文件夹中,随作业一同提交。
 - 1.用 gmapping 功能包实现 SLAM 仿真
 - 2.使用hector_slam功能包实现 SLAM 仿真
 - 二. 在第一题建立完成的地图上,实现基于 move_base 和 amcl功能包的机器人自主导航仿真。
 - 1. 导航仿真
 - 2. 导航SLAM仿真
 - 3. 自主探索SLAM仿真
 - 三、分析
 
(以下功能包的网盘链接:链接:https://pan.baidu.com/s/15NVx6vmdz20o2YLkecobkg
提取码:geuo)
一. 在 gazebo 中构建一个用于建图和导航的虚拟环境,可以使用 Building Editor工具创建,也可以使用其他功能包中已有的虚拟环境;将前面作业完成的带传感器的移动机器人(小车)模型放置到虚拟环境中,使用 gmapping 和 hector_slam 功能包实现 SLAM仿真,并将简历完成的地图保存到功能包的 maps 文件夹中,随作业一同提交。
1.用 gmapping 功能包实现 SLAM 仿真
(1)下载gmapping
1  | sudo apt-get install ros-kinetic-gmapping  | 
- 配置gmapping节点
 
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-94a97GDS-1586222344794)(media/a7bb8ef6dcf3bb43c74ca0e6aea4b52e.png)]](http://i2.wp.com/img-blog.csdnimg.cn/2020040709224153.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTg1MTA4,size_16,color_FFFFFF,t_70)
- 启动gmapping演示(激光雷达)
 
①运行代码
1 2 3  | source devel/setup.bash roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch  | 
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y4unnwMA-1586222344795)(media/21820bda8d6661fd7b2491e637861a07.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407092800508.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0skNfLJC-1586222344796)(media/0060587b78773d2d7fccd715de0420d8.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407092817859.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTg1MTA4,size_16,color_FFFFFF,t_70)
②打开RVIZ查看
1 2 3  | source devel/setup.bash roslaunch mbot_anvigation gmapping_demo.launch  | 
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UFV2wTTH-1586222344796)(media/d8bb082c22d7903ea7aba8a0567a2162.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407092845884.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-48W3fwAK-1586222344796)(media/cfd0a947e8d85f5817cf04e48be50524.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407092851397.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTg1MTA4,size_16,color_FFFFFF,t_70)
③打开键盘控制节点
1 2 3  | source devel/setup.bash roslaunch mbot_teleop mbot_teleop.launch  | 
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ubOFifJE-1586222344797)(media/e2afaa1e0bf38caf303e802dc5dadbb1.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407092919788.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IUdBrYP9-1586222344797)(media/a479cbbcd7907ba5f754b0d5d9b2a28a.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407092929974.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTg1MTA4,size_16,color_FFFFFF,t_70)
控制小车的移动,观察到的画面如下
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ee1mtawU-1586222344797)(media/ceb1e4fbebca99587cf16c6d13852e7c.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407092942500.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTg1MTA4,size_16,color_FFFFFF,t_70)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IgVHbf52-1586222344798)(media/808fbf69a2a1a76228d23143d9e4322e.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407092949756.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTg1MTA4,size_16,color_FFFFFF,t_70)
④保存地图
1  | rosrun map_server map_saver -f cloister_gmapping3  | 
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f75I3iFb-1586222344798)(media/8951f9c73fc57bc66e748b0bb8292611.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407093008799.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTg1MTA4,size_16,color_FFFFFF,t_70)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d526rn6l-1586222344798)(media/e0e42d335d5c8a724e3d684fa03c9821.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407093013983.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTg1MTA4,size_16,color_FFFFFF,t_70)
保存的地图如下

2.使用hector_slam功能包实现 SLAM 仿真
(1)下载hector_slam
1  | sudo apt-get install ros-kinetic-hector-slam  | 
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sjxMXj6n-1586222344802)(media/df000e237b583b526e20dd0402d98261.png)]](http://i2.wp.com/img-blog.csdnimg.cn/2020040709325152.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTg1MTA4,size_16,color_FFFFFF,t_70)
(2)配置hector_mapping节点
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2wGZgYvz-1586222344802)(media/60f70e2bbf1ab87d6f93648420c1112e.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407093329261.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTg1MTA4,size_16,color_FFFFFF,t_70)
(3) 启动hector_slam演示
①运行代码
1 2 3  | source devel/setup.bash roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch  | 
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8UY5YQjq-1586222344802)(media/6dbf197535a01a9149c95662d9531934.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407093358372.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-05s9XPlB-1586222344802)(media/9738cea516150837f6e4c3a2ad0d69c2.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407093402373.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTg1MTA4,size_16,color_FFFFFF,t_70)
②运行代码
1 2 3  | source devel/setup.bash roslaunch mbot_navigation hector_demo.launch  | 
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p6UPvrm9-1586222344802)(media/4432f7b18cc031c4f2e0a1b25b414331.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407093416411.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iJNAi7Zw-1586222344803)(media/75cc9903e5038685d64bacc266316d23.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407093422121.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTg1MTA4,size_16,color_FFFFFF,t_70)
③打开键盘控制节点
1 2 3  | source devel/setup.bash roslaunch mbot_teleop mbot_teleop.launch  | 
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BtJCwlkS-1586222344803)(media/e2afaa1e0bf38caf303e802dc5dadbb1.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407093433881.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ghdt03pd-1586222344803)(media/a479cbbcd7907ba5f754b0d5d9b2a28a.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407093439243.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTg1MTA4,size_16,color_FFFFFF,t_70)
由于机器人的速度加快,发生了打滑现象
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CrpA2z33-1586222344803)(media/09da5774c69d022f8078e293c8c4d4fd.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407093447574.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTg1MTA4,size_16,color_FFFFFF,t_70)
④保存地图
1  | rosrun map_server map_saver -f cloister_gmapping4  | 
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H1E3JmEO-1586222344804)(media/fa40f25df75665877bedb7ad54718bcc.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407093505442.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7FNNudFY-1586222344804)(media/3ae88469b8223a0fd26533206947c4f7.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407093510419.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTg1MTA4,size_16,color_FFFFFF,t_70)
二. 在第一题建立完成的地图上,实现基于 move_base 和 amcl功能包的机器人自主导航仿真。
1. 导航仿真
1 2  | source devel/setup.bash roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch  | 
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gkZXaKg9-1586222344804)(media/56a35c746de30f598d3fb3cb5f5c0541.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407093626871.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTg1MTA4,size_16,color_FFFFFF,t_70)
1 2  | source devel/setup.bash roslaunch mbot_navigation nav_cloister_demo.launch  | 
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RWRT2OtO-1586222344804)(media/817da31f172ae2064c47ca4c33a4c35d.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407093646490.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTg1MTA4,size_16,color_FFFFFF,t_70)
点击2D Naw Goal,使小车自己运动
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jLGai9Qt-1586222344804)(media/6f18ae68a5a7ac94354f8b9c1ad9ccd8.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407093653570.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTg1MTA4,size_16,color_FFFFFF,t_70)
2. 导航SLAM仿真
运行代码:
1 2  | source devel/setup.bash roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch  | 
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5vhw1uM6-1586222344806)(media/de58e47ad7b0324d24cd72df697ecc1f.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407093740771.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTg1MTA4,size_16,color_FFFFFF,t_70)
运行代码:
1 2  | source devel/setup.bash roslaunch mbot_navigation exploring_slam_demo.launch  | 
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5M9jIC5Q-1586222344806)(media/7dc8d682db51ac90bd5db4e2d1452589.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407093757738.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTg1MTA4,size_16,color_FFFFFF,t_70)
点击2D Naw Goal,使小车自己运动
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rtiPTFwD-1586222344806)(media/4fe2b6f29a031956695c603903f3c221.png)]](http://i2.wp.com/img-blog.csdnimg.cn/2020040709380625.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTg1MTA4,size_16,color_FFFFFF,t_70)
3. 自主探索SLAM仿真
新建终端运行:
1 2  | source devel/setup.bash roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch  | 
新建终端运行:
1 2  | source devel/setup.bash roslaunch mbot_navigation exploring_slam_demo.launch  | 
新建终端运行:
1 2  | source devel/setup.bash rosrun mbot_navigation exploring_slam.py  | 
小车自己在缓缓运动:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3KJK1rjV-1586222344806)(media/c121f62494b545c9bf1fcaa830da2ec9.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407093918272.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTg1MTA4,size_16,color_FFFFFF,t_70)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GG3SG2Wr-1586222344806)(media/4476ec1f1250cee46f0bf150a901681b.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407093923276.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTg1MTA4,size_16,color_FFFFFF,t_70)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UM0U1oLQ-1586222344807)(media/d3884f31a3dc46c5fec3f2d3c14f1e34.png)]](http://i2.wp.com/img-blog.csdnimg.cn/20200407093928796.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTg1MTA4,size_16,color_FFFFFF,t_70)
三、分析
在用gmapping中对比,激光雷达和Kinetic,激光雷达的仿真时无死角的360°可以观小车的动向,而Kinetic只能观察到60°左右的范围,而且用激光雷达的仿真比Kinetic的仿真数据更加精确。
用hector_slam仿真时,当小车速度加快是,会出现打滑现象,因此,解决办法:降低小车的移动速度。
基于move_base 和 amcl功能包的机器人自主导航仿真时,成功的对小车自己走且遇到障碍物,会绕行,缺点:移动速度太缓慢。
参考资料:
1) 课件和网上教学视频
2) https://www.jianshu.com/p/fb91063a9fd7,“ROS:基于 gazebo 仿真运行 SLAM
而且用激光雷达的仿真比Kinetic的仿真数据更加精确。