本文最后更新于2020年8月6日,已超过 3 个月没更新!


在进行SLAM算法实践之前,进行各个算法的仿真实验,验证整个机器人系统的可行性,是很有必要的。因此本文主要讲述Cartographer算法、自适应蒙特卡洛定位(AMCL)算法、全局路径规划算法A*和局部路径规划算法DWA的仿真效果。
本次仿真实验环境为:

  • Ubuntu16.04.6
  • ROS Kinetic
  • Gazebo 7.9
  • Rviz

1. 仿真环境

Gazebo是一款3D动态模拟器,能够在复杂的室内和室外环境中准确有效地模拟机器人群。与游戏引擎提供高保真度的视觉模拟类似,Gazebo提供高保真度的物理模拟,其提供一整套传感器模型,以及对用户和程序非常友好的交互方式。
Gazebo仿真环境下搭建实验环境:

2. Cartographer算法仿真

Cartographer是谷歌(Google)于2016年10月推出一种激光SLAM算法, 该算法是目前效果最好的激光SLAM算法,可以根据激光雷达等传感器测量的数据生成分辨率为5cm的实时栅格地图。
其采用基于图优化方法的SLAM理论框架,分为前端和后端两部分:前端主要负责Scan-to-Submap和回环检测,将处理后的激光雷达数据与子图进行匹配,同时当生成个子图且没有新的数据帧插入的时候会进行局部回环检测。子图创建完成后,如果找到了与当前估计位姿最佳的匹配结果,则将其添加到回环约束中。后端主要负责对位姿估计进行优化,采用分支定界和预先计算的网格来实现全局闭环检测。
源码仓库:cartographer
官网提供的ROS集成仓库:cartographer_ros

2.1 仿真效果

Cartographer建图效果如下:

作为对比这里给出gmapping的建图效果:

2.2 计算图

3. 主动SLAM仿真

本主动SLAM主要是利用RRT算法进行机器人在未知环境下的主动探索。
RRT软件包rrt_exploration

最终效果:

3. AMCL定位算法仿真

3.1 仿真效果

下图中每个绿色的点即为概率粒子,代表着一个可能的位姿。通过仿真结果可以看到,在起初粒子相对分散,随着机器人的移动,不断感知环境,所有粒子逐渐收敛于一个准确的位置,这个位置即为机器人在环境中的位姿。

3.2 计算图

4. 路径规划算法仿真

路径规划工程可以大概描述为:
首先基于AMCL算法进行在已知环境地图下的实时定位。之后选定目标点,利用A*全局路径规划算法进行全局路径规划,沿全局规划路径移动过程中,再基于DWA进行局部的路径规划,最终到达目标点。

4.1 仿真效果

设定目标点并进行路径规划:

抵达目标点:

4.2 计算图


Try and fail, but don't fail to try.