3万字带你详细了解自动驾驶车辆的系统架构

admin 2023年2月11日21:37:43评论50 views字数 33073阅读110分14秒阅读模式

点击上方蓝字谈思实验室

获取更多汽车网络安全资讯


自动驾驶汽车的自主系统的架构通常被分为感知系统、决策系统和控制系统。感知系统通常被划分为许多子系统,负责自动驾驶汽车定位、静态障碍物绘制、移动障碍物检测和跟踪、道路映射、交通信号检测和识别等任务。决策系统通常也被划分为许多子系统,负责路线规划、路径规划、运动规划控制等任务。底盘控制系统主要包括线控驱动、线控制动、线控转向等系统,执行决策与规划系统得出的底盘控制指令。本文详细介绍了有关感知系统和决策系统的各种方法。
图1展示了自动驾驶汽车自动化系统的典型分层架构的框图,其中感知和决策系统显示为不同颜色的模块的集合。感知系统负责使用车载传感器(例如LIDAR,RADAR,摄像机,GPS,IMU,里程表等)捕获的数据来估计汽车的状态创建外部环境的内部(对自动驾驶系统而言)表示,以及有关传感器模型,道路网络,交通规则,汽车动力学等的先验信息。决策系统则负责将汽车从初始出发位置导航到用户定义的最终目的地,在此期间要考虑汽车状态和(感知到的)环境的内部展示,以及交通规则和乘客的舒适度
为了在整个环境中驾驶汽车,决策系统需要知道汽车在哪里。如图1中,定位模块负责估算与环境静态地图相关的汽车状态(姿势,线速度,角速度等)。尽管可以手动注释(即人行横道或交通灯的位置)或编辑(通常需要用于移除传感器捕获的非静态物体),这些静态地图(或离线地图)是在自主操作之前自动计算的,通常使用的是自动驾驶汽车本身的传感器。自动驾驶汽车可以使用一个或多个不同的离线地图(如占据栅格地图,remission地图或地标地图)用于本地离线化。

3万字带你详细了解自动驾驶车辆的系统架构

图1  自动驾驶汽车的典型分层架构
定位模块接收离线地图传感器数据平台的里程表作为输入,并生成自动驾驶汽车状态的输出(图1)。值得注意的是,虽然GPS可能有助于定位过程,但由于高大的树木,建筑物,隧道等造成的干扰,GPS单独在城市环境中的正确定位是不够的,这也使得GPS定位不可靠。
道路绘制模块接收离线地图状态作为输入,并生成在线地图的输出。该在线地图通常是结合离线地图中存在的信息以及使用传感器数据和当前状态在线计算的占据栅格地图
自动驾驶汽车必须识别和遵守水平(车道标记)和垂直(即速度限制,交通信号灯等)交通信号。如图1,TSD(交通信号检测模块)负责交通信号的检测和识别。
路线规划模块是在给定离线地图中定义的最终目的地的情况下,在离线地图中计算从当前状态到最终目标的路线。路径是一系列路径点,其中每个路径点是离线地图中的坐标对。
轨迹规划模块是在给定路径情况下,考虑汽车状态和环境的内部表示以及交通规则,计算出单条路径的多个组合。路径是一系列姿态,其中每个姿势是离线地图中的坐标对,以及在此定义的位置处所需的汽车方向的坐标对。
行为决策模块负责选择当前的驾驶行为,例如车道保持,交叉路口处理,交通灯信号处理等。该模块用来选择在当前状态(决策范围)前几秒钟(大概是5秒时间)在路径中以及此姿势状态下的所需速度姿势和相关的速度组成一对称为Goal,行为决策模块需要在考虑当前的驾驶行为,并避免在决策时间范围内与环境中的静态和移动障碍物发生碰撞下选择一个Goal。
运动规划模块负责计算从当前汽车状态到当前Goal的轨迹,该目标遵循行为决策模块定义的路径,并满足汽车的运动和动态约束,和乘客的舒适感。一个轨迹需要将汽车从当前状态平稳地、安全地带到目标位置。
避障模块接收由运动规划模块计算的轨迹并在必要时更改它(通常降低速度)以避免碰撞。
最后,控制模块接收运动规划模块得到轨迹以及经由避障模块修改后的轨迹(通常是是降低速度),并计算并发送有作用效果的命令到方向盘,油门和制动器的执行器,以使汽车最好地在真实物理环境下修改轨迹
下面是一些有关以上模块形成的方法。


3万字带你详细了解自动驾驶车辆的系统架构

感知系统

在该系统中,包含了汽车定位、静态障碍物绘制、道路映射、移动障碍物跟踪以及交通信号检测和识别几大模块。
1.1汽车定位
定位模块负责估计相对于地图或道路(例如,由路缘或道路标记表示)的自动驾驶汽车姿态(位置和方向)。大多数通用定位子系统都基于GPS的。然而,总的来说,它们不适用于城市自动驾驶汽车,因为GPS信号在闭塞区域无法保证,例如在树下、城市峡谷(被大型建筑物包围的道路)或隧道中。文献中提出了各种不依赖GPS的定位方法。它们主要可分为三类:基于激光雷达的、基于激光雷达加相机的和基于相机的。仅依赖于LIDAR传感器的基于激光雷达的定位方法可提供测量精度得到数据易于处理。然而,尽管LIDAR行业努力降低生产成本,但是其与相机相比仍然具有较高的价格。在典型的LIDAR加上摄像机的定位方法中,LIDAR数据仅用于构建地图,并且通过摄像机数据估计车辆相对于地图的位置。这样的做法降低了成本。基于相机的定位方法便宜且方便,但是这种方法通常不太精确和可靠
1.1.1基于激光雷达的汽车定位
(1)一种在LIDAR激光射线的环境反射率(激光反射网格图,如图2)使用概率分布的离线网格图用来定位的方法。该方法使用了HDL-64E-Velodyne激光雷达并通过无监督校准方法来校准HDL-64E-Velodyne激光束。这使得激光雷达对具有相同亮度的物体的响应类似。使用二维直方图滤波器估计自动驾驶汽车的位置。通常,滤波器由两部分组成:运动更新(或预测):用来减少基于运动的估计的置信度;以及测量更新(或校正):用来增加基于传感器数据的估计的置信度。在运动更新过程中,汽车运动以高斯分布噪声随机“游走”,从通过航位推算坐标系(使用Applanix LV-420导航系统的惯性更新计算)漂移到离线地图的全局坐标系。在测量步骤中,对于不同的位移,它们使用在线计算的反射图与离线计算的反射图之间的相似性。其中,每个位移对应于直方图滤波器中的直方图的一个单元。为了将直方图概括为单个姿势估计,它们使用由直方图建模的概率分布的质心。然而,该方法没有描述他们如何估计方向。该方法显示均方根(RMS)横向误差为9厘米,均方根(RMS)纵向误差为12厘米。

3万字带你详细了解自动驾驶车辆的系统架构

图2  Remission地图
(2)一种蒙特卡洛(MCL)定位方法,该方法将卫星地图与反射得到的地图进行比较。卫星地图从互联网上离线下载,如OpenStreetMap,并且通过LIDAR接受反射强度数据实时构建反射的地图。MCL算法用于通过使用归一化互信息(NMI)度量将反射得到地图与航卫星地图匹配从而来估计汽车姿态以计算粒子可能性。该方法在机器人汽车“IARA”收集的6.5 km数据集上进行评估,并获得0.89 m的位置估计精度。该方法的一个优点是它不需要专门为该方法构建地图。
(3)一种基于道路特征检测的定位方法。他们的路缘检测算法使用环压缩分析最小修剪方块来分析由多层LIDAR(HDL-32E-Velodyne)扫描形成的连续同心测量(或环)之间的距离。道路标记检测算法使用Otsu阈值来分析LIDAR反射强度数据。路缘和道路标记功能存储在网格地图中。蒙特卡洛定位(MCL)算法用于通过将从多层激光雷达测量中提取的道路特征与网格图匹配来估计汽车姿态。该方法在自主车辆“CARINA”上进行了评估,并且显示出横向和纵向定位估计误差小于0.30 m。
(4)一种多层自适应蒙特卡罗定位(ML-AMCL)方法,流程如图3所示,该方法与3D点配准算法结合使用。为了估计汽车姿势,该方法从3D LIDAR测量中提取水平层,并且使用单独的自适应蒙特卡罗方法来对准具有使用3D点配准算法构建的3D点云图的2D投影的层。对于每个姿势估计,执行针对一系列测距测量的一致性检查,并将一致的姿势估计与最终姿势估计融合。该方法在现实世界数据上进行评估,并获得相对于GPS参考的0.25米的位置估计误差。

3万字带你详细了解自动驾驶车辆的系统架构

图3  多层自适应蒙特卡洛定位方法示意图
(5)一种基于蒙特卡罗算法的定位方法,该方法通过2D占据栅格地图和2D离线占据栅格地图之间的地图匹配来校正粒子的姿态,如图4所示。对两个地图匹配距离函数(两个网格图之间的传统似然场的距离的改进版本,以及两个高维向量之间的自适应标准余弦距离)进行了评估。其中在IARA自动驾驶汽车的实验评估表明,定位方法能够使用余弦距离函数在约100Hz下工作,并且横向和纵向误差分别为0.13 m和0.26 m。

3万字带你详细了解自动驾驶车辆的系统架构

图4  占据栅格地图匹配定位方法
(6)一种概率定位方法。该方法将世界建模为高斯混合的多分辨率图(如图5所示)。其中,高斯混合图由多层LIDAR扫描仪(HDL-32E-Velodyne)测量的场景下的高度和反射强度(remission)分布辨识。扩展卡尔曼滤波器(EKF)定位算法用于通过高斯混合多分辨率图3D点云来估计汽车的姿态。该方法在恶劣天气条件下对两辆无人驾驶汽车进行了评估,结果显示了该方法定位估算误差约0.15米。

3万字带你详细了解自动驾驶车辆的系统架构

图5  概率定位方法

1.1.2基于激光雷达加摄像头的汽车定位

