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的仿真数据更加精确。