ROS的SLAM学习:地图扫描与导航仿真

首先启动gazebo,ctrl+B启动gazebo自带的building模式,构建自己的模型

然后将模型文件命名,然后保存到目录下(默认的是home目录)
ROS的SLAM学习:地图扫描与导航仿真_第1张图片
之后将世界命名,然后保存到mbot_gazebo的worlds文件夹下
ROS的SLAM学习:地图扫描与导航仿真_第2张图片
并修改mbot_gazebo中你需要用到的机器人模型的launch文件,将原有的参数,替换成自己的(如果这个方法不行,可以不用在创建完模型之后再改参数。可以先修改参数,然后运行launch文件,他会默认成为一个空的模型文件,之后再进行环境搭建,保存为你参数设置的名称)
ROS的SLAM学习:地图扫描与导航仿真_第3张图片
执行mbot_laser_nav_gazebo.launch文件

  1. 首先进入工作空间
  2. 命令行输入
source  ./devel/setup.bash
  1. 运行launch文件
roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch

ROS的SLAM学习:地图扫描与导航仿真_第4张图片
再开一个终端启动gmapping_demo.launch

roslaunch mbot_navigation gmapping_demo.launch

如果没有安装gmapping,可以执行以下命令进行安装:(以kinetic为例)

sudo apt-get install ros-kinetic-gmapping

执行成功之后会打开rviz界面:
ROS的SLAM学习:地图扫描与导航仿真_第5张图片
再开一个终端启动mbot_teleop.launch,通过键盘控制小车

roslaunch mbot_teleop mbot_teleop.launch

ROS的SLAM学习:地图扫描与导航仿真_第6张图片
将整个封闭空间全部扫描完后,rviz界面图像如下:
ROS的SLAM学习:地图扫描与导航仿真_第7张图片
如果要保存地图的话,可以执行如下命令:(name是你自己命名的,如果要进行导航的话则需要保存地图)

rosrun map_server map_saver -f name

上面就是整个gmapping的整个过程,接下来是hector_slam

关闭之前的rviz界面,并打开终端Ctrl+C终止进程,避免再打开时卡住,然后运行hector_slam

roslaunch mbot_navigation hector_demo.launch

ROS的SLAM学习:地图扫描与导航仿真_第8张图片
再开一个终端启动mbot_teleop.launch,通过键盘控制小车,与上述步骤一样。
ROS的SLAM学习:地图扫描与导航仿真_第9张图片
将整个封闭空间全部扫描完后,rviz中图像如下:
ROS的SLAM学习:地图扫描与导航仿真_第10张图片
保存之后的图片如下:
ROS的SLAM学习:地图扫描与导航仿真_第11张图片
接下来就是自主导航

导航之前需要修改一下参数设置,所以需要将之前的gazebo关闭

将mbot_navigation/launch文件中的nav_cloister_demo.launch文件的地图配置参数修改为:
ROS的SLAM学习:地图扫描与导航仿真_第12张图片
终端启动运行mbot_laser_nav_gazebo.launch

之后再开一个终端输入roslaunch mbot_navigation nav_cloister_demo.launch会得到下图
ROS的SLAM学习:地图扫描与导航仿真_第13张图片
然后可以使用2D Nav Coat确立目标点,小车会自动前往该处
ROS的SLAM学习:地图扫描与导航仿真_第14张图片

你可能感兴趣的:(嵌入式)