一些方法通过使用LIDAR数据来构建地图以及摄像头获取的数据,估计自动驾驶车相对于该地图的位置。
(1)一种将立体图像与3D点云图匹配的定位方法。该地图由地图公司生成(http://www.whatmms.com),地图由几何数据(纬度,经度和高度)以及里程表,RTK-GPS和2D LIDAR扫描仪获得的反射的数据组成。该算法可用于解决使用立体相机的基于三维(3D)点云地图(PCL)的定位问题。该3D点云图由密集的3D几何信息和基于3D光检测和测距(LIDAR)扫描仪的映射系统生成的表面反射率值的强度度量组成。尽管已经提出了一些基于LIDAR的定位算法,但该方法提出了一种使用更便宜的商品立体相机,且精度能达到厘米级的定位算法。具体而言,在每个候选位置,将3D数据点从真实世界坐标系转换到相机坐标系,并从3D PCL地图合成虚拟深度和强度图像。通过将这些虚拟图像立体深度和强度图像相匹配来估计每帧中真实世界和车辆坐标之间的转换,从而定位自我车辆。流程图如下图6所示:

3万字带你详细了解自动驾驶车辆的系统架构

图6  3D点云地图定位

(2)一种将陆地的全景图像与一年中不同季节捕获的卫星图像相匹配自动驾驶汽车定位方法。在该方法中,LIDAR数据被分类为地面和非地面类别。接着,使用LIDAR数据将由自动驾驶车中的全景相机捕获的地面图像分割成地面和非地面区域,然后变换为鸟瞰图。其中,通过使用KMeans聚类方法将卫星图像分割成地面/非地面区域。然后使用蒙特卡罗算法将鸟瞰图像与卫星图像匹配,从而估计姿势。该方法在NavLab11自动驾驶汽车上进行了评估,并实现了3米到4.8米之间的位置估算误差。

1.1.3基于摄像头的汽车定位

在定位方法,有一些方法主要依靠摄像头数据来定位自动驾驶汽车。

(1)一种基于视觉里程计和路线图的定位方法。他们使用OpenStreetMap,从该图中提取所有交叉点和所有可行驶道路(用分段线性段表示),并将它们连接到感兴趣的区域。然后,他们构建了这个路线图的基于图形的表示以及汽车如何遍历该图的概率模型。使用这种概率模型和视觉里程测量,他们估计相对于路线图的汽车位移。

递归贝叶斯过滤算法用于通过利用其结构和汽车运动速度(通过视觉里程计测量)的模型来执行图中的推断。该算法通过增加当前位于汽车最新运动(直线距离以及近期曲线)图的位置点的姿势的可能性以及降低与之不相关点的可能性来精确定位汽车在地图中的位置。
(2)在一些方法中,特征图通过使用相机数据来构建。该方法中描述了自动驾驶汽车Bertha自主驾驶的定位方法。论文开发了一种基于互补视觉的定位技术:基于点特征的定位(PFL)基于车道特征的定位(LFL)。如下图7所示(其中a为点特征,b为车道特征),在PFL(点特征的定位)中,将当前相机的图像同先前进行测绘过程中提取的DIRD描述符中获取的一系列相机图像的图像进行比较。全局位置估计从制图过程中获取图像中的全局位置恢复。在LFL(车道特征的定位)中,半自动计算的地图提供道路标记特征(水平道路信号化)的全局几何表征。通过检测并关联从相机图像的鸟瞰视图提取的道路标记特征与存储在地图中的水平道路信号,将当前相机图像与地图匹配。然后通过卡尔曼滤波器组合由PFL和LFL获得的位置估计。

3万字带你详细了解自动驾驶车辆的系统架构

图7  视觉互补定位方法
(3)另一些方法通过使用相机数据来构建特征图,但还是采用替代类型的特征。如一种在城市场景中使用柱状地标作为主要特征(如下图8所示)的方法,因为柱状地标是独特的、长期稳定的,并且可以通过立体摄像系统可靠地检测到。此外,生成的地图表示是内存高效的,允许轻松存储在线更新。定位由作为主传感器的立体摄像系统实时执行,使用车辆里程计和现成的GPS作为辅助信息源。通过粒子滤波方法进行定位,结合卡尔曼滤波实现鲁棒性和传感器融合

3万字带你详细了解自动驾驶车辆的系统架构

图8  利用柱状地标实现稳定定位
(4)一些方法是使用神经网络来定位自动驾驶汽车。这种方法通过相应的相机图像以及相应的GPS位置。在测绘组中,神经网络构建环境的表征。为此,神经网络算法学习了一系列图像和捕获图像的GPS位置,并将这些图像和位置存储在神经图中。在定位阶段,神经网络使用由神经图提供的先前获得的知识来估计当前观察到的图像的全局位置。这些方法存在仪表尺度误差并且难以在大面积上进行无人驾驶的定位。
VIBML是一种基于神经网络的定位方法,VIBML是基于VG-RAM的基于图像的全局定位方法的扩展。VIBML将全球定位位置跟踪集成到单个解决方案中,以提供平滑可靠的轨迹估计。VIBML包括三个主要子系统:VG-RAM基于图像的映射(VIBM)、VG-RAM图像的全球定位(VIBGL)和VG-RAM位置跟踪(VIBPT)。架构如下图9所示:

3万字带你详细了解自动驾驶车辆的系统架构

图9  基于神经网络的定位
VIBML系统架构:VIBM子系统(红色轮廓)负责映射(它使用VG-RAM来学习由图像、全局姿态和表示一个地方的3D地标集组成的三元组);VIBGL子系统(也呈红色轮廓)负责系统启动和连续全局定位(基本上从VIBM的VG-RAM恢复全局姿态);VIBPT子系统(绿色轮廓)负责校正全局姿态估计,并随着时间的推移跟踪新的姿态
1.2静态障碍物绘制
静态障碍物(为非地图上显示的物体)测绘子系统负责计算得到自动驾驶汽车的环境中的障碍物地图。该子系统是确保无人驾驶车安全地在公共道路上导航而不与障碍物(如,路标、路缘石)碰撞的基础,区分汽车自由(可穿越)空间。障碍物地图则主要表示汽车可能或不能导航的地方的相关信息内容。无人驾驶车在行驶过程中必须始终处于自由空间。障碍图是通过测绘(mapping)期间的传感器数据得到,并存储为结构化信息以便在以后的无人驾驶操作阶段中使用。
状态空间的表征通常区分为拓扑表示度量表示。拓扑表示将状态空间建模为图形,其中通过节点标识重要位置(或特征),并且用边缘表示它们之间的拓扑关系(如位置、方向、接近度和连通性)。这些分解的解决方案取决于环境的结构。度量表示通常将状态空间分解为有规则间隔的单元格。此分解不依赖于要素的位置形状。度量空间分辨率往往高于拓扑空间分辨率。这种多功能性和效率使它们成为最常见的空间表示。
1.2.1离散空间度量表示
(1)状态空间最常见的表现之一是占据栅格图(OGM)。OGM将空间离散为固定大小的单元格,通常为分米级别。每个单元格包含占用与其相关的区域的概率。使用传感器数据为每个单元独立更新占用概率。为了简单和高效的目的,可以将表征障碍物的3D传感器测量投影到2D地平面上。独立性的假设使得OGM算法变得快速而简单。但是,它会生成稀疏状态空间表征,因为只有传感器到达的那些单元格才会更新。
一种在多层表面地图上应用蒙特卡洛定位的方法来表示2D OGM中占用的不同高度范围。该方法是一种新的技术组合,以在户外环境中有效地定位移动机器人。该方法使用粒子过滤器,并将距离测量值与多级曲面图进行匹配。并且提出了概率运动观测模型,并描述了如何在概率定位方案中使用这些模型。此外,其中还提出一种主动定位方法,该方法能够通过仅考虑整个粒子集的聚类子集来有效地确定适当的传感器方向。MLS地图更准确地表示垂直结构,并可以处理机器人可以穿过的多个表面。如下图10所示,其中左图为普通立体图,右图为经过多层表面地图(MLS)。
3万字带你详细了解自动驾驶车辆的系统架构
图10  多层表面地图定位
(2)使用GPS、IMU和LIDAR数据生成高分辨率红外地面图(high-resolution infrared remittance ground map)。该方法将环境建模为概率网格,而不是将其作为固定的红外汇值(infrared remittance values)的空间网格,从而将每个单元表示为其自身在红外汇值(infrared remittance values)上的高斯分布。随后,贝叶斯推断能够优先加权地图中最可能是静止的且具有一致角度反射率的部分,从而减少不确定性和严重的错误。此外,通过使用离线SLAM对齐同一环境的多个通道(可能在时间上相隔几天甚至几个月)。该算法在各种动态环境中根据概率地图定位车辆,验证了该方法的有效性,在10cm范围内实现RMS精度。
构建地图的最终目标是获得观察环境的网格单元表示,其中每个单元存储在该位置观察到的平均红外反射率以及这些值的方差。可分三个步骤生成这样的地图:首先,对所有轨迹进行后处理,以使重叠区域对齐;第二,我们校准每个激光束的强度返回,使光束具有相似的响应曲线;最后,将校准后的激光从对准的轨迹返回到高分辨率概率图中。下图11为不同红外反射率的高分辨率概率图。

3万字带你详细了解自动驾驶车辆的系统架构

图11  不同红外反射率的高分辨率概率图
(3)另一类是基于八叉树的地图。该地图用于存储具有不同3D分辨率的信息(如图12所示)。与具有不同3D分辨率的OGM相比,OctoMaps(基于八叉树的地图)仅存储观察到的空间,因此在存储器消耗方面更有效。然而,OctoMaps以统一和离散的方式处理传感器数据的更新和障碍物占用的估计。因此,它们比具有统一占用率的OGM慢。尽管OctoMaps在内存消耗方面具有显着优势,但是在无人驾驶车的实时场景中,强大的计算复杂性使该方法无法实现。

3万字带你详细了解自动驾驶车辆的系统架构

图12  基于八叉树的地图
1.2.2连续空间度量表示
(1)一种希尔伯特映射的新公式,其中通过逐步融合局部重叠的希尔伯特映射来构造全局占用图。不是为整个地图维护一个单一的监督学习模型,而是用机器人的每一次距离扫描来训练一个新模型,并对机器人感知领域上的所有的点进行查询。该方法将分类器的概率输出视为传感器,使用传感器融合来合并局部地图。该公式允许希尔伯特映射在传感器观测之间重叠的真实世界映射场景中增量使用。该方法应用于三维地图构建,并使用真实和模拟的三维距离数据进行评估。

3万字带你详细了解自动驾驶车辆的系统架构

图13  基于希尔伯特映射的全局占用图
(2)一种通过连续占用映射来表示环境的新技术,该技术在两个基本方面改进了流行的占用夹点图:1)它不假设将世界先验离散为网格单元,因此可以提供任意分辨率的地图;2)它自然地捕捉测量之间的统计关系,因此对异常值更为稳定,并具有更好的泛化性能。该技术名为希尔伯特映射,基于快速核近似的计算,将数据投影到希尔伯特空间,并且在该空间中学习逻辑回归分类器。该方法允许有效的随机梯度优化,其中每个测量在在线学习期间仅处理一次。可得到三种近似的结果,随机傅里叶变换(Random Fourier)、Nyström和一种新的稀疏投影(a novel sparse projection)。该方法还展示了如何扩展该方法以接受概率分布作为输入,即当由于传感器或定位误差导致激光扫描位置存在不确定性时。实验证明了该方法在具有数千次激光扫描的流行基准数据集中的优势。左图:用于训练的数据点。右图:用SVM和Nyström特征绘制的地图。

3万字带你详细了解自动驾驶车辆的系统架构

