自动驾驶是怎样工作的?SLAM介绍
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动驾驶是怎样工作的?SLAM介绍相关的知识,希望对你有一定的参考价值。
参考技术ASLAM是机器人或车辆建立当前环境的全局地图并使用该地图在任何时间点导航或推断其位置的过程。
SLAM常用于自主导航,特别是在GPS无信号或不熟悉的地区的导航。本文中我们将车辆或机器人称为“实体”。实体的传感器会实时获得周围环境的信息,并对信息进行分析然后做出决策。
SLAM是一种时间模型,它的目标是从复杂的信息中计算出一系列状态,包括预期环境,距离,以及根据之前的状态和信息得出的路径 。有许多种状态,例如,Rosales和Sclaroff(1999)使用状态作为行人边界框的3D位置来跟踪他们的移动。Davison 等人(2017)使用单目相机的相机位置,相机的4D方向,速度和角速度以及一组3D点作为导航状态。
SLAM一般包含两个步骤,预测和测量。为了准确表示导航系统,SLAM需要在状态之间以及状态和测量之间进行学习。SLAM最常用的学习方法称为 卡尔曼滤波 。
卡尔曼滤波是一种用于状态估计的贝叶斯滤波类型。它是一种递归算法,作为系统中不确定性的函数,使预测可以随着时间的推移进行校正。不确定性表示为当前状态估计和先前测量之间的权重,称为卡尔曼增益。该算法将实体先前的状态,观测和控制输入以及当前的观测和控制输入作为输入。过滤器包括两个步骤:预测和测量。预测过程使用运动模型,可以根据给定的先前位置和当前的输入估计当前位置。测量校正过程使用观察模型,该模型基于估计的状态,当前和历史观察以及不确定性来对当前状态进行最终估计。
第一步涉及了时间模型,该模型基于先前的状态和一些噪声生成预测。
公式1. 预测模型。μ表示状态的平均变化向量。ψ是状态数量的矩阵,将当前状态与先前的平均值相关联。ε是转换噪声,可以确定当前状态与前一个状态的紧密相关程度。
第二步是“校正”预测。传感器收集自主导航的测量值。有两类传感器:外传感器器和内传感器(proprioceptive)。外传感器从外部环境中收集信息,包括声纳,距离激光,相机和GPS。在SLAM中,这些是观察值。内传感器利用编码器,加速度计和陀螺仪等设备收集系统内部信息,如速度,位置,变化和加速度。在SLAM中,这些是单元控制,传感器结果输入到实体中进行计算。这些传感器各有利弊,但相互组合可以产生非常有效的反馈系统。
公式2. μₘ表示测量平均向量。Φ是状态数量的将测量的平均值与当前状态相关联。εₘ是测量噪声,通常以协方差Σₘ分布。
卡尔曼增益增强了测量的可信性。例如,如果相机失焦,我们就不会对拍摄内容的质量报太大期望。卡尔曼增益较小意味着测量对预测的贡献很小并且不可靠,而卡尔曼增益较大则正好相反。
公式 3.卡尔曼增益计算,Σ₊是预测的协方差。
更新过程如下:
公式4. 使用卡尔曼增益的卡尔曼滤波学习过程。图片来自Simon JD Prince(2012)。
虽然这种方法非常有用,但它还存在一些问题。卡尔曼滤波假定单模态分布可以用线性函数表示。解决线性问题的两种方法是扩展卡尔曼滤波器(EFK)和无迹卡尔曼滤波器(UFK)。EFK使用泰勒展开来逼近线性关系,而UFK使用一组质量点近似表示正态,这些质量点具有与原始分布相同的均值和协方差。一旦确定了质量点,算法就通过非线性函数传递质量点以创建一组新的样本,然后将预测分布设置为正态分布,均值和协方差等效于变换点。
由卡尔曼滤波强加的单模分布假设意味着不能表示其他状态假设。粒子滤波是解决这些问题的常用方法。
粒子滤波允许通过空间中的粒子来表示多个假设,高维度需要更多粒子。每个粒子都被赋予一个权重,该权重表示其所代表的状态假设中的置信度。预测从原始加权粒子的采样开始,并从该分布中采样预测状态。测量校正根据粒子与观测数据的一致程度(数据关联任务)来调整权重。最后一步是对结果权重进行归一化,使总和为1,因此它们是0到1的概率分布。
因为粒子的数量可以不断增多,因此对该算法的改进集中在如何降低采样的复杂性。重要性采样和Rao-Blackwellization分区是常用的两种方法。
下图来自Fuentes-Pacheco, J., Ruiz-Ascencio, J., & Rendón-Mancha, J. M. (2012)的论文“Visual simultaneous localization and mapping: a survey”,总结了到2010年的SLAM中的一些方法。他们的研究分为几个方面。核心方案是使用学习算法,其中一些在上文讨论过。地图的类型是捕获环境几何属性的度量图,或者是描述不同位置之间的连接的拓扑图。
在线跟踪中最常用的功能是显著特征和标记。标记是在环境中由3D位置和外观描述的区域(Frintrop和Jensfelt,2008)。显著特征是由2D位置和外观描述的图像区域。深度学习技术通常用于在每个时间点描述并检测这些显着特征,以向系统添加更多信息。检测是识别环境中的显著元素的过程,描述是将对象转换为特征向量的过程。
应用SLAM的方案有两种,一种是回环检测(loop closure),另一种是“机器人绑架(kidnapped robot)”。回环检测是识别已经访问过的任意长度的循环偏移,“机器人绑架”不使用先前的信息去映射环境。
SLAM是自主导航中常用的状态时间建模的框架。它主要基于概率原理,对状态和测量的后验和先验概率分布以及两者之间的关系进行推断。这种方法的主要挑战是计算复杂。状态越多,测量越多,计算量越大,在准确性和复杂性之间进行权衡。
[1] Fuentes-Pacheco, J., Ruiz-Ascencio, J., & Rendón-Mancha, J. M. (2012). Visual simultaneous localization and mapping: a survey. Artificial Intelligence Review, 43(1), 55–81. https://doi.org/10.1007/s10462-012-9365-8
[2] Durrant-Whyte, H., & Bailey, T. (2006). Simultaneous localization and mapping: Part I. IEEE Robotics and Automation Magazine, 13(2), 99–108. https://doi.org/10.1109/MRA.2006.1638022
[3] T. Bailey and H. Durrant-Whyte (2006). “Simultaneous localization and mapping (SLAM): part II,” in IEEE Robotics & Automation Magazine, vol. 13, no. 3, pp. 108–117. doi: 10.1109/MRA.2006.1678144
[4] Simon J. D. Prince (2012). Computer Vision: Models, Learning and Inference. Cambridge University Press.
[5] Murali, V., Chiu, H., & Jan, C. V. (2018). Utilizing Semantic Visual Landmarks for Precise Vehicle Navigation.
[6] Seymour, Z., Sikka, K., Chiu, H.-P., Samarasekera, S., & Kumar, R. (2019). Semantically-Aware Attentive Neural Embeddings for Long-Term 2D Visual Localization. (1).
[7] Fuentes-Pacheco, J., Ruiz-Ascencio, J., & Rendón-Mancha, J. M. (2012). Visual simultaneous localization and mapping: a survey. Artificial Intelligence Review, 43(1), 55–81. https://doi.org/10.1007/s10462-012-9365-8
自动驾驶中的SLAM
二十余年来,同时定位与建图(Simultaneous Localization And Mapping,SLAM)在移动机器人技术社区中一直是一个非常受欢迎的话题。SLAM有很多应用,例如空间探索和自动驾驶等。近几年来,在汽车制造商的参与下,对智能汽车的关注进一步推动了SLAM的研究工作。
全球导航卫星系统(Global Navigation Satellite System,GNSS)可用来解决定位问题,但并不充分,即使使用定位完美的基站,经典GNSS解决方案的精度有所提高,可用性也仍然是一个问题。这是因为卫星信号受到难以预测的大气条件的影响。此外,基础设施可能会阻止信号的直接接收,并产生多径干扰或非视距接收,这会对所提供的位置产生灾难性的影响。同时,这种信号衰减很难检测,通常会导致其不完整性,并难以恢复。这些问题,在高层建筑区域或者密集城市地区更为常见。而在开阔的道路上,GNSS通常会表现较好。
自动驾驶定位的另一种经典方法是利用道路基础设施(如道路标记或道路检测设备)来引导车辆驶入车道。高级驾驶辅助系统(Advanced Driving Assistance System,ADAS)已在商用汽车中集成了车道标记检测算法。尽管这种方法主要限制了车辆的横向位置,但是对于容易识别道路的环境(如高速公路)已经足够。然而,在复杂的环境(主要是城市的交叉路口、弯曲的道路等)中,其还不能提供足够的道路信息来进行车辆定位。此外,汽车沿纵向轴线行驶所需的位置精度更加重要,通常需要冗余的定位信息,以构建安全的系统,并确保汽车在行进中的行为一致。因此,自动驾驶应考虑不同的定位方式。
通常,车辆定位是执行任何其他感知或规划任务的基本功能。预测道路上的其他障碍物,并选择最合适的操纵方法,需要准确了解车辆自身的位置,以及在随后的几秒钟内它将如何演变。为此,SLAM框架提供了答案,同时仍然保持足够的通用性,可使用任何传感器技术,同时估计车辆位置和地图定位。当把自动驾驶作为一个整体考虑时,地图非常重要,因为它提供了决策所需的第一层感知。
通常,将SLAM问题视为真正实现自动驾驶机器人的关键问题之一。因此,SLAM技术也是自动驾驶汽车的核心技术。然而,很多问题使得SLAM算法无法让车辆在非常不同的条件下行驶数百公里。处理自动驾驶汽车的SLAM,主要面临如下两个主要问题:
定位会随时间漂移。
地图不一定能满足所有驾驶条件。
第一个问题在SLAM社区中众所周知,随着汽车行进距离的增加,SLAM算法给出的定位估计会使汽车偏离真实的轨迹;没有先验知识,甚至不能确保几公里内的正确定位。第二个问题,无论条件如何,都需要具有足以完成定位任务的地图。为了在不同的季节、不同的天气或交通条件下都能定位车辆,目前在建图方面引起了很多关注,研究人员提出了很多解决方案来处理这两个问题。例如,通过选择独特的信息来构建地图,以便在后续工作中重用,或者利用新的通信系统来共享和增强由其他道路使用者构建的地图等。
自动驾驶SLAM的评估标准
虽然可以通过专用的探索方案被成功地应用于室内移动机器人中,但是对于自动驾驶的大规模环境而言,还是不够的。这意味着必须依靠先前的知识(全局或局部信息),或者能够不断地改进所构建的地图,直至达到足够准确为止(如闭环)。因此,在自动驾驶汽车中建图至关重要,并且在如何构建或使用紧凑、可靠的地图方面提出了重要的挑战。
目前,已经确定了如下6个指标来衡量SLAM算法。通常,只有达到这些指标,才能实现自动驾驶。
精度:即车辆定位的精度。无论是在世界坐标系中,还是相对于现有地图而言,在理想情况下,精度应始终低于阈值(通常在10cm以内)。当然,在前进方向上,纵向定位可能不太准确,但这不会产生严重后果。
可扩展性:即车辆处理大规模自动驾驶的能力。在固定的时间和内存容量下,SLAM算法应能正常工作,这意味着需要使用地图管理器来加载地图数据。另外,所构建的或者所使用的地图必须很小,以便很容易地将此方法推广到长距离行驶中。
可用性:是指SLAM算法若能准确、及时地提供定位所需的精度,则可将其用于自动驾驶中。换言之,无须通过算法,即可构建环境地图,这意味着该方法能利用现有的地图资源(或者更广泛地整合全局地图信息)。
故障恢复:是指在大型地图中定位车辆的能力。最初,车辆不知道自己在何处,并且大多数时间需要专门的过程来大致了解其在地图中的位置。这也是从故障(被绑架的机器人问题)中进行恢复的一种方法。
可更新性:是指SLAM算法能识别地图和当前观测值之间的变化。SLAM算法应具有更新策略,能集成这些不断变化的地图。长期的自动驾驶,需要地图更新的自动化机制。
动态性:是指SLAM算法如何处理动态环境和变化,包括可能影响定位估计的动态障碍物,它应考虑可能随季节而变化的天气条件(如树木掉叶子等)。须知,长期SLAM的挑战之一,是寻找足够有区别的特征或方法来应对这些变化。
自动驾驶中的SLAM
从上面论述的在自动驾驶中对SLAM算法的要求可见,必须构建更好的地图,因此,在度量和拓扑级别都需要有环境表示和识别。为了更详细地了解如何将SLAM应用于自动驾驶中,可以将目前的研究工作大致分为如下3类。
回环检测,用于识别先前映射的地图位置,这是SLAM的重要组成部分,因为它可以校正地图,并使地图具有一致性。此算法通常用于在其环境中重新定位车辆,从而帮助进行故障恢复。
在先前构建的地图中进行定位。从理论上讲,每一种SLAM方法都可以重用其建立的地图,这里重点关注如何长期重复利用已构建的地图。
着重于利用现有地图的定位方法。对于每一种方法都会进行简要的介绍,并说明如何满足先前提及的指标,以及简要讨论所面临的挑战。
本文节选自《自动驾驶算法与芯片设计》一书,更多精彩内容欢迎阅读本书!
这本书详细介绍自动驾驶算法、软件和芯片设计各个环节
凝聚作者10余年高通、华为、谷歌的理论和实战经验
每个章节都能挖掘出潜在的自动驾驶产品和服务
以上是关于自动驾驶是怎样工作的?SLAM介绍的主要内容,如果未能解决你的问题,请参考以下文章