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节点
- 启动gmapping演示(激光雷达)
①运行代码
1 2 3 | source devel/setup.bash roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch |
②打开RVIZ查看
1 2 3 | source devel/setup.bash roslaunch mbot_anvigation gmapping_demo.launch |
③打开键盘控制节点
1 2 3 | source devel/setup.bash roslaunch mbot_teleop mbot_teleop.launch |
控制小车的移动,观察到的画面如下
④保存地图
1 | rosrun map_server map_saver -f cloister_gmapping3 |
保存的地图如下
2.使用hector_slam功能包实现 SLAM 仿真
(1)下载hector_slam
1 | sudo apt-get install ros-kinetic-hector-slam |
(2)配置hector_mapping节点
(3) 启动hector_slam演示
①运行代码
1 2 3 | source devel/setup.bash roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch |
②运行代码
1 2 3 | source devel/setup.bash roslaunch mbot_navigation hector_demo.launch |
③打开键盘控制节点
1 2 3 | source devel/setup.bash roslaunch mbot_teleop mbot_teleop.launch |
由于机器人的速度加快,发生了打滑现象
④保存地图
1 | rosrun map_server map_saver -f cloister_gmapping4 |
二. 在第一题建立完成的地图上,实现基于 move_base 和 amcl功能包的机器人自主导航仿真。
1. 导航仿真
1 2 | source devel/setup.bash roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch |
1 2 | source devel/setup.bash roslaunch mbot_navigation nav_cloister_demo.launch |
点击2D Naw Goal,使小车自己运动
2. 导航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 |
点击2D Naw Goal,使小车自己运动
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 |
小车自己在缓缓运动:
三、分析
在用gmapping中对比,激光雷达和Kinetic,激光雷达的仿真时无死角的360°可以观小车的动向,而Kinetic只能观察到60°左右的范围,而且用激光雷达的仿真比Kinetic的仿真数据更加精确。
用hector_slam仿真时,当小车速度加快是,会出现打滑现象,因此,解决办法:降低小车的移动速度。
基于move_base 和 amcl功能包的机器人自主导航仿真时,成功的对小车自己走且遇到障碍物,会绕行,缺点:移动速度太缓慢。
参考资料:
1) 课件和网上教学视频
2) https://www.jianshu.com/p/fb91063a9fd7,“ROS:基于 gazebo 仿真运行 SLAM
而且用激光雷达的仿真比Kinetic的仿真数据更加精确。