图14  连续占用映射建图方法
1.3道路绘制
道路映射子系统负责收集自动驾驶汽车周围道路和车道的信息,并在具有几何拓扑属性(包括互连和限制)的地图中表示这些信息。道路绘制子系统的主要是路线图表示拓扑表示
1.3.1地图表示
路线图通常也是分为度量图拓扑图
1.3.1.1度量表示:
道路地图的简单度量表示是通过栅格地图表示。栅格地图是将环境离散化为固定大小的单元的矩阵。其中固定大小矩阵中包含关于是否属于道路的信息以及移动到其相邻区域单元的成本。道路网格地图简单易懂。但是,如果在路线图的大区域内移动成本是均匀的,那么使用网格表示可能需要浪费地存储空间和处理时间。
路径点( waypoints)序列是在大型道路栅格图中压缩路径描述的一种替代方案。路径点指的是沿着道路栅格图中的路径的点。路径点序列可以手动定义或从道路网格地图中自动提取。在于2005年DARPA挑战赛中,提出了路线数据定义文件(RDDF)。RDDF是一个格式化文件,包含路径点坐标和无人驾驶车的运行路径,指定的其他相关信息(纬度、经度、横向边界偏移和航向速度)。
(1)一种路线图用于推断无人驾驶车IARA在城市道路上的车道位置相关属性(栅格地图和RDDF路径),如图15所示。IARA的道路栅格地图包含方形单元格0.2×0.2米。通道的每个单元都被分配上编码。编码从1到16表示了从单元到车道中心的相对距离以及单元中存在的车道标记(损坏、固定或无)的类型。IARA的RDDF路径包含0.5米间隔的航路点,并通过一种算法从道路网格图中自动提取,该算法奖励更靠近车道中心的单元。

3万字带你详细了解自动驾驶车辆的系统架构

图15  道路栅格地图
1.3.1.2拓扑表示
路面图的更复杂的表示是通过拓扑图。拓扑图将环境描绘为图形模型,其中顶点表示位置连线表示位置之间的拓扑关系。拓扑图可以包含更复杂的信息,包括多个车道,车道交叉点和车道合并。
(1)2007年DARPA城市挑战赛中提出了路网描述文件(RNDF),这是一个拓扑图,定义为格式化文件,用来指定无人驾驶车操作的路段。根据该文件,道路网络包括一个或多个段,其中每个段包括一个或多个通道。主要用来表示车道数、街道名称和速度限制。车道用以表示车道宽度、车道标记和一组路径点。车道之间的连接以出口和入口路径点表示。
RNDF定义无人驾驶车辆可以访问的道路信息,其中点的信息包括路点(道路上带有二维坐标信息的点)和特征点(指无人驾驶车辆完成指定比赛任务必须识别的交通信号标志所在的点,这些点可以是位于道路上的路点,也可以是位于路边的点,用三维坐标表示);线的信息包括标志线的宽度、颜色、条数、道路的宽度和车道数;面的信息包括特定的区域(如自由行驶区域和自主泊车区域等)因此,路网文件包含描述路段和描述区域两个方面的信息内容。
路网文件包含一段或多段道路,其中每段道路又包含一条或者多条车道。在路网文件中,“segment”表示与路段有关的信息(如路段名称、路段包含的车道数等),“lane”表示与车道有关的信息(如车道名称、宽度和车道上路点的顺序集合),路点在路网文件中位于车道的内部。路点、车道和路段的表示方法如图16所示,其中红色圆点为路点,并以“M.N.P”表示,其中M、N和P分别表示路段号、车道号和该路点序号,而车道和路段分别以“M.N”和“M”的方式表示。

3万字带你详细了解自动驾驶车辆的系统架构

图16  路网描述
如果两条道路相连,在车道的衔接处分别用“Entry Way Point”和“Exit Way Point”表示车道连接处的入口点出口点。一个出口点可能对应一个或者多个入口点,出口点和入口点可以设定在车道的开始、中间或者末端位置,这取决于实际测试任务的需要。图17表示交叉路口处的一种路点连接情况,其中出口点D在车道2.2的末端,它与入口点A和E(分别位于车道1.1和1.2)相连,表示无人驾驶车辆可以有两个选择;出口点B和F分别位于车道1.2和车道1.1的中间,与车道2.1的入口点C相连。
此外,还有两种特殊情况:1)当一条道路是环形道路时,它的入口点和出口点可能在同一条车道上;2)当遇到一条死路时,这条车道上的最后一个路点可能指向临近车道上的第一个最近的路点,表明无人驾驶车辆须反方向行驶,即执行U-Turn。在路网文件中停止点用“Stop”来描述。如图17所示,相应的路点D附近有一条停止线,它垂直于无人驾驶车辆的行进路线。
3万字带你详细了解自动驾驶车辆的系统架构
图17  T型路口
(2)一种用于从校准的视频图像和移动车辆获取的激光测距数据中检测和估计城市道路网络中多车道特性的系统。该系统在多个处理器上分几个阶段实时运行,将检测到的道路标记、障碍物和路缘融合为附近车道的稳定非参数估计。该系统结合了所提供的分段线性道路网络的元素作为弱先验。
该方法在几个方面都是值得注意的:它检测和估计多条车道;它融合了异步异构的传感器流;它处理高曲率道路;并且它不假设车辆相对于道路的位置方向
寻道方法包括三个阶段。在第一阶段,该系统通过激光雷达的数据,检测并定位每帧视频中所绘制的道路标记,以降低误报率。第二阶段处理道路检测到的车道线以及激光雷达检测到的路缘,来估计附近车道的中心线。最后,在产生一个或多个非参数车道输出之前,对任何检测到的中心线进行滤波、跟踪和融合。该方法的数据流如图所示。

3万字带你详细了解自动驾驶车辆的系统架构

图18  车道线融合
对于每帧视频,根据从实时IMU数据推断的地平面的投影,沿着每行的像素网格对内核进行采样。然后将核与来自每行的图像数据卷积以产生匹配滤波器的输出。当核宽度小于1像素时,卷积计算被抑制。如下图19所示,此操作成功地丢弃了场景中的大部分杂波,并可以对线状特征强烈的响应。这是对垂直和水平内核分别进行的,给出两个输出图像(图19b、c)。
接下来,通过对水平滤波器输出的每一行和垂直滤波器输出的每个列的数值进行迭代,以构建一维局部最大值列表,这些最大值将作为特征。理想情况下,这些最大值出现在所有线的中心。
3万字带你详细了解自动驾驶车辆的系统架构
图19  车道线检测
(2)一种拓扑图表示为OpenStreetMap(OSM),它使用三个基元(即(Nodes)、(Ways)和关系(Relations))用拓扑图对环境进行建模。“点”表示地理点,“路”表示节点列表(折线),“关系”由任意数量的成员组成,这些成员可以是三种类型中的任何一种并具有指定的角色。其他道路属性(如行驶方向和车道数量)作为要素的属性给出。
(3)一个非常详细的拓扑路线图,称为车道片段图(lanelet)。lanelet图内包括道路的几何和拓扑特征,如道路、车道和交叉口。其中使用原子互连的可驱动路段,称为车道片段,如图20所示。车道片段的几何形状由左侧和右侧定义绑定,每一个对应一个点列表(折线)。该特征隐含地定义了每个车道的宽度和形状及其行驶方向。车道片段的邻边由加权有向图构成。在加权有向图中,其中每个车道片段用边和长度表示,其中长度代表着向外标远的权重。其他要素描述了条件限制,如速度限制和交通规则(如交叉和合并权利)。

3万字带你详细了解自动驾驶车辆的系统架构

图20  lanelet地图
(4)高清地图(HD maps)是为无人驾驶汽车提供动力的新一代拓扑地图。高清地图的精度可达到厘米级,并包含丰富的信息,如车道位置、道路边界和道路曲率的信息。由于创建高清地图的成本很高,因此通过使用平台将高清地图作为服务提供。
1.3.2地图创建
创建道路地图的最简单方法是对航空影像中提取的道路形状进行手动注释。然而,大型城市道路网络所需的非常高成本的注释,这可能会使手动注释变得不可行。为此,提出了用于从航拍图像自动生成道路地图的方法。
1.3.2.1手动注释
(1)使用从航拍图像中提取的道路形状的手动注释,以便为自动驾驶汽车创建路线图。获得的局部道路形状是准确的,然而,由于图像分辨率和全球注册,位置全局地理信息并不那么准确。为此,他们的定位方法使用位置过滤处理道路模型中的错误地方。
(2)采用了无人驾驶车Bertha的车道片段地图的所有元素和属性的手动注释。虚拟顶视图图像被用作使用OSM格式和Java OSM编辑器手动注释车道片段图作为基础。
1.3.2.2智能生成
(1)一种使用高阶条件随机场(CRF)通过将图像分割成超像素并添加连接这些超像素的路径来对道路网络的结构进行建模。从航空图像中提取城市道路并对其进行网络结构的概率表示。道路看起来像一个细长的、部分弯曲的结构,形成的一个环状的图形,如下图21所示,这种复杂的布局需要一个超越标准平滑度和共现假设的先验。在所提出的模型中,网络被表示为连接远距离(超)像素的一维路径的并集。通过在前景(道路)可能性中搜索最小成本路径,构建一大组假定的候选路径,使其尽可能包含真实网络。选择候选路径的最优子集被提出为高阶条件随机场中的MAP推断。该方法还导出了一个鲁棒的PN-Potts模型,对于该模型,可以通过图切割有效地找到全局MAP解。用两个道路数据集进行的实验表明,所提出的模型相对于多个基线显著提高了每像素精度以及总体拓扑网络质量。

3万字带你详细了解自动驾驶车辆的系统架构

图21  道路建模
(2)一种使用卷积神经网络(CNN)来获得路段。道路分割的补充任务是从顶视图或前向图像检测车道。使用具有数百万可训练权重的神经网络来检测道路,该网络查看的上下文比之前学习任务时使用的上下文大得多。该网络使用消费级GPU对大量数据进行训练。并且通过使用最近开发的无监督学习方法初始化特征检测器以及利用输出标签的局部空间相关性,可以显著提高预测性能。
(3)一种使用地面栅格地图的方法,结合车辆里程计、GPS和基于传感器的道路模型识别,可获得的位置的精确度可以达到厘米级,如下图22所示。一旦定位在地图中,包含在地图中的先验信息使驾驶策略能够做出关于变道机动和导航的决策,其中一些仅使用基于传感器的道路模型识别方法是不可能的。此外,基于地图的方法增加了鲁棒性和前瞻性,这两个都是考虑到HAD的需求所必需的,因为HAD的驱动程序可能不在循环中。

3万字带你详细了解自动驾驶车辆的系统架构

图22  多传感器融合的地图描述方法
地图主要由两层组成:语义层几何层定位层。语义或几何层包含车道模型几何结构和高级语义信息,如车道连通性,这是路径规划和决策所需的。定位层包含在地图内定位车辆所需的数据。在本项目中,定位层主要由车道标记和道路边界数据组成,这些数据可由传感器检测,然后与GPS和车辆里程计一起用于将车辆匹配到地图上。
使用先验地图,并且用卡尔曼滤波器估计地图中车辆的位置。使用GPS数据和检测到的地标(例如车道标记)更新过滤器,以便持续更新定位假设。车辆的位置也可以使用车辆控制所需的较高速率的里程计数据进行预测
(4)一种使用LIDAR数据来检测车道标记和相机图像,方法中对LiDAR的每个垂直层分别应用了二次拟合。由于车道倾向于平缓的曲线,因此在道路横截面中使用二次方程进行曲线拟合。检测车道时,用于车道标记的独特油漆比路面反射激光的效果要好得多。因此该过程通过仅在视觉系统的脆弱情况下(例如,背光、低光)运行基于摄像头的车道检测技术来减少误报。然后将确认的基于摄像机的车道再次投影到地面上并转换为3D坐标系。车道检测过程的结果如图23所示。

