使用Turtlebot3 在Gazebo仿真环境下,分别使用Cartographer,Gmapping和Hector三种SLAM算法建图

使用Turtlebot3 在Gazebo仿真环境下,分别使用Hector,Gmapping和Cartographer 三种SLAM算法建图

  • 安装ROS
    • 按照官方文档安装
    • 一键安装
  • 下载Turtlebot3包,编译并配置环境
  • 安装Cartographer,Gmapping,Hector三种SLAM算法并在Gazebo中仿真建图
    • 安装Cartographer,Gmapping,Hector三种SLAM
    • 在Gazebo中仿真建图
  • Cartographer,Gmapping,Hector三种SLAM算法在Gazebo中仿真建图比较
  • 参考文献

安装ROS

之前在树莓派4B上安装了Ubuntu18.04,现在需要装上ROS,下面提供两种方法安装ROS melodic。

按照官方文档安装

直接参考官方文档进行安装 http://wiki.ros.org/cn/melodic/Installation/Ubuntu。
注意安装推荐的完整版ROS,一步一步安装即可,如遇到些小问题,网上搜下都能解决。

一键安装

在命令窗口直接输入鱼香ROS提供的一键安装工具

wget http://fishros.com/install -O fishros && . fishros

输入密码后就进入以下界面
使用Turtlebot3 在Gazebo仿真环境下,分别使用Cartographer,Gmapping和Hector三种SLAM算法建图_第1张图片
鱼香ROS的这个一键安装真是懒人的福音,能省去很多工作和解决很多问题。

下载Turtlebot3包,编译并配置环境

  1. 进入ROS工作空间下的src文件夹
cd ~/catkin_ws/src/
  1. 下载Turtlebot3源码并编译
git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
git clone https://github.com/ROBOTIS-GIT/turtlebot3.git
git clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
cd ..
catkin_make

3.设置环境变量

echo "export TURTLEBOT3_MODEL=burger" >> ~/.bashrc 
source ~/.bashrc

4.安装依赖包

sudo apt-get install ros-melodic-joy ros-melodic-teleop-twist-joy ros-melodic-teleop-twist-keyboard ros-melodic-laser-proc ros-melodic-rgbd-launch ros-melodic-depthimage-to-laserscan ros-melodic-rosserial-arduino ros-melodic-rosserial-python ros-melodic-rosserial-server ros-melodic-rosserial-client ros-melodic-rosserial-msgs ros-melodic-amcl ros-melodic-map-server ros-melodic-move-base ros-melodic-urdf ros-melodic-xacro ros-melodic-compressed-image-transport ros-melodic-rqt-image-view ros-melodic-gmapping ros-melodic-navigation ros-melodic-interactive-markers 

安装Cartographer,Gmapping,Hector三种SLAM算法并在Gazebo中仿真建图

安装Cartographer,Gmapping,Hector三种SLAM

  1. 安装Cartographer
    参考大神文章 cartographer探秘第一章之安装编译与参数配置,每次安装都是如此舒心。

  2. 安装Gmapping, 直接安装Gmapping工具包

sudo apt install ros-melodic-gmapping    
  1. 安装Hector, 直接安装Hector工具包
sudo apt-get install ros- melodic-hector-slam      

在Gazebo中仿真建图

1.用Cartographer SLAM算法仿真建图
 a)修改launch文件
catkin_ws/src/turtlebot3/turtlebot3_slam/launch/turtlebot3_cartographer.launch文件中,把configuration_basename 更改为turtlebot3_lds_2d_gazebo.lua
使用Turtlebot3 在Gazebo仿真环境下,分别使用Cartographer,Gmapping和Hector三种SLAM算法建图_第2张图片
b)打开Gazebo仿真环境
在一个命令行窗口输入

cd ~/catkin_ws/
source devel/setup.bash
roslaunch turtlebot3_gazebo turtlebot3_world.launch  

使用Turtlebot3 在Gazebo仿真环境下,分别使用Cartographer,Gmapping和Hector三种SLAM算法建图_第3张图片

c)使用Cartographer算法建图
重新开一个命令窗口,调用Cartographer算法建图

cd ~/catkin_ws/
source devel/setup.bash
roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=cartographer 

