ROS机器人SLAM学习:Gazebo定位与导航仿真

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

sudo apt-get install ros-kinetic-gmapping
  1. 配置gmapping节点

ROS机器人SLAM学习:Gazebo定位与导航仿真_第1张图片

  1. 启动gmapping演示(激光雷达)

①运行代码

source devel/setup.bash

roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y4unnwMA-1586222344795)(media/21820bda8d6661fd7b2491e637861a07.png)]

ROS机器人SLAM学习:Gazebo定位与导航仿真_第2张图片

②打开RVIZ查看

source devel/setup.bash

roslaunch mbot_anvigation gmapping_demo.launch

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UFV2wTTH-1586222344796)(media/d8bb082c22d7903ea7aba8a0567a2162.png)]

ROS机器人SLAM学习:Gazebo定位与导航仿真_第3张图片

③打开键盘控制节点

source devel/setup.bash

roslaunch mbot_teleop mbot_teleop.launch

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ubOFifJE-1586222344797)(media/e2afaa1e0bf38caf303e802dc5dadbb1.png)]

ROS机器人SLAM学习:Gazebo定位与导航仿真_第4张图片

控制小车的移动,观察到的画面如下

ROS机器人SLAM学习:Gazebo定位与导航仿真_第5张图片

ROS机器人SLAM学习:Gazebo定位与导航仿真_第6张图片

④保存地图

rosrun map_server map_saver -f cloister_gmapping3

ROS机器人SLAM学习:Gazebo定位与导航仿真_第7张图片

ROS机器人SLAM学习:Gazebo定位与导航仿真_第8张图片
保存的地图如下
ROS机器人SLAM学习:Gazebo定位与导航仿真_第9张图片

2.使用hector_slam功能包实现 SLAM 仿真

(1)下载hector_slam

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

ROS机器人SLAM学习:Gazebo定位与导航仿真_第10张图片

(2)配置hector_mapping节点

ROS机器人SLAM学习:Gazebo定位与导航仿真_第11张图片

(3) 启动hector_slam演示

①运行代码

source devel/setup.bash

roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8UY5YQjq-1586222344802)(media/6dbf197535a01a9149c95662d9531934.png)]

ROS机器人SLAM学习:Gazebo定位与导航仿真_第12张图片

②运行代码

source devel/setup.bash

roslaunch mbot_navigation hector_demo.launch

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p6UPvrm9-1586222344802)(media/4432f7b18cc031c4f2e0a1b25b414331.png)]

ROS机器人SLAM学习:Gazebo定位与导航仿真_第13张图片

③打开键盘控制节点

source devel/setup.bash

roslaunch mbot_teleop mbot_teleop.launch

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BtJCwlkS-1586222344803)(media/e2afaa1e0bf38caf303e802dc5dadbb1.png)]

ROS机器人SLAM学习:Gazebo定位与导航仿真_第14张图片

由于机器人的速度加快,发生了打滑现象

ROS机器人SLAM学习:Gazebo定位与导航仿真_第15张图片

④保存地图

rosrun map_server map_saver -f cloister_gmapping4

ROS机器人SLAM学习:Gazebo定位与导航仿真_第16张图片

ROS机器人SLAM学习:Gazebo定位与导航仿真_第17张图片

二. 在第一题建立完成的地图上,实现基于 move_base 和 amcl功能包的机器人自主导航仿真。

1. 导航仿真

source devel/setup.bash
roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch

ROS机器人SLAM学习:Gazebo定位与导航仿真_第18张图片

source devel/setup.bash
roslaunch mbot_navigation nav_cloister_demo.launch

ROS机器人SLAM学习:Gazebo定位与导航仿真_第19张图片

点击2D Naw Goal,使小车自己运动

ROS机器人SLAM学习:Gazebo定位与导航仿真_第20张图片

2. 导航SLAM仿真

运行代码:

source devel/setup.bash
roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch

ROS机器人SLAM学习:Gazebo定位与导航仿真_第21张图片

运行代码:

source devel/setup.bash
roslaunch mbot_navigation exploring_slam_demo.launch

ROS机器人SLAM学习:Gazebo定位与导航仿真_第22张图片

点击2D Naw Goal,使小车自己运动

ROS机器人SLAM学习:Gazebo定位与导航仿真_第23张图片

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

小车自己在缓缓运动:

ROS机器人SLAM学习:Gazebo定位与导航仿真_第24张图片

ROS机器人SLAM学习:Gazebo定位与导航仿真_第25张图片

ROS机器人SLAM学习:Gazebo定位与导航仿真_第26张图片

三、分析

在用gmapping中对比,激光雷达和Kinetic,激光雷达的仿真时无死角的360°可以观小车的动向,而Kinetic只能观察到60°左右的范围,而且用激光雷达的仿真比Kinetic的仿真数据更加精确。

用hector_slam仿真时,当小车速度加快是,会出现打滑现象,因此,解决办法:降低小车的移动速度。

基于move_base 和 amcl功能包的机器人自主导航仿真时,成功的对小车自己走且遇到障碍物,会绕行,缺点:移动速度太缓慢。

参考资料:

1) 课件和网上教学视频

2) https://www.jianshu.com/p/fb91063a9fd7,“ROS:基于 gazebo 仿真运行 SLAM
而且用激光雷达的仿真比Kinetic的仿真数据更加精确。

你可能感兴趣的:(ROS学习)