3万字带你详细了解自动驾驶车辆的系统架构

图23  车道检测
(5)一种使用深度神经网络(DNN)来推断自动车辆IARA水平信号差或缺乏的车道的位置和相关属性,如下图24所示。DNN执行将LIDAR的remission栅格地图分段到道路栅格地图,将代码(从1到16)分配到属于车道的地图单元格。这些代码用来表示单元内车道中心的相对距离以及车道标记的类型。通过使用数十公里标记道路车道的数据集来训练DNN,使其达到足以实现IARA实际自动驾驶的准确性。道路分割不直接提供道路地图,但是道路分割定义地图单元是否是道路的一部分。

3万字带你详细了解自动驾驶车辆的系统架构

图24  深度神经网络建图
(6)一种从航空图像自动构建精确道路网络地图的新方法。RoadTracer(航空影像自动生成路网)使用基于CNN的决策函数指导的迭代搜索过程,直接从CNN的输出,导出道路网络图。该方法试图直接从CNN产生路线图,而不是依赖于中间图像表示。并且该方法使用迭代得到的图构建过程,一次添加一个单独的路段,并使用CNN决定要添加的下一个段。
1.4移动障碍物检测与跟踪
移动物体跟踪(MOT)子系统(也称为检测和跟踪多个物体)负责检测和跟踪自动驾驶汽车周围环境中移动障碍物姿态。该子系统对于自动驾驶车辆做出决策并避免与潜在移动物体(例如,其他车辆和行人)碰撞至关重要。移动障碍物随时间的位置通常是根据测距传感器(如激光雷达和雷达)或立体相机捕获的数据来估计的。来自单眼相机的图像有助于提供丰富的外观信息,以确定移动障碍物类型。为了应对传感器测量的不确定性,采用贝叶斯滤波器(例如卡尔曼滤波器和粒子滤波器)进行状态预测,下面是各种移动障碍物的检测与跟踪方法:
1.4.1基于物理的运动模型(Physics-based motion models):
基于物理的运动预测模型认为车辆的运动只取决于物理定律,将车辆表示为受物理定律支配的动态实体。使用一些控制输入(例如转向、加速度)、汽车特性(例如重量)和外部条件(例如路面的摩擦系数)与车辆状态的演变(例如位置、航向、速度)之间的关系,对车辆运动轨迹进行预测。在这种基于物理的车辆运动模型方面已经做了大量的工作,它们仍然是道路安全背景下用于轨迹预测和碰撞风险估计的最常用的运动模型。这些模型或多或少复杂,取决于车辆动力学和运动学的表示的精细程度、如何处理不确定性、是否考虑了道路的几何形状等。
1)预测车辆未来轨迹的一种简单方法是将车辆动力学模型(车辆二,三自由度动力学模型等)运动学模型(CV,CA,CTRV,CTRA等)应用于车辆的当前状态,假设当前状态完全已知,且选择的动力学模型或运动学模型可以将车辆的运动表示出来,然后得到预测的运动,如下图25所示。

3万字带你详细了解自动驾驶车辆的系统架构

图25  轨迹预测
2)基于贝叶斯滤波器的车辆未来轨迹预测最流行的是基于卡尔曼滤波器的车辆轨迹预测,如下图26所示,在预测步骤中,将时间t处的估计状态馈送到车辆动力学模型运动学模型,从而得到时间t+1的预测状态,该预测状态采用高斯分布的形式。在更新步骤中,将时间t+1处的传感器测量值与预测状态组合形成时间t+1的估计状态,该状态的估计也服从高斯分布的。循环预测和更新,可以得到每个未来的时间步的车辆状态的平均值和协方差矩阵,该矩阵可以转换为具有相关不确定性的平均轨迹。而该预测方式因模型的不准确,造成轨迹预测较大的误差,因此出现了切换卡尔曼滤波器(SKF),他们依靠一组卡尔曼滤波器来表示车辆的可能演化的动力学模型或 运动学模型,并在它们之间切换。SKF的另一种选择是根据具体情况使用启发式在不同的运动学模型之间切换。

3万字带你详细了解自动驾驶车辆的系统架构

图26  基于贝叶斯滤波器的轨迹预测
3)基于蒙特卡洛的车辆未来轨迹预测在一般情况下,即当没有对模型的线性或不确定性的高斯性做出假设时,预测状态分布的解析表达式通常是未知的,而蒙特卡罗方法提供了近似这种分布的工具。从模型的输入变量中随机采样,以生成潜在的未来轨迹。为了考虑道路拓扑,将权重应用于基于卡尔曼滤波生成的轨迹预测中,然后得到预测的轨迹,如下图27所示。
3万字带你详细了解自动驾驶车辆的系统架构
图27  基于蒙特卡洛的轨迹预测
局限性:由于它们仅依赖于运动的低级别属性(动力学和运动学属性),基于物理的运动模型仅限于短期(小于一秒)运动预测。通常,他们无法预测由执行特定功能(例如减速、匀速转弯,然后加速以在交叉路口转弯)引起的汽车运动变化,或由外部因素引起的变化(例如由于前方车辆减速)。
1.4.2基于动机的运动模型(Maneuver-based motion models):
基于机动的运动模型将车辆表示为独立的机动实体,即它们假设车辆在道路网络上的运动对应于独立于其他车辆执行的一系列机动。车辆的未来运动取决于驾驶员的意图。将车辆表示为独立的机动实体,即它们假设车辆在路网上的运动对应于独立于其他车辆执行的一系列驾驶员打算执行的操作。如果能够识别驾驶员的机动意图,则可以假设车辆的未来运动将与该机动相匹配。
1.4.2.1基于原型轨迹的运动模型
基于原型轨迹的运动模型的主要思想是将道路网络上车辆的轨迹可以被分组为有限的一组簇,每簇对应于一种典型的运动模式,如下图28所示。运动模式使用原型轨迹表示,原型轨迹是在训练阶段从数据中学习的。之后,通过找到最可能的运动模式并将原型轨迹用作未来运动的模型,可以在给定部分轨迹的情况下在线进行预测。因为道路网络是一个结构化的环境,通常假设可以预先识别运动模式(例如,可以通过识别给定位置处的所有可能机动,从数字地图中提取运动模式)。
3万字带你详细了解自动驾驶车辆的系统架构
图28  轨迹簇示意图
可以通过计算样本轨迹的平均值标准偏差来导出运动模式的随机表示
(1)一种新的基于聚类的技术,该技术使用成对聚类来学习典型的运动模式。文中引入了一个相异性度量,以允许使用任何可以在相异度矩阵上操作的聚类算法。因此,我们获得了对应于不同运动模式的多个簇。然后,我们计算每个簇的平均值,我们将其进一步用于预测部分观测轨迹的运动。
(2)一种基于组合轨迹分类粒子滤波框架的长期预测方法。轨迹由径向基函数(RBF)分类器进行分类,该分类器具有能够处理任意非均匀长度的轨迹的结构。作为轨迹之间相似性的度量,我们引入了基于四元数的旋转不变最长公共子序列(QRLCS)度量。粒子过滤器框架同时跟踪评估大量运动假设,其中RBF分类器估计的类特定概率用作粒子过滤器假设的先验概率。假设用均值移位技术进行聚类,并分配一个似然值。
(3)一种可以增量学习运动模式并与预测并行的方法。基于对隐马尔可夫模型的一种新扩展——称为增长隐马尔可夫模型。
高斯过程(GP)非常适合于表示道路交通背景下的运动模式。GP可以看作是高斯概率分布的推广。他们将过程建模为函数上的高斯分布。当将其应用于车辆轨迹时,假设学习数据集中的轨迹是高斯过程的样本函数。因此,学习包括在这些函数上拟合高斯分布。GP的主要优点是其对观测轨迹中的噪声的鲁棒性(与上述方法相比),和其以一致和概率的方式表示运动模式执行中的变化的能力。
总结:
首先,先得到原型轨迹,从车辆执行的部分轨迹开始,通过将其与学习到的运动模式进行比较,选择最可能的运动模式,并使用原型轨迹作为模型进行预测。然后需要定义度量来测量部分轨迹到运动模式的距离。
当运动模式由高斯过程表示时,通过对轨迹的可能未来进行积分,将距离计算为部分轨迹对应于GP的概率。
当运动模式由有限组原型轨迹表示时,部分轨迹到运动模式的距离通过其与原型轨迹的相似性来测量。已经定义了许多度量来测量两条轨迹之间的相似性,包括轨迹点之间的平均欧几里得距离修正的豪斯多夫(the modified Hausdorff)最长公共子序列(LCS)及其平移和旋转不变版本——基于四元数的旋转不变LCS。计算到每个运动模式的距离后预测未来运动的最简单解决方案是选择最可能的运动模式,并将其用作唯一模型。
考虑运动模式的混合:计算不同运动模式上的概率分布,然后将不同运动模型组合(加权)为一个,或者生成一组具有相关权重的潜在未来轨迹。最近提出的另一种解决方案是使用专家分层混合(HME),其优点是可以处理分类变量(例如转向灯、道路布局类别)
局限性:在很长一段时间里,原型轨迹的主要限制是它们对时间的严格确定性表示。事实上,当使用一组有限的轨迹来表示运动模式时,需要大量的原型来模拟运动模式执行过程中的巨大变化。例如,为了识别涉及停车线等待时间的机动,必须使用硬阈值来识别等待间隔,并在计算两条轨迹之间的距离时忽略它们。对于此类模型来说,处理更细微的速度变化,如交通拥挤引起的速度变化仍然是一个问题。在一定程度上,高斯过程的引入通过允许运动模式的时间无关表示来解决了这个问题。然而,其也有其他限制。除了繁重的计算负担外,它们还缺乏考虑车辆物理限制的能力,因此可能生成不现实的样本轨迹。使用原型轨迹时的另一个困难是它们不适应不同的道路布局,特别是适用于道路交叉口时。因为每个运动模型都是针对特定的交叉几何和进行训练的,因此它只适用于和其类似的交叉口。
1.4.2.2基于机动意图估计的运动模型
匹配驾驶员的机动意图(例如,在停车线等待、跟随另一辆车、执行左转),然后预测连续的物理状态,以便它们对应于所识别机动的可能执行。与轨迹原型相比,一个主要优点是不需要将部分轨迹与先前观察到的轨迹相匹配。相反,提取更高级别的特征并用于识别机动,这使得将学习的模型推广到任意布局更容易.
许多状态可用于对驾驶员的机动意图估计,例如车辆的物理状态(位置、速度、航向、加速度、横摆率、转向信号等)、关于道路网络的信息(道路的几何结构和拓扑结构、速度限制、交通规则等)、驾驶员行为(头部移动、驾驶风格等)。机动意图估计已经被许多工作所研究。本调查侧重于道路交叉口的机动意图估计,但本文介绍的大多数方法可应用于其他交通情况。
环境和试探法可用于确定在一段时间后可能以确定性的方式执行哪些功能。对于在更复杂的场景中对机动进行分类,判别式的学习算法非常流行,例如多层感知机(MLP)Logistic回归关联向量机(RVM)支持向量机(SVM)。同样流行的替代方法是将每个动作分解为一系列连续的事件,并使用隐马尔可夫模型(HMM)表示这一系列事件。不同事件之间的转移概率可以从数据以及观测模型(即不可观测事件和可用观测之间的关系)中获知。对于新的观测序列,通过比较每个HMM的观测可能性来估计机动意图。
3万字带你详细了解自动驾驶车辆的系统架构
图29  道路交叉口交互行为意图识别常用方法的对比
对轨迹进行预测,使其与识别的机动相匹配。这可以以确定性的方式完成,方法是导出与识别的机动相对应的输入控制,然后根据运动学运动模型生成单个轨迹。这种严格确定性方法的一个问题是,它不能考虑当前车辆状态、正在执行的机动或执行机动的不确定性。为了以概率方式探索机动的潜在执行空间,可以使用GP或RRT,如下图30所示:
使用GP的方法探索机动的潜在执行空间:可以从训练数据中学习每个机动的GP,并以生成方式使用GP来创建每个机动的样本轨迹。
使用RRT的方法探索机动的潜在执行空间:可以通过在车辆演化模型的输入空间中采样点,根据估计的机动意图在采样中应用偏差来生成RRT树。这种方法的优点是它总是为机动生成动态可行的轨迹,作为轨迹的替代。
3万字带你详细了解自动驾驶车辆的系统架构
图30  三种不同方法对比
局限性:
实际上,车辆相互独立移动的假设不成立。车辆与其他车辆共用道路,一辆车的机动动作必然会影响其他车辆的机动动作。在道路交叉口,车辆间的依赖性特别强,优先权规则迫使车辆考虑其他车辆的机动。忽视这些相关性可能导致对情况的错误解释,并影响风险评估。
1.4.2.3基于交互感知的运动模型(Interaction-aware motion models):
交互感知运动模型考虑了车辆机动之间的相互依赖性,是迄今为止文献中提出的最全面的模型。与基于物理的运动模型相比,它们允许更长期的预测,并且比基于机动的运动模型更可靠,因为它们考虑了车辆之间的相关性。但文献中很少有交互感知运动模型。它们一般有两种方法:一种是基于原型轨迹,一种是基于动态贝叶斯网络
基于轨迹原型的方法,在学习阶段不能考虑车辆间的影响,因为由此产生的运动模式数很快就会变得难以处理。然而,可以通过假设驾驶员在能够避免碰撞时有强烈的倾向来考虑匹配阶段的相互影响。导致不可避免碰撞的成对轨迹在匹配过程中会受到惩罚,因此,这样就筛选出了安全轨迹。这种方法是在使用轨迹原型时考虑相互依赖性的一种较好的解决方法。然而,建模其他类型的影响的问题仍然存在,因为一辆车对另一辆车轨迹的影响无法直接建模。
基于动态贝叶斯网络的模型的方法:大多数交互感知运动模型都是基于动态贝叶斯网络(DBN)的。多个移动实体之间的成对依赖关系用耦合HMM(CHMM)建模
然而,由于可能的成对依赖关系的数量随着实体的数量呈二次增长,因此在复杂的交通情况下,复杂性是不可管理的。简化模型的一种解决方案是通过假设周围交通影响感兴趣的车辆而使CHMM不对称,但反之亦然。不对称依赖的假设大大降低了问题的计算复杂性。此后,它被用于许多工作中,尤其是在处理变道和超车操纵或跟车时。
利用交通规则调节车辆相互作用的方法。多主体影响被分解为成对依赖的对数线性组合,如:成对依赖类型为“支路上的车辆对主道上车辆的让路”。
3万字带你详细了解自动驾驶车辆的系统架构
图31  基于行为交互运动模型的轨迹预测
一种通过使用因子状态解释了相互影响:一种能够同时估计交通参与者行为并预测其未来轨迹的滤波器。该滤波器被建模为动态贝叶斯网络。因子化状态空间对因果依赖进行建模,允许以紧凑的方式描述模型,并降低推理过程的计算复杂性。
一种来模拟道路交叉口处车辆的联合运动的类似的方法。该方法引入了一个称为“预期机动”的中间变量,而不是直接建模本地情景情境和驾驶员意图之间的依赖关系。在所提出的模型中,情景影响了驾驶员的预期行为,进而影响驾驶员的意图。
局限性:
交互感知运动模型是迄今为止文献中提出的最全面的模型。与基于物理的运动模型相比,它们允许更长期的预测,并且比基于机动的运动模型更可靠,因为它们考虑了车辆之间的相关性。然而,这种穷尽性有一些缺点:使用这些模型计算车辆的所有潜在轨迹在计算很昂贵,并且与实时风险评估不兼容
1.4.3风险评估
大部分的风险评估都具有以下两个步骤:1)预测场景中所有移动实体的潜在未来轨迹。2)检测每对可能的轨迹之间的碰撞,并基于碰撞的总体概率得出风险估计。然后有以下几种分类。
1.4.3.1二进制碰撞检测
在基于线性物理的运动模型的特殊情况下,通过求解运动模型的线性微分方程,可以容易地导出特定时间车辆状态的解析解。
碰撞风险的计算可以是二进制的。在基于线性物理的运动模型的特殊情况下,通过求解运动模型的线性微分方程,可以容易地导出特定时间车辆状态的解析解。因此,以有效的方式。然而,在一般情况下,运动方程过于复杂,无法推导出闭合解。一种解决方案是通过分段直线轨迹来近似每个轨迹。更常见的方法是离散化轨迹,并在每个离散时间步迭代检查碰撞。根据这一推理,可以通过定义两点之间距离的阈值(来自同一时间步的两条轨迹),以简单的方式检测碰撞。为了考虑车辆的形状,可以用“两辆车形状重叠”的条件来代替该阈值。尽管并不能得到确切的形状,但车辆通常被表示为多边形或可以用织机测试点表示。如果有关于车辆状态不确定性的信息,并且该不确定性是高斯的,则可以通过对标准偏差应用阈值来使用椭圆代替多边形。为了简化相交面积的计算,可以用一组圆一组点来近似椭圆。

