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
- 配置gmapping節點
- 啓動gmapping演示(激光雷達)
①運行代碼
source devel/setup.bash
roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch
②打開RVIZ查看
source devel/setup.bash
roslaunch mbot_anvigation gmapping_demo.launch
③打開鍵盤控制節點
source devel/setup.bash
roslaunch mbot_teleop mbot_teleop.launch
控制小車的移動,觀察到的畫面如下
④保存地圖
rosrun map_server map_saver -f cloister_gmapping3
保存的地圖如下
2.使用hector_slam功能包實現 SLAM 仿真
(1)下載hector_slam
sudo apt-get install ros-kinetic-hector-slam
(2)配置hector_mapping節點
(3) 啓動hector_slam演示
①運行代碼
source devel/setup.bash
roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch
②運行代碼
source devel/setup.bash
roslaunch mbot_navigation hector_demo.launch
③打開鍵盤控制節點
source devel/setup.bash
roslaunch mbot_teleop mbot_teleop.launch
由於機器人的速度加快,發生了打滑現象
④保存地圖
rosrun map_server map_saver -f cloister_gmapping4
二. 在第一題建立完成的地圖上,實現基於 move_base 和 amcl功能包的機器人自主導航仿真。
1. 導航仿真
source devel/setup.bash
roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch
source devel/setup.bash
roslaunch mbot_navigation nav_cloister_demo.launch
點擊2D Naw Goal,使小車自己運動
2. 導航SLAM仿真
運行代碼:
source devel/setup.bash
roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch
運行代碼:
source devel/setup.bash
roslaunch mbot_navigation exploring_slam_demo.launch
點擊2D Naw Goal,使小車自己運動
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
小車自己在緩緩運動:
三、分析
在用gmapping中對比,激光雷達和Kinetic,激光雷達的仿真時無死角的360°可以觀小車的動向,而Kinetic只能觀察到60°左右的範圍,而且用激光雷達的仿真比Kinetic的仿真數據更加精確。
用hector_slam仿真時,當小車速度加快是,會出現打滑現象,因此,解決辦法:降低小車的移動速度。
基於move_base 和 amcl功能包的機器人自主導航仿真時,成功的對小車自己走且遇到障礙物,會繞行,缺點:移動速度太緩慢。
參考資料:
1) 課件和網上教學視頻
2) https://www.jianshu.com/p/fb91063a9fd7,“ROS:基於 gazebo 仿真運行 SLAM
而且用激光雷達的仿真比Kinetic的仿真數據更加精確。