首页 > ROS开发 > 探索无人车:SLAM自主建图技术。
2020
10-09

探索无人车:SLAM自主建图技术。

有一天,我会放开双手,任由汽车带着我遨游山河。

有一天,我会放松身心,透过车窗去看这美丽景色。

无人驾驶,随着科技的不断进步倍受关注,它不再是一个遥不可及的设想,也不再是只有在科幻片里才能看到的景象。它已经开始慢慢进入人们的生活。

image.png


我曾向你提及无人驾驶技术(驰骋在科技之海,无人驾驶也可一往无前。),我相信,你已经有了初步了解,但是,仅仅初步的了解远远无法满足你对无人驾驶的求知欲。



所以,今天,我决定向你介绍无人驾驶的一些技术,以便你更好、更深入的了解无人驾驶。


我们要说的,是无人驾驶车涉及的技术之一——SLAM自主建图技术

SLAM自主建图 · 技术


(对道路路面信息、障碍物进行数据建模,生成高精度地图。)



了解SLAM自主建图技术的第一步,就要先明白,它能够构建的地图分为几种类型

按地图类型分类

1、栅格图(grid maps):将地图分为m*n的栅格,每个栅格内的数值代表是否被占用。

2、地标图(landmark-based maps):基于地标建图,已知某些标志物在地图中的确定位置。


按建图原理分类

1、占用图(occupancy maps):对于每个栅格单元,代表是否被占用。

2、反射图(reflection maps):对于每个单元,表示传感器束反射的概率。



构建 · 地图

在了解了SLAM自主建图技术都可以构建哪些类型的地图之后,我们就要开始研究它构建地图方面的一些知识。



建图原理
根据运动模型获取机器人的移动路径;根据传感器模型获取移动路径上周边环境的信息,两者匹配起来得到完整地图。


image.png


SLAM难点


由于机器人的移动路径与周边环境的信息都是未知的,且移动路径的误差随着机器人的移动而不断累积;当环境信息是之前已经检测到并构建到地图中时,将该信息作为地标来修正机器人的移动路径信息,使机器人的移动路径的误差收敛。


算法流程(基于扩展卡尔曼滤波EKF)
①预测机器人状态:基于运动模型,预测机器人当前位置状态。
②预测测量量:基于①得到的预测位置,预测应该得到哪些测量量。
③测量:测量当前真实环境信息。
④数据融合:利用EKF将②、③中的信息融合。
⑤更新机器人状态:根据④的结果,更新机器人位置状态,收敛误差。
⑥更新地图:根据④、⑤,更新地图数据。


算法介绍

建图开始时,将机器人当前位置设为已知的起始点,此时建立一个3x1的向量Xk,一个3x3的矩阵Ck。Xk代表已知点,Ck代表已知点之间的关系。


image.png

随着机器人的移动及环境信息的输入,将更新的地标信息m1、m2、...添加到Xk、Ck中。

image.png


矩阵Ck中,对角线Cr、Cm1、Cm2、...Cmn代表不同的地标信息,其他元素代表对应行、列上地标信息的位置关系。比如Cm1m2代表Cm1地标与Cm2地标的位置关系。


闭环检测:当机器人又回到已经识别的区域时,通过重新审视已经映射的区域,可以减少机器人和地标估计的不确定性。

其中一种方法是,当环境信息真实测量值与原有测量值的差小于某一设定阈值,认为这两点是重合的,并据此重新更新机器人当前位置;当该差值大于设定阈值,认为是新的地图信息并添加到地图中。

在上述Ck矩阵中,当机器人再次检测到Cm2地标,则会根据新的测量值修正Ck矩阵的中Cm2所在的行、列元素的值,代表Cm2与其他所有地标的相对位置关系发生了变化。

建图 · 算法

接下来要给大家介绍的,是几种SLAM自主建图的建图算法。


1. hector-slam
要求: 高更新频率、小测量噪声的激光扫描仪,不需要里程计,可手持建图。

image.png

2. gmapping-slam: tutorial

目前激光2Dslam用得最广的方法,gmapping采用的是RBPF的方法,优点是定位准确,但需要完整的硬件平台。

image.png

3. karto_slam

karto_slam是基于图优化的方法,用高度优化和非迭代cholesky矩阵进行稀疏系统解耦作为解。图优化方法利用图的均值表示地图,每个节点表示机器人轨迹的一个位置点和传感器测量数据集,箭头的指向的连接表示连续机器人位置点的运动,每个新节点加入,地图就会依据空间中的节点箭头的约束进行计算更新。


karto_slam的ROS版本,其中采用的稀疏点调整(the Spare Pose Adjustment(SPA))与扫描匹配和闭环检测相关。landmark越多,内存需求越大,然而图优化方式相比其他方法在大环境下制图优势更大.在某些情况下karto_slam更有效,因为他仅包含点的图(robot pose),求得位置后再求map。


4. core_slam

core_slam是为了更加简单容易地理解性能损失最小化的一种slam算法。将算法简化为距离计算与地图更新的两个过程, 第一步,每次扫描输入,用基于简单的粒子滤波算法来计算距离,粒子滤波的匹配器用于激光与地图的匹配,每个滤波器粒子代表机器人可能的位置和相应的概率权重,这些都依赖之前的迭代计算。选择好最好的假设分布,即低权重粒子消失,新粒子生成。在更新步骤,扫描得到的线加入地图中,当障碍出现时,围绕障碍点绘制调整点集,而非仅一个孤立点。


看完上述关于SLAM自主建图技术的讲解,有没有感觉对无人驾驶汽车的了解更进一步呢?


虽然无人驾驶还没有完全普及到我们的生活当中,但是,目前无人驾驶的发展速度可谓是突飞猛进,相信在未来的某一天,无人驾驶将会普及到生活中,给人们带来更大的便利。

想要获取更多人工智能方面的知识,请关注我们。

智能佳媒体平台.jpg


本文》有 0 条评论

留下一个回复