一些驾驶员辅助系统专注于检测不可避免的碰撞。该计算是二元碰撞预测的一种特殊情况,根据驾驶员是否能够执行无碰撞机动,将风险分配为0或1。确定是否存在这种机动可以通过两种方式进行。

第一个是计算逃生机动(即车辆应如何转向、制动或加速来避免碰撞),并检查这些操作是否可行(“可行”意味着转向、制动或加速不超过车辆的物理限制)。第二个是考虑组合转向、制动和加速机动的整个空间,并对无碰撞轨迹进行优化搜索。这一概念与机器人技术中使用的不可避免碰撞状态(ICS)概念密切相关。
1.4.3.2概率碰撞检测
考虑到车辆未来运动的不确定性,可以用概率方式计算碰撞风险。概率可以通过计算两辆车的中心位于同一个单元的概率,在离散位置空间上计算,对于所有可能的单元组合。碰撞概率可以测量为表示车辆未来运动的几何形状之间重叠的百分比。对于当前状态的正态分布不确定性,已经提出了一种基于无迹变换的随机线性化的解决方案。
当车辆的未来运动由样本轨迹上的概率分布表示时(这通常是依赖于蒙特卡罗模拟或高斯过程的方法的情况),通过对所有可能的未来轨迹进行积分并检测每个可能的轨迹对之间的碰撞,可以将风险计算为“未来碰撞的概率”。这种方法在处理不确定性方面提供了很大的灵活性。例如,对于基于机动的运动模型,计算可以对机动及其执行进行求和,或者假设机动是已知的,并且只对可能的执行求和。此外,根据最终应用,可以计算与特定车辆碰撞的风险或所有车辆的总和,并获得全局碰撞风险
1.4.3.3其他风险检测方法
通过进一步分析预测的轨迹及其相交点,有可能得出一些指标,这些指标提供了有关潜在碰撞的更多信息。潜在碰撞危险性的流行指标是车辆的速度、代表车辆的形状之间的重叠量、两辆车同时占用冲突区域概率以及碰撞的配置。可以使用这些指示符所提供的信息来确定减轻或避免潜在冲突的最佳方式。
其他流行的风险指标是基于“time-to-X”(或TTX)的度量,其中X对应于碰撞过程中的相关事件,如碰撞时间(TTC)和反应时间 (TTR)。
TTC:其中标准的风险指标是碰撞时间,它对应于碰撞发生前的剩余时间。它可以用来指示应该采取什么行动。例如,当TTC仍然较大时,最好通知或警告驾驶员,而不是应用制动器。对于自动紧急制动应用,可以将TTC与车辆完全停止所需的时间进行比较,以决定何时应用制动。对于驾驶员警告应用,需要将驾驶员反应时间添加到停止车辆的时间中。通过假设自动驾驶车辆执行特定轨迹的风险与最早的TTC成反比(TTC是针对场景中其他车辆的所有可能轨迹计算的),TTC也可以用作识别自动驾驶车辆最小危险机动的工具。
TTR:一个密切相关的风险指标是反应时间,它对应于驾驶员在碰撞不可避免之前可采取行动的时间。其目的是模拟不同的驾驶员动作(如刹车、加速、转向),并确定其中一种动作能够避免碰撞的最晚时刻。
1.5交通信号检测与识别
交通信号检测和识别子系统主要负责检测和识别交通规则中定义的标志。该系统是用来帮助汽车根据交通法则做出正确的决定。在交通信号检测和识别中,有许多与交通信号相关的任务。这里主要探讨了三个主要交通信号检测和识别的方向:交通信号灯交通标志和自动驾驶汽车周围环境中的路面标记
1.5.1交通灯检测和识别
交通灯检测和识别涉及检测汽车周围环境中的一个或多个交通灯的位置(如,在图像中表示)并识别它们的状态(红灯、绿灯和黄灯)。
交通灯检测和识别的方法主要可分为两类:基于模型基于学习。交通信号灯在颜色和形状信息方面具有明确的结构:常见的交通信号灯有三个灯泡(每个状态一个:红色,绿色和黄色)以及明确定义的形式。因此,早些时候,交通灯检测和识别的大多数方法都是基于模型的。这些方法依赖于手工制作的特征工程,该工程试图利用人类关于对象的颜色形状的信息来构建能够检测和/或识别它的模型。当没有严格遵守假设时,通过使用颜色和形状信息的方法鲁棒性并不好。为了增强其鲁棒性性,提出了使用不同特征(例如,颜色,形状和结构)的组合。一种结合了颜色(使用颜色分割),形状/结构(使用黑盒检测)和地理信息(仅当已知交通信号灯使用时才使用系统)预期。然而,他们的系统受到基于模型的方法常见的问题:需要大量超参数调整,这也就意味着在某些情况下需要重新校准。实验过程中,在过曝遮挡、交通信号灯的非标准安装以及其他一些在实际情况下并不罕见的情况下基本模型的方法容易出现失败。在基于模型的方法的背景下,这种组合显示还不够。因此,研究人员开始引入基于学习的方法。
在基于学习的方法中,功能仍然是手工制作的,但检测和识别过程是从基于规则的变为基于学习的。级联分类器可能是第一次尝试基于学习的方法。最终,还研究了HOG和Gabor特征与分类器(如SVM,AdaBoost和JointBoost)的流行组合。最近,端到端方法(即,不需要手工制作的特征)优于大多数基于模型的方法。一种将GPS数据和交通灯位置数据库用于识别图像中的感兴趣区域,并且采用卷积神经网络(CNN)来识别交通灯状态。此外,最先进的通用物体检测方法已成功应用于交通信号灯的检测(通常无需识别其状态)。全面地来说,这些通用深度物体检测方法(或简称深度学习检测方法)不提供交通灯检测和识别任务的性能细分。尽管与基于模型的方法不同,然而这些深度学习检测方法往往对过度曝光,颜色失真,遮挡等具有更强的鲁棒性。基于学习的方法,尤其是那些使用深度学习的方法,需要大量带注释的数据。直到最近,带有注释红绿灯的大型数据库才能公开发布,为基于学习的方法提供支持和支持。如今,最常见的数据库是LaRA(11,179帧),LISA,博世小交通灯(13,427帧),BDD(100,000帧)和Udacity(13,063)帧。‘
尽管在交通灯检测和识别研究方面取得了进展,但对于研究自动驾驶汽车所使用的内容知之甚少。可能主要原因是2007年DARPA城市挑战中没有红绿灯。
1.5.2交通标志检测和识别
交通标志检测和识别涉及检测环境中的交通标志的位置并识别它们的类别(如,限速、停止信号和普通让行)。
早些时候,大多数用于交通标志检测和识别的方法都是基于模型的并使用了简单的特征(如,颜色、形状和边缘)来检测识别的。后来,基于学习的方法(如SVM,级联分类器和LogitBoost)开始利用其简单的功能,但演变为更复杂的功能(如,模式、外观和模板)。然而,这些方法通常不能很好地概括,并且这些方法通常需要对几个超参数进行微调。此外,一些方法可能由于数据的缺乏,仅用于识别而不用于检测。只有在大型数据库可用之后(如,众所周知的德国交通标志识别(GTSRB)和检测(GTSDB)基准数据,数据分别为51,839和900帧),基于学习的方法最终可以显示出算法的能力。尽管其中有一些方法只能够应对更少的例子。随着更大型数据库的发布(如超过20,000帧的STSD,6,610帧的LISA,用于检测的25,634帧和用于分类的7,125帧的BTS,以及10万帧数据的清华-腾讯100K),相比于基于模型的方法,基于学习的方法得到了改进,并取得了更好的结果。上述一些数据集的帧数包括仅具有背景的帧。随着一般计算机视觉任务中深度学习的兴起,卷积神经网络是交通标志检测和识别中最先进技术(SOTA)。深度学习方法已经分别在GTSRB和和BTS的识别任务中实现了高达99.71%和98.86%的F1得分。
1.5.3路面标记检测和识别
路面标记检测和识别涉及检测路面标记的位置并识别其类型(如,车道标记、道路标记、消息和人行横道)。大多数研究一次只处理一种类型的路面标记,而不是同时处理所有类型的路面标记。一个重要的路面标记是道路中的车道定义。早些时候,大多数用于车道标记检测的方法都是基于模型或学习的。形状颜色是最常见的特征:直线和曲线(例如,抛物线和样条)是最常见的车道表示。深度学习是另一种最近流行的流行方法,像这样的方法已经显示出非常好的结果。一种使用两个横向安装的向下摄像机和将横向距离估计建模为分类问题,并且通过使用CNN来完成任务。
许多用于车道标记检测的方法也被尝试用于道路标记检测。它们通常使用几何和光度特征。此外,用于道路标记检测和识别的各种方法使用了逆透视映射(IPM)来减少了透视效果,以此让问题更容易解决并提高结果的准确性。最近,几种方法采用最大稳定极值区域(MSER)来检测感兴趣区域(即可能包含道路标记的区域)和用卷积网络来识别道路标记。一种基于IPM、MSER和DBSCAN的算法的融合来执行道路标记的检测以及PCANet(一种简单的图像分类的深度学习基线)与SVM或线性回归的组合以进行分类。
在道路标记的背景下,道路消息通常是单独处理的。一些用于道路消息检测和识别的方法将不同的消息视为不同的类别(即,算法首先检测场景中消息的位置,然后识别它们的类别),而大多数方法使用基于OCR的方法识别字母。
在道路标记的环境中,人行横道仍经常被单独检测。大多数人行横道检测方法利用人行横道通常呈现的规则形状和黑白图案来进行识别。因此,在许多实际应用中,这项任务不进行,因为强大的行人检测算法的支持。