使用Turtlebot3 在Gazebo仿真环境下,分别使用Cartographer,Gmapping和Hector三种SLAM算法建图_第4张图片
d)使用键盘来控制turtlebot3运动
重新打开一个命令行窗口,运行以下命令调用键盘控制turtlebot3运动。

cd ~/catkin_ws/
source devel/setup.bash
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

使用Turtlebot3 在Gazebo仿真环境下,分别使用Cartographer,Gmapping和Hector三种SLAM算法建图_第5张图片

直至建图完成。
e)保存地图
打开一个新的命令行窗口,输入以下命令保存地图

rosrun map_server map_saver -f ~/map

2.用Gmapping SLAM算法仿真建图
a)打开Gazebo仿真环境
在一个命令行窗口输入

cd ~/catkin_ws/
source devel/setup.bash
roslaunch turtlebot3_gazebo turtlebot3_world.launch  

使用Turtlebot3 在Gazebo仿真环境下,分别使用Cartographer,Gmapping和Hector三种SLAM算法建图_第6张图片

b)使用Gmapping算法建图
重新开一个命令窗口,使用以下命令进行Gmapping建图

cd ~/catkin_ws/
source devel/setup.bash
roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping

使用Turtlebot3 在Gazebo仿真环境下,分别使用Cartographer,Gmapping和Hector三种SLAM算法建图_第7张图片
c)使用键盘来控制turtlebot3运动
新开一个命令行窗口,运行以下命令调用键盘控制turtlebot3运动。

cd ~/catkin_ws/
source devel/setup.bash
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

使用Turtlebot3 在Gazebo仿真环境下,分别使用Cartographer,Gmapping和Hector三种SLAM算法建图_第8张图片

直至建图完成。
d)保存地图
新开一个命令行窗口,输入以下命令

rosrun map_server map_saver -f ~/map

2.用Hector SLAM算法仿真建图
a)打开Gazebo仿真环境
在一个命令行窗口输入

cd ~/catkin_ws/
source devel/setup.bash
roslaunch turtlebot3_gazebo turtlebot3_world.launch  

使用Turtlebot3 在Gazebo仿真环境下,分别使用Cartographer,Gmapping和Hector三种SLAM算法建图_第9张图片

b)使用hector算法建图
重新开一个命令窗口,输入以下命令进行Hector建图

cd ~/catkin_ws/
source devel/setup.bash
roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=hector

使用Turtlebot3 在Gazebo仿真环境下,分别使用Cartographer,Gmapping和Hector三种SLAM算法建图_第10张图片

c)使用键盘来控制turtlebot3运动
新开一个命令行窗口,运行以下命令调用键盘控制turtlebot3运动。

cd ~/catkin_ws/
source devel/setup.bash
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

使用Turtlebot3 在Gazebo仿真环境下,分别使用Cartographer,Gmapping和Hector三种SLAM算法建图_第11张图片

直至建图完成。
d)保存地图
新开一个命令行窗口,输入以下命令

rosrun map_server map_saver -f ~/map

Cartographer,Gmapping,Hector三种SLAM算法在Gazebo中仿真建图比较

从左到右依次为Cartographer,Gampping,Hector所建地图
使用Turtlebot3 在Gazebo仿真环境下,分别使用Cartographer,Gmapping和Hector三种SLAM算法建图_第12张图片
以上地图基本都是在线速度0.8,角速度0.1的控制条件下创建出来的,可以看出三种算法基本都能创建出完整地图。
另外试了下加快控制速度,Cartographer和Gampping都能保持较好稳定性并能完整的创建出地图,但Hector在角速度较快的情况下很容易丢失位置,从而产生重影,最终导致不能完整的创建出地图。这可能与该算法没有采用里程计数据,只采用了激光数据建图有关。

最后吐槽一下,树莓派4B上运行Gazebo软件依旧很卡,尽管我也提前下载了所有的Model,但仍旧很慢。看来做Gazebo仿真还是需要在较好的电脑上。

参考文献

ROS官方安装文档
Turtlebot3 Gazebo仿真环境使用Cartographer算法建图
Ubuntu18.04 ROS仿真turtlebot3进行Gmapping,Hector,和cartographer建图
cartographer探秘第一章之安装编译与参数配置

你可能感兴趣的:(ROS,人工智能,经验分享)