ROS学习【13】-----学习使用ROS中SLAM功能包中的gmapping及hector_slam,完成带激光雷达机器人的室内的导航仿真,并保存机器人创建的地图(pgm)

ROS学习【13】-----使用ROS中SLAM功能包中的gmapping及hector_slam,完成雷达机器人的导航图仿真目录

  • 一、利用gazebo进行室内封闭环境的创建
    • 1、打开gazebo,进行室内封闭环境规划
    • 2、保存创建完成的室内环境的word文件
  • 二、将SLAM工程包导入ROS工作空间
    • 1、将如下链接的SLAM工程包下载到本地文件夹
    • 2、将SLAM工程包传输到ubuntu上面的ROS工作空间
    • 3、下载gmapping
    • 4、下载hector_slam
    • 5、下载地图服务功能包
    • 6、进行文件编译
    • 7、进行程序注册
  • 三、运行室内封闭环境仿真导航模型
    • 1、在终端输入如下命令,运行室内封闭环境模型
    • 2、运行结果如下:
    • 3、新建终端,输入以下命令,运行[gmapping]机器人导航图
    • 4、新建终端,将[gmapping]导航图下载到指定位置
    • 5、关闭运行[gmapping]的终端及运行的Rviz,然后新建终端,输入以下命令,运行[hector_slam]机器人导航图
    • 6、下载[hector_slam]机器人仿真导航图到指定位置

前面我们学习到利用gazebo进行环境模型的搭建,但大家要明白,模型的代建只是为了测试仿真机器人的人工智能性,这也是学习ROS中机器人仿真重要的步骤;让机器人动起来的第一步,就是为他规划行动路线,那么这个可以用ROS中的SLAM功能包中的gmapping来进行实现哦!
本次博客,我们主要利用SLAM功能包中gmapping功能,来进行我们雷达机器人的室内导航图规划,并将室内环境导航图保存到本地

一、利用gazebo进行室内封闭环境的创建

1、打开gazebo,进行室内封闭环境规划

1)、打开gazebo,进行室内封闭环境的仿真搭建,如下所示:
ROS学习【13】-----学习使用ROS中SLAM功能包中的gmapping及hector_slam,完成带激光雷达机器人的室内的导航仿真,并保存机器人创建的地图(pgm)_第1张图片
2)、将模型保存为myhouse2,然后关闭gazebo
ROS学习【13】-----学习使用ROS中SLAM功能包中的gmapping及hector_slam,完成带激光雷达机器人的室内的导航仿真,并保存机器人创建的地图(pgm)_第2张图片

2、保存创建完成的室内环境的word文件

1)、运行mbot_gazebo功能包下面的[view_mbot_with_laser_gazebo.launch]文件

roslaunch mbot_gazebo view_mbot_with_laser_gazebo.launch 

ROS学习【13】-----学习使用ROS中SLAM功能包中的gmapping及hector_slam,完成带激光雷达机器人的室内的导航仿真,并保存机器人创建的地图(pgm)_第3张图片
2)、删除多余的障碍物,只保留小车模型
ROS学习【13】-----学习使用ROS中SLAM功能包中的gmapping及hector_slam,完成带激光雷达机器人的室内的导航仿真,并保存机器人创建的地图(pgm)_第4张图片
3)、点击inert,选择刚刚的模型myhouse1,拖到右边的相应位置,如下所示:
ROS学习【13】-----学习使用ROS中SLAM功能包中的gmapping及hector_slam,完成带激光雷达机器人的室内的导航仿真,并保存机器人创建的地图(pgm)_第5张图片
4)、保存word文件到mbot_gazebo下的worlds文件夹中去,命名为:cloister.world
ROS学习【13】-----学习使用ROS中SLAM功能包中的gmapping及hector_slam,完成带激光雷达机器人的室内的导航仿真,并保存机器人创建的地图(pgm)_第6张图片
5)、修改mbot_gazebo功能包launch文件夹下面的[view_mbot_with_laser_gazebo.launch]文件内容:
ROS学习【13】-----学习使用ROS中SLAM功能包中的gmapping及hector_slam,完成带激光雷达机器人的室内的导航仿真,并保存机器人创建的地图(pgm)_第7张图片
将文件中的world改为我们刚刚保存的word,然后点击保存、关闭!