3万字带你详细了解自动驾驶车辆的系统架构

决策与规划系统

无人驾驶汽车行为决策系统指无人车通过传感器感知得到交通环境信息,考虑周边环境、动静态障碍物、车辆汇入以及让行规则等,与无人驾驶库中的经验知识等进行匹配,进而选择适合当前交通环境之下的驾驶行为。
行为决策的目标主要是保证车辆可以像人类一样产生安全的驾驶行为,满足车辆安全性能、遵守交通法规等原则。该部分包括路线规划、运动规划和控制三个子系统。
2.1路线规划
路线规划子系统负责计算从自动驾驶汽车的初始位置到用户操作员定义的最终位置的通过道路网络的路线。
道路网络中的路线规划方法在查询时间预处理时间空间使用和对输入变化的鲁棒性等方面提供了不同的权衡。它们主要可分为四类:基于目标导向的、基于分隔符、基于分层技术的、有界跳跃和多种算法组合。
2.1.1基于目标导向
基于目标导向的路线规划通过避免扫描不在目标点方向上的顶点来引导从起点目标点的搜索。
(1)ALT(A*+landmark+triangle inequality)算法:
使用A 结合基于界标三角形不等式的新图论下界技术进行搜索。通过选取一组顶点作为界标来增强A*。在预处理阶段,计算所有地标和所有顶点之间的距离。在查询阶段,使用涉及界标的三角形不等式来估计任意顶点的有效下界距离。搜索的性能和正确性取决于界标选择的正确性。如下图为ALT算法与其他算法的对比,下图32主要是Dijkstra算法,加入曼哈顿下限的A算法ALT算法的对比(Dijkstra算法访问的顶点(左),A 在同一输入上使用曼哈顿下限(中间)和ALT算法(右侧)进行搜索)。
3万字带你详细了解自动驾驶车辆的系统架构

图32  Dijkstra搜索算法

(2)Arc Flag算法:

Arc Flag算法通过对路网中每条边附加额外指示信息减少搜索的范围,提升最短路径查询速度。设置导航信息时,如果将图中每个点都作为目的点进行预处理,则在标记指示信息时占用太大内存,需对图的数据进行划分,以更大范围地表示目的地,减少预处理消耗。
Arc-flags算法主要分为2部分:①预处理阶段的图划分和设置标志位算法,该算法为路网数据中每条边设置导航信息,即标志位;②在线查询算法,使用改造的 Dijkstra算法提供在线查询服务。
2.1.2分割法
分割法是基于顶点或边缘分隔符的。顶点(或边缘)的分隔是顶点(或边)的一部分,这些定点(或边)的移除可以将图分解为若干平衡单元。基于顶点分隔符的算法使用顶点的分隔来计算叠加图。将“捷径”方式边缘添加到叠加图中,以保留完整图形中任何一对顶点之间的距离。叠加图比完整的图小,多用于加速查询算法。

(1)HPML算法(High-Performance Multilevel Routing,高性能多级路由)

HPML(High Performance multivel Routing,高性能多级路由)算法是分割法的一个变种,它显著减少了查询时间,但代价是增加了空间使用量和预处理时间,在不同的级别上为图添加了更多的快捷方式。

该方法基于输入图的分层分解和包含附加信息的辅助图的计算。在联机阶段,使用这些预先计算的数据可以减少搜索空间,从而缩短查询时间。该方法最大限度地开发了预处理:其的新变体外包了计算到预处理阶段的最短路径所需的几乎所有工作。因此,它最适合于查询时间非常宝贵但预处理时间较长(以及大量预计算数据)的环境

(2)CRP算法(可定制路线规划算法)

该算法的主要创新点为区分网络的拓扑性质度量性质。拓扑是网络的图形结构,以及每个路段或转弯的一组静态属性,例如物理长度、车道数、道路类别、速度限制、单向或双向以及转弯类型。该度量生成了穿越路段或转弯的实际成本。它通常可以简洁地描述为一个函数,将电弧/转弯的静态特性映射(在恒定时间内)为成本。例如,在所用时间度量中(假设自由流动的交通),弧的成本可以是其长度除以其速度限制。该算法假设拓扑由度量共享,很少改变,而度量可能经常改变,甚至可能是用户特定的。
该算法具有三个阶段的现实路线规划算法。,第一个独立于度量的预处理可能相对较慢,因为它很少运行。它只将图形拓扑作为输入,并可能产生相当数量的辅助数据(与输入大小相当)。第二个阶段,即度量定制,针对每个度量运行一次,并且必须更快(几秒钟),并且只生成少量数据(原始图的一部分)。最后,查询阶段使用前两个阶段的输出,并且对于实时应用程序必须足够快。
该算法适用于具有任意度量的实时应用程序,包括分层方法失败的应用程序。CRP可以快速地处理新的度量,并且度量特定的信息足够小,可以同时将多个度量保存在内存中。该方法通过重新审视和彻底重新设计已知的加速技术,并将它们与图形划分的最新进展相结合来实现这一点。
2.1.3基于层次化的方法
层次化方法利用道路网络的固有层次结构,其中诸如高速公路的主要道路复合了小的动脉子网络。一旦源顶点和目标顶点相距很远,查询算法仅扫描子网的顶点。预处理阶段根据实际的最短路径结构计算顶点或边的重要性

(1)CH算法(Contraction Hierarchies algorithm)

