ROS機器人SLAM學習:Gazebo定位與導航仿真

(以下功能包的網盤鏈接:鏈接:https://pan.baidu.com/s/15NVx6vmdz20o2YLkecobkg
提取碼:geuo)

一. 在 gazebo 中構建一個用於建圖和導航的虛擬環境,可以使用 Building Editor工具創建,也可以使用其他功能包中已有的虛擬環境;將前面作業完成的帶傳感器的移動機器人(小車)模型放置到虛擬環境中,使用 gmapping 和 hector_slam 功能包實現 SLAM仿真,並將簡歷完成的地圖保存到功能包的 maps 文件夾中,隨作業一同提交。

1.用 gmapping 功能包實現 SLAM 仿真

(1)下載gmapping

sudo apt-get install ros-kinetic-gmapping
  1. 配置gmapping節點

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-94a97GDS-1586222344794)(media/a7bb8ef6dcf3bb43c74ca0e6aea4b52e.png)]

  1. 啓動gmapping演示(激光雷達)

①運行代碼

source devel/setup.bash

roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Y4unnwMA-1586222344795)(media/21820bda8d6661fd7b2491e637861a07.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-0skNfLJC-1586222344796)(media/0060587b78773d2d7fccd715de0420d8.png)]

②打開RVIZ查看

source devel/setup.bash

roslaunch mbot_anvigation gmapping_demo.launch

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-UFV2wTTH-1586222344796)(media/d8bb082c22d7903ea7aba8a0567a2162.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-48W3fwAK-1586222344796)(media/cfd0a947e8d85f5817cf04e48be50524.png)]

③打開鍵盤控制節點

source devel/setup.bash

roslaunch mbot_teleop mbot_teleop.launch

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ubOFifJE-1586222344797)(media/e2afaa1e0bf38caf303e802dc5dadbb1.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-IUdBrYP9-1586222344797)(media/a479cbbcd7907ba5f754b0d5d9b2a28a.png)]

控制小車的移動,觀察到的畫面如下

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Ee1mtawU-1586222344797)(media/ceb1e4fbebca99587cf16c6d13852e7c.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-IgVHbf52-1586222344798)(media/808fbf69a2a1a76228d23143d9e4322e.png)]

④保存地圖

rosrun map_server map_saver -f cloister_gmapping3

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-f75I3iFb-1586222344798)(media/8951f9c73fc57bc66e748b0bb8292611.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-d526rn6l-1586222344798)(media/e0e42d335d5c8a724e3d684fa03c9821.png)]
保存的地圖如下
在這裏插入圖片描述

2.使用hector_slam功能包實現 SLAM 仿真

(1)下載hector_slam

sudo apt-get install ros-kinetic-hector-slam

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-sjxMXj6n-1586222344802)(media/df000e237b583b526e20dd0402d98261.png)]

(2)配置hector_mapping節點

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-2wGZgYvz-1586222344802)(media/60f70e2bbf1ab87d6f93648420c1112e.png)]

(3) 啓動hector_slam演示

①運行代碼

source devel/setup.bash

roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-8UY5YQjq-1586222344802)(media/6dbf197535a01a9149c95662d9531934.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-05s9XPlB-1586222344802)(media/9738cea516150837f6e4c3a2ad0d69c2.png)]

②運行代碼

source devel/setup.bash

roslaunch mbot_navigation hector_demo.launch

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-p6UPvrm9-1586222344802)(media/4432f7b18cc031c4f2e0a1b25b414331.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-iJNAi7Zw-1586222344803)(media/75cc9903e5038685d64bacc266316d23.png)]

③打開鍵盤控制節點

source devel/setup.bash

roslaunch mbot_teleop mbot_teleop.launch

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-BtJCwlkS-1586222344803)(media/e2afaa1e0bf38caf303e802dc5dadbb1.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Ghdt03pd-1586222344803)(media/a479cbbcd7907ba5f754b0d5d9b2a28a.png)]

由於機器人的速度加快,發生了打滑現象

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-CrpA2z33-1586222344803)(media/09da5774c69d022f8078e293c8c4d4fd.png)]

④保存地圖

rosrun map_server map_saver -f cloister_gmapping4

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-H1E3JmEO-1586222344804)(media/fa40f25df75665877bedb7ad54718bcc.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-7FNNudFY-1586222344804)(media/3ae88469b8223a0fd26533206947c4f7.png)]

二. 在第一題建立完成的地圖上,實現基於 move_base 和 amcl功能包的機器人自主導航仿真。

1. 導航仿真

source devel/setup.bash
roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-gkZXaKg9-1586222344804)(media/56a35c746de30f598d3fb3cb5f5c0541.png)]

source devel/setup.bash
roslaunch mbot_navigation nav_cloister_demo.launch

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-RWRT2OtO-1586222344804)(media/817da31f172ae2064c47ca4c33a4c35d.png)]

點擊2D Naw Goal,使小車自己運動

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-jLGai9Qt-1586222344804)(media/6f18ae68a5a7ac94354f8b9c1ad9ccd8.png)]

2. 導航SLAM仿真

運行代碼:

source devel/setup.bash
roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-5vhw1uM6-1586222344806)(media/de58e47ad7b0324d24cd72df697ecc1f.png)]

運行代碼:

source devel/setup.bash
roslaunch mbot_navigation exploring_slam_demo.launch

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-5M9jIC5Q-1586222344806)(media/7dc8d682db51ac90bd5db4e2d1452589.png)]

點擊2D Naw Goal,使小車自己運動

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-rtiPTFwD-1586222344806)(media/4fe2b6f29a031956695c603903f3c221.png)]

3. 自主探索SLAM仿真

新建終端運行:

source devel/setup.bash
roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch

新建終端運行:

source devel/setup.bash
roslaunch mbot_navigation exploring_slam_demo.launch

新建終端運行:

source devel/setup.bash
rosrun mbot_navigation exploring_slam.py

小車自己在緩緩運動:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-3KJK1rjV-1586222344806)(media/c121f62494b545c9bf1fcaa830da2ec9.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-GG3SG2Wr-1586222344806)(media/4476ec1f1250cee46f0bf150a901681b.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-UM0U1oLQ-1586222344807)(media/d3884f31a3dc46c5fec3f2d3c14f1e34.png)]

三、分析

在用gmapping中對比,激光雷達和Kinetic,激光雷達的仿真時無死角的360°可以觀小車的動向,而Kinetic只能觀察到60°左右的範圍,而且用激光雷達的仿真比Kinetic的仿真數據更加精確。

用hector_slam仿真時,當小車速度加快是,會出現打滑現象,因此,解決辦法:降低小車的移動速度。

基於move_base 和 amcl功能包的機器人自主導航仿真時,成功的對小車自己走且遇到障礙物,會繞行,缺點:移動速度太緩慢。

參考資料:

1) 課件和網上教學視頻

2) https://www.jianshu.com/p/fb91063a9fd7,“ROS:基於 gazebo 仿真運行 SLAM
而且用激光雷達的仿真比Kinetic的仿真數據更加精確。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章