二、将SLAM工程包导入ROS工作空间

1、将如下链接的SLAM工程包下载到本地文件夹

在这里插入图片描述
下载链接如下所示:
https://download.csdn.net/download/qq_42451251/12289534

2、将SLAM工程包传输到ubuntu上面的ROS工作空间

通过文件传输软件FileZilla该功能包的传输!
ROS学习【13】-----学习使用ROS中SLAM功能包中的gmapping及hector_slam,完成带激光雷达机器人的室内的导航仿真,并保存机器人创建的地图(pgm)_第8张图片

3、下载gmapping

1)、打开终端,下载gmapping导航仿真包

sudo aptitude install ros-kinetic-gmapping

在出现的界面中选择y,然后输入shi即可进行下载
ROS学习【13】-----学习使用ROS中SLAM功能包中的gmapping及hector_slam,完成带激光雷达机器人的室内的导航仿真,并保存机器人创建的地图(pgm)_第9张图片
建议用aptitude下载器,该下载器会帮你分析依赖、卸载掉不用的版本,没有改下载器的可以使用如下命令下载:

sudo apt-get install aptitude

4、下载hector_slam

1)、打开终端,下载hector_slam导航仿真包

sudo aptitude install ros-kinetic-hector-slam

在出现的界面中选择y,然后输入shi即可进行下载
ROS学习【13】-----学习使用ROS中SLAM功能包中的gmapping及hector_slam,完成带激光雷达机器人的室内的导航仿真,并保存机器人创建的地图(pgm)_第10张图片
ROS学习【13】-----学习使用ROS中SLAM功能包中的gmapping及hector_slam,完成带激光雷达机器人的室内的导航仿真,并保存机器人创建的地图(pgm)_第11张图片

5、下载地图服务功能包

1)、下载命令如下:

sudo aptitude install ros-kinetic-map-server

2)、如下所示:
ROS学习【13】-----学习使用ROS中SLAM功能包中的gmapping及hector_slam,完成带激光雷达机器人的室内的导航仿真,并保存机器人创建的地图(pgm)_第12张图片

6、进行文件编译

1)、进入ROS空间

cd ~/ros

2)、进行文件编译:

catkin_make

3)、编译过程中可能会遇到如下错误:
ROS学习【13】-----学习使用ROS中SLAM功能包中的gmapping及hector_slam,完成带激光雷达机器人的室内的导航仿真,并保存机器人创建的地图(pgm)_第13张图片
该问题是缺少箭头处的相应包,我们可以在终端进行下载,如下所示:

sudo aptitude install ros-kinetic-move-base-msgs

ROS学习【13】-----学习使用ROS中SLAM功能包中的gmapping及hector_slam,完成带激光雷达机器人的室内的导航仿真,并保存机器人创建的地图(pgm)_第14张图片
林君学长的已经安装过,所以是如上界面,没有安装的等待安装就好,选择y,然后输入shi

7、进行程序注册

1)、在编译完成之后进行程序注册

source devel/setup.bash

建议将该程序注册命令写入 .bashrc文件尾,就不用每次打开终端就需要再次进行程序注册了

三、运行室内封闭环境仿真导航模型

1、在终端输入如下命令,运行室内封闭环境模型

roslaunch mbot_gazebo  view_mbot_with_laser_gazebo.launch 

2、运行结果如下:

ROS学习【13】-----学习使用ROS中SLAM功能包中的gmapping及hector_slam,完成带激光雷达机器人的室内的导航仿真,并保存机器人创建的地图(pgm)_第15张图片