CH算法是一种优化的加速方法,可以利用代表道路网络的图的特性。通过在预处理阶段创建“shortcuts”来实现提速,然后在最短路径查询中使用这些“shortcuts”来跳过“不重要的”顶点。这是基于对道路网络高度分层的观察。与一些通向小区内部路的路口相比,某些路口(例如高速公路路口)在层次结构中“更重要”并且在层次上更高。“shortcuts”可用于保存两个重要路口之间预先计算的距离,从而算法无需在查询时考虑这些路口之间的完整路径。CH不知道人类认为哪条道路“很重要”,但是它能够使用启发式方法计算出顶点的重要性。
(2)REACH算法:
REACH算法是一种层次化的方法,在预处理阶段,首先计算顶点的中心度量(到达值),并在查询阶段使用这个度量来修剪基于Dijkstra的双向搜索。设P是从源顶点s到包含顶点v的目标顶点t的最短路径。v相对于P的距离是r(v,P)= min { distance(s,v),distance(v,t)}。
2.1.4基于有界跳跃(bounded-hop 法)
bounded-hop 的方法是通过向图形添加虚拟shortcuts来预先计算顶点对之间的距离。由于所有顶点对之间的预计算的距离对于大型网络而言是不允许的,因此bounded-hop 方法旨在获得具有非常少的跳跃的任一的一条虚拟路径的长度。
(1)HL算法(Hub Labeling)
它在预处理阶段计算图形的每个顶点u的标签L(u),其主要由u的一组中心顶点和它们的距离组成。选择这些标签使得它们遵守覆盖属性:对于任何顶点对(s,t),标记L(s)和L(t)的交集必须包含从s到t的最短路径的至少一个顶点。在查询阶段期间,通过评估标记L(s)和L(t)的交集中存在的中心点之间的距离,可以在线性时间内确定距离(s,t)。HL在道路网络查询方法是最快的,但代价是空间占用率高。
(2)HL-∞算法(Customizable Route Planning algorithm)
HL-∞算法则利用了集线器标签和顶点排序之间的关系,并开发了预处理算法来计算产生小标签的排序。顶点排序的迭代范围优化算法使HL-∞算法的查询时间比HL快两倍。它以一些顶点排序(例如,由CH给出的)开始并且在给定数量的迭代步骤中进行,每个迭代步骤按重要性的降序重新排序不同范围的顶点。
(3)HLC算法(Hub Label Compression)
HLC算法通过组合出现在多个标签中的常见子结构,以更高的查询时间为代价:将空间使用减少一个数量级。
(4)TNR算法(Transit Node Routing)
它使用顶点子集上的距离表示。在预处理阶段,它选择一组顶点作为传输节点,并计算它们之间的所有成对距离。从传输节点,对于每个顶点u,它可以计算一组访问节点。如果存在来自u的最短路径使得v是其中的第一个传输节点,则传输节点v是u的接入节点。它还计算每个顶点与其访问节点之间的距离。选择传输节点集的一种自然方法是选择弧分隔符的顶点分隔符或边界顶点作为传输节点。在查询阶段,距离表用于选择从源顶点s到目标顶点t的路径,该路径最小化组合距离s-a(s)-a(t)-t,其中a(s)和a(t)是接入节点。如果最短路径不包含传输节点,则执行本地查询(通常为CH)。
2.1.5多种算法组合
可以将各个方法进行组形成不同图形属性的混合算法。以上各种技术方法进行组合可形成不同图形属性的混合算法。REAL算法结合了REACH和ALT。ReachFlags算法是结合了REACH和Arc Flags边标记法)。SHARC算法将shortcut的计算与多级的Arc Flags(边标记法)相结合。CHASE算法将CH与Arc Flags相结合。TNR + AF算法结合了TNR和Arc Flags(边标记法)。PHAST算法可以将若干技术进行组合,以便通过利用多核CPU和GPU的并行性进行加速。
2.2运动规划

运动规划子系统负责计算从自动驾驶汽车的当前状态到由行为选择子系统定义的下一个局部目标状态的路径或轨迹。运动计划执行局部驾驶行为,满足汽车的运动学和动力学约束,为乘客提供舒适度,并避免与环境中的静态和移动障碍物发生碰撞

运动计划可以是路径或轨迹。路径是汽车状态的序列,并没有定义汽车状态如何随时间演变。该任务可以委托给其他子系统(例如,行为选择子系统),或者速度分布可以定义为曲率和接近障碍物的函数。而轨迹是一条指定汽车状态随时间演变的路径。

2.2.1路径规划

路径规划涉及生成从汽车当前状态到下一目标状态的一系列状态,这并不定义汽车状态随时间的演变。路径规划通常分为全局路径规划局部路径规划。在全局路径规划中,在汽车开始移动之前,使用环境的离线全局地图计算全局路径。在局部路径规划中,当汽车移动时,使用周围环境的在线局部地图生成局部路径,这允许汽车处理移动障碍物。路径规划方法主要可分为两类:基于图搜索的方法和基于插值曲线的方法。

2.2.1.1基于图搜索的方法:

(1)Dijkstra算法是通过找到图的初始节点目标节点之间的最短路径。Dijkstra算法通过重复检查最近尚未检查的节点,将其邻点添加到要检查的节点集,并在达到目标节点时停止。Dijkstra算法适用于全局路径规划。然而,由于检查的节点数量很多,它在大面积地区的计算成本很高,并且有时候结果不连续。

(2)A*算法是Dijkstra的扩展,其主要通过基于对目标节点的启发式估计成本向节点分配权重来执行快速图搜索。然而,这种算法找到解决方案并不容易。一种局部路径规划方法,该方法将A*算法与两种不同的启发式成本函数相结合,即(RTR)度量Voronoi。其中第一个考虑了汽车的运动学约束,而第二个考虑了障碍物的形状位置的常识。

2.2.1.2基于插值曲线的方法
基于曲线插值的方法是通过使用插值处理。该方法通过插值处理:在已知的点集内插入新的点集方法采用之前已知的一组点(如,描述路线图的航点)并生成描绘更平滑路径的新点集。用于自动驾驶汽车的路径规划的最常用曲线插值的方法是样条曲线
样条曲线是以子间隔划分为分段多项式参数曲线,这些曲线可以将其定义为多项式曲线。每个子段之间的连接称为结(或控制点),其通常具有高度平滑约束。这种曲线具有较低的计算成本,因为其行为是由结来定义的。然而,这种方法的结果可能不是最优的,因为它更侧重于实现部件之间的连续性而不是满足道路的约束,并且它取决于全局航路点。
(1)一种实时路径规划算法,该算法为静态避障的越野自动驾驶提供了最优路径。所提出的规划算法基于一组预定义的航路点来计算路径。预定义的路线点提供曲线坐标系的基础框架,以生成用于自动驾驶车辆路径规划的路径候选。将每个候选对象转换为笛卡尔坐标系,并使用障碍物数据进行评估。为了选择最优路径,通过考虑路径安全成本、路径平滑度路径一致性来确定每条路径的优先级。

(2)在该方法中,首先从一组预定义的路线点构建中心线,这些路线点通常是从车道级的地图中获得的。通过弧长和到中心线的偏移确定。然后,所有这些候选都被转换为笛卡尔坐标。考虑静态安全性、舒适性和动态安全性的总成本,选择最优路径;同时,还确定了最佳路径的适当加速度和速度。设计了各种类型的道路,包括具有静态和移动障碍物的单车道道路和多车道道路,以测试所提出的方法。该方法的流程图如下图33所示.

3万字带你详细了解自动驾驶车辆的系统架构
图33  基于曲线插值的规划方法
该方法构成了从车道地图获得的一组航路点的中心线,并且生成一系列三次样条的参数。这些三次样条参数通过使用弧长和偏移到中心线来表示可能的路径候选。其中,最佳路径通过基于功能成本的加权和来选择。这两种方法之间的区别在于:第一种方法仅避免静态障碍,而第二种既可以避免静态也能避免移动障碍。
2.2.2轨迹规划
轨迹规划涉及自动驾驶车从当前状态到下一个目标状态(该状态详细说明了汽车状态随时间的变化过程)生成一系列状态。轨迹规划的方法可以主要分为四类:基于图搜索基于采样基于插值曲线以及基于数值优化
2.2.2.1基于图搜索的技术
用于轨迹规划的基于图搜索的技术是从用于路径规划的技术扩展而来,以用来详细说明汽车状态随时间的变化过程。在自动驾驶汽车中,最常见的基于图搜索的轨迹规划方法是状态点阵弹性带(EB)A*
(1)状态点阵是一种搜索图,该搜索图的顶点表示状态,边表示连接满足设备运动约束的状态的路径。顶点以常规方式放置,并使得相同的路径可用于连接所有顶点。通过这种方式,到目标的路径可能通过图中的一系列边来展示。仅通过表征解决方案中的可能状态,该状态网格必须适合于在线路径规划。此外,该方法必须通过添加时间和速度维度将这种“状态晶格”扩展到动态环境。状态格子能够处理多个维度,例如位置,速度和加速度,并且适用于局部规划动态环境。但是,它们具有很高的计算成本,因为它会评估图中的每个可能的解决方案。
(2)一种用于道路轨迹规划的共形时空状态格。该方法中围绕中心线路径构建状态网格,在距离中心线的横向偏移处定义道路上的节点,并使用优化算法计算节点之间的边缘。该优化算法找到定义连接任何节点对的边的多项式函数的参数。他们为每个节点分配一个状态向量,其中包含姿势、加速度曲线以及时间和速度范围。通过时间和速度间隔的更精细离散化相比,加速度曲线以更低的成本增加轨迹多样性。此外,时间和速度的范围通过允许将时间和速度分配给图搜索阶段而不是图构建阶段来降低计算成本。
(3)一种迭代优化的方法,该迭代优化应用于从状态点阵导出的合成轨迹,以用来减少规划的时间并改善了轨迹质量。
(4)一种将状态晶格轨迹规划与行为选择融合的规划方法。该方法对一组候选轨迹进行采样,并从中提取不同的行为。通过选择行为并选择与所选行为相关联的候选轨迹来获得最终轨迹。
(5)一种使用三次多项式曲线沿全局路径生成候选路径,此外通过计算速度分布对所生成的路径的点进行分配,并通过成本函数评估所生成的轨迹,并选择最佳轨迹。
在路径规划方法中,基于弹性带方法的优化是通过具有弹性节点和边缘的图表来表征状态空间。通过用连接相邻空间节点的内外边缘对空间节点进行扩充来定义弹性节点。路径是通过优化算法获取。其中优化算法平衡两种力:外部障碍产生的排斥力以及消除带松弛的相邻点所产生的收缩力。该方法展示了连续性和稳定性,具有非确定性的运行时间并且需要无冲突的初始路径。
(6)一种解耦时空轨迹规划方法,该方法分别进行路径规划和轨迹规划。轨迹规划分为三个阶段:在第一阶段,考虑道路和障碍物约束来计算无碰撞路径,并且使用纯追踪控制器和运动学汽车模型生成可行路径;在第二阶段,在几个约束(速度限制、障碍物接近、横向加速度和纵向加速度)下给出速度分布;最后,给定路径和速度分布,通过参数路径螺旋计算轨迹。通过模拟未来的运动,算法可以对所有静态和移动障碍物进行轨迹评估
(7)A*算法通常用于路径规划或非结构化轨迹规划。道路轨迹规划, A*的两种新的节点扩展方案。第一种方案通过数值优化来试图找到汽车从当前节点直接连接到目标节点的轨迹。第二种方案使用纯追踪控制器去在沿着全局参考路径上,生成引导汽车的短边(即,短运动基元)。
2.2.2.2基于抽样的方法
基于采样的方法是通过随机地对状态空间进行采样来寻找汽车当前状态和下一个目标状态之间的连接。在自动驾驶汽车轨迹规划中,最常用的基于采样的方法是快速探索随机树(RRT)
用于轨迹生成的RRT方法使用来自状态空间的随机样本将汽车从当前状态进行递增,以用来构建搜索树。在每个随机状态,控制命令应用在树的最近顶点,以用来创建尽可能接近随机状态的新状态。其中树的每个顶点表示一个状态,每个有向边表示一个用于扩展状态的命令。候选轨迹通过各种标准进行评估。RRT方法对于高维空间具有较低的计算成本,并且只要解存在,总是找到解决方案,但需要算法给予足够的时间。然而,它的结果并不是连续而且不稳定
(1)一种用于无人驾驶车“IARA”的轨迹规划的RRT方法。该方法为标准RRT方法提供了新的变体,该变体方法用来将随机状态的位置偏向车道区域,选择期望最高的控制命令来扩展状态,选择最佳轨迹,丢弃非期望状态,并重新使用部分在之前的规划周期内构建的轨迹。
(2)一种使用驾驶员在道路上的视觉搜索行为来指导RRT的状态采样。驾驶员在进行转弯过长中会使用“近点”和“远点”。他们利用弯道上显示的驾驶员视觉搜索行为的这一特征来指导RRT方法。此外,他们采用基于B样条的后处理方法来生成平滑、连续和可行的轨迹。
2.2.2.3基于曲线的插值方法
基于插值曲线的方法通过内插先前已知的一组点(如道路地图路点)并且构建更平滑的轨迹。该轨迹同时考虑汽车的运动和动态约束、舒适度、障碍物以及其他参数。在自动驾驶汽车的轨迹规划中最常见的基于内插曲线的技术是回旋曲线。
回旋曲线允许定义具有线性可变曲率的轨迹,以便直线段到弯曲段之间的过渡是平滑的。然而,由于通过积分方法来定义,因此回旋曲线具有高计算成本,并且它取决于全局航路点。
使用回旋触角进行轨迹规划。从汽车的重心开始,采用回旋曲线的形式,根据不同的速度和不同的初始转向角来计算出触角。可使用占据栅格图将触角分类为可导航不可导航。在可通航的触角中,最好的触手是根据几个标准选择的。使用马尔可夫决策过程启发的方法来选择最佳触手。
2.2.2.4基于数值优化的方法
基于数值优化的方法是将约束变量的函数最小化或最大化的过程。在自动驾驶汽车轨迹规划中,最常见的基于数值优化的技术是函数优化模型预测方法
函数优化方法是在考虑轨迹约束(如位置,速度,加速度和加加速度)下最小化成本函数来找到轨迹。该类方法可以很容易将汽车的运动学动力学约束以及环境的约束考虑到成本函数中。然而,由于在每个运动状态中都需要进行优化,并且取决于全局航路点,因此这种方法具有高计算成本
(1)一种使用功能优化方法对自动驾驶汽车“Bertha”进行轨迹规划。他们通过在轨迹约束内最小化成本函数得到最佳轨迹。成本函数组成如下:使轨迹以指定的速度驾驶通道的中间行驶,对强加速度进行惩罚,抑制加速度的快速变化,并衰减高偏航率。
用于轨迹规划的模型预测方法是通过对汽车从当前状态和下一个目标状态之间产生动态可行的控制命令。它们可用于解决生成满足状态约束的参数化控制命令的问题,其中动态可由微分方程表示。
(2)一种使用模型预测方法对自动驾驶汽车“Boss”进行轨迹规划。该方法可以生成到从中心线路径导出的一组目标状态的轨迹。为了计算每个轨迹,他们使用优化算法逐渐修改轨迹控制参数的初始近似,直到轨迹终点误差在可接受的界限内。轨迹控制参数包括轨迹长度以及定义曲率轮廓的样条曲线的三个结点。基于若干因素(如,当前道路的速度极限,最大可行速度和目标状态速度)为每个轨迹生成的速度分布。并根据它们与障碍物的距离、到中心线路径的距离、平滑度、终点误差和速度误差来选择最佳轨迹。
(3)一种使用基于状态采样的轨迹规划方案,该方案在全局参考路径中对目标状态进行采样,并应用模型预测路径规划方法来产生将汽车从当前状态连接到采样目标状态的路径。速度曲线用于为生成路径的每个状态进行分配速度。考虑安全性和舒适性的成本函数用于选择最佳轨迹。
(4)一种使用模型预测方法进行自动驾驶车辆“IARA”的轨迹规划。为了计算轨迹,他们使用优化算法来找到轨迹控制参数,该轨迹控制参数在到目标状态的距离,到中心线路径的距离以及与障碍物的接近度进行最小化优化。其中轨迹控制参数包括轨迹时间和四个结点(指定转向角轮廓的样条曲线)。
上述方法的优缺点总结和参考文献如下图34,35所示。
3万字带你详细了解自动驾驶车辆的系统架构

图34  常见路径规划方法对比

3万字带你详细了解自动驾驶车辆的系统架构
图35  常见路径规划方法对比
2.3控制
在自动驾驶汽车领域,控制指的是工程领域自动控制背后的理论,该理论涵盖了在无需持续直接人为干预的情况下应用机制来操作和调节过程。在最简单的自动控制类型中,控制子系统将过程的输出与期望的输入进行比较,并使用误差(过程的输出和期望的输入之间的差异)来改变过程的输入,从而使过程在受到干扰的情况下仍保持在其设定点。在自动驾驶车辆中,自动控制理论通常具有路径跟踪底盘控制两种方法。路径跟踪方法的作用是在汽车模型存在不准确的情况下稳定运动计划的执行。底盘控制的作用是计算在执行器模型和其他方面存在不准确的情况下执行运动计划的转向、油门和制动执行器输入。
路径跟踪方法也称为控制技术,因为它们采用自动控制理论,并将路径视为要控制的信号。然而,在自动驾驶汽车领域,更适合将其称为路径跟踪方法,以便将其与底盘控制方法区分开来。
2.3.1路径跟踪方法
路径跟踪方法主要是执行由运动规划子系统计算的运动规划,以减少主要由汽车运动模型引起的误差。它们可以被认为是简化的轨迹规划技术。虽然它们不处理障碍物,但由于其可以简单得实现,被广泛用于自动驾驶汽车的路径跟踪。如图36所示,它包括在距离当前路径一定距离的路径中找到一个点,并转动前轮,以使一条圆弧将后轴中心与路径中的点连接起来。

3万字带你详细了解自动驾驶车辆的系统架构

图36  纯跟踪方法示意图
除了纯跟踪方法,基于运动学的路径跟踪方法还有Stanley方法。模型预测控制(MPC)方法广泛应用于无人驾驶汽车。它包括选择将导致期望硬件输出的控制命令输入,使用汽车的运动模型在未来的预测范围内模拟和优化输出。
3万字带你详细了解自动驾驶车辆的系统架构
图37   Stanley控制算法示意图

3万字带你详细了解自动驾驶车辆的系统架构

图38  模型预测控制原理框图

2.3.2底盘控制方法
底盘控制方法计算汽车的转向、油门和制动致动器的输入,这些制动器执行由运动规划子系统计算的运动计划,并减轻主要由制动器模型引起的不精确。自动驾驶汽车最常见的底盘控制方法之一是反馈控制。它包括应用控制命令输入,观察硬件输出,并调整未来输入以纠正制动器模型中的错误。
1)自动驾驶汽车的一种应用极其广泛的底盘控制方法是比例积分微分(PID)。
2)自适应PID控制方法
最小方差自适应PID控制的基本思想是:在每个采样周期,以系统偏差的最小方差极小化为性能指标进行系统品质评价,通过引入在线辨识的最小二乘算法估计未知过程参数,依此来计算各采样时刻的自适应PID控制量u(t)。
极点配置自适应PID控制的基本思想是:按照某种优化策略选择期望闭环极点分布,在每个采样周期,通过加权递推最小二乘法显式地估计过程参数,并结合PID控制规律,求得含未知参数q0、q1和q2的系统闭环方程,然后利用系统特征多项式与期望特征多项式的恒等关系即可在线求得PID控制参数,进而求得各时刻控制器输出u(t)。
零极点对消自适应PID控制的基本思想是:当被控过程参数未知时,在每个采样周期,利用加权递推最小二乘算法显式地辨识过程模型,在以PID控制器传递函数中的零极点对消被控过程传递函数中的部分极零点,由此计算出各时刻的PID控制量,以使得闭环系统运行于良好的工作过程。
3)MPC方法和前馈PID控制组合的方法
4)一种基于神经网络模型预测控制(NMPC)方法,以解决自动驾驶汽车“IARA”方向盘硬件中的延迟问题。他们使用MPC方法,通过预测控制命令输入来减少转向硬件延迟的影响,控制命令输入将根据轨迹及时移动汽车。然而,由于其非线性和延迟,预测IARA转向硬件输出的标准技术并没有很好地发挥作用。然后,他们使用神经网络对IARA的线控转向硬件进行建模,并在N-MPC转向控制方法中使用基于神经的转向模型
参考文献:《self-driving cars:A survey




3万字带你详细了解自动驾驶车辆的系统架构

3万字带你详细了解自动驾驶车辆的系统架构

码上报名

2023第六届无人驾驶及智能驾舱中国峰会,5月11-12日,上海



3万字带你详细了解自动驾驶车辆的系统架构

3万字带你详细了解自动驾驶车辆的系统架构

码上报名

AutoSec 7周年年会暨中国汽车网络安全与数据安全合规峰会,5月11-12日,上海


更多文章

智能网联汽车信息安全综述

华为蔡建永:智能网联汽车的数字安全和功能安全挑战与思考

汽车数据合规要点

车载以太网技术发展与测试方法

车载以太网防火墙设计

SOA:整车架构下一代的升级方向

软件如何「吞噬」汽车?

汽车信息安全 TARA 分析方法实例简介

汽车FOTA信息安全规范及方法研究

联合国WP.29车辆网络安全法规正式发布

滴滴下架,我却看到数据安全的曙光

从特斯拉被约谈到车辆远程升级(OTA)技术的合规

如何通过CAN破解汽

会员权益: (点击可进入)谈思实验室VIP会员


END

3万字带你详细了解自动驾驶车辆的系统架构

微信入群

谈思实验室专注智能汽车信息安全、预期功能安全、自动驾驶、以太网等汽车创新技术,为汽车行业提供最优质的学习交流服务,并依托强大的产业及专家资源,致力于打造汽车产业一流高效的商务平台。

 

每年谈思实验室举办数十场线上线下品牌活动,拥有数十个智能汽车创新技术的精品专题社群,覆盖BMW、Daimler、PSA、Audi、Volvo、Nissan、广汽、一汽、上汽、蔚来等近百家国内国际领先的汽车厂商专家,已经服务上万名智能汽车行业上下游产业链从业者。专属社群有:信息安全功能安全自动驾驶TARA渗透测试SOTIFWP.29以太网物联网安全等,现专题社群仍然开放,入满即止。


扫描二维码添加微信,根据提示,可以进入有意向的专题交流群,享受最新资讯及与业内专家互动机会。

3万字带你详细了解自动驾驶车辆的系统架构


谈思实验室,为汽车科技赋能,推动产业创新发展!

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月11日21:37:43
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   3万字带你详细了解自动驾驶车辆的系统架构http://cn-sec.com/archives/1549184.html

发表评论

匿名网友 填写信息