3、新建终端,输入以下命令,运行[gmapping]机器人导航图

1)、进入ros空间

cd ~/ros

2)、程序注册

source devel/setup.bash

3)、运行gmapping机器人雷达导航图

roslaunch mbot_navigation gmapping_demo.launch

4)、[gmapping]机器人雷达导航地图运行结果如下所示
ROS学习【13】-----学习使用ROS中SLAM功能包中的gmapping及hector_slam,完成带激光雷达机器人的室内的导航仿真,并保存机器人创建的地图(pgm)_第16张图片

4、新建终端,将[gmapping]导航图下载到指定位置

1)、进入ros空间

cd ~/ros

2)、程序注册

source devel/setup.bash

3)、下载gmapping机器人仿真导航图到指定位置

rosrun map_server map_saver -f /home/chenlin/lenovo/map

ROS学习【13】-----学习使用ROS中SLAM功能包中的gmapping及hector_slam,完成带激光雷达机器人的室内的导航仿真,并保存机器人创建的地图(pgm)_第17张图片
4)、在对应文件路径下查看该地图:
ROS学习【13】-----学习使用ROS中SLAM功能包中的gmapping及hector_slam,完成带激光雷达机器人的室内的导航仿真,并保存机器人创建的地图(pgm)_第18张图片
5)、与导航模型地图对比如下,一模一样
ROS学习【13】-----学习使用ROS中SLAM功能包中的gmapping及hector_slam,完成带激光雷达机器人的室内的导航仿真,并保存机器人创建的地图(pgm)_第19张图片

5、关闭运行[gmapping]的终端及运行的Rviz,然后新建终端,输入以下命令,运行[hector_slam]机器人导航图

1)、进入ros空间

cd ~/ros

2)、程序注册

source devel/setup.bash

3)、运行hector_slam机器人雷达导航图

roslaunch mbot_navigation hector_demo.launch

4)、[hector_slam]机器人雷达导航地图运行结果如下所示
ROS学习【13】-----学习使用ROS中SLAM功能包中的gmapping及hector_slam,完成带激光雷达机器人的室内的导航仿真,并保存机器人创建的地图(pgm)_第20张图片
4)、运行键盘文件,进行机器人运动,如下所示:

roslaunch mbot_teleop mbot_teleop.launch

在这里插入图片描述

可以看到,当把键盘移动速度调快之后,地图出现打滑的问题,所以,控制合适的键盘速度是关键哦!

6、下载[hector_slam]机器人仿真导航图到指定位置

1)、在刚刚下载导航图的终端,输入以下命令,下载hector_slam机器人仿真导航图到指定位置

rosrun map_server map_saver -f /home/chenlin/lenovo/map1

ROS学习【13】-----学习使用ROS中SLAM功能包中的gmapping及hector_slam,完成带激光雷达机器人的室内的导航仿真,并保存机器人创建的地图(pgm)_第21张图片
2)、在对应文件路径下查看该地图:
ROS学习【13】-----学习使用ROS中SLAM功能包中的gmapping及hector_slam,完成带激光雷达机器人的室内的导航仿真,并保存机器人创建的地图(pgm)_第22张图片
ROS学习【13】-----学习使用ROS中SLAM功能包中的gmapping及hector_slam,完成带激光雷达机器人的室内的导航仿真,并保存机器人创建的地图(pgm)_第23张图片
3)、与导航模型地图对比如下,一模一样:
在这里插入图片描述
以上就是本次博客的全部内容啦,希望小伙伴对本次博客的观看,可以了解ROS中SLAM包的使用哦,知道如何规划gazebo仿真机器人的导航模型图;遇到问题的小伙伴记得评论区进行留言,林君学长看到会为大家解答的,这个学长不太冷!
陈一月的又一天编程岁月^ _ ^

你可能感兴趣的:(嵌入式开发项目学习)