你听过无人驾驶,但你了解无人驾驶的算法吗?
小编说:我们已经拉开了全自动无人驾驶的序幕,在幕布之后是我们精彩的未来,但你可能不知道的是无人驾驶系统是一个复杂的系统,系统主要由三部分组成:算法端、Client端和云端。算法端从传感器原始数据中提取有意义的信息以了解周遭的环境情况,并根据环境变化做出决策。跟随本文一起简单了解下无人驾驶算法吧。本文选自《第一本无人驾驶技术书》。
算法系统由几部分组成:第一,传感,并从传感器原始数据中提取有意义信息;第二,感知,以定位无人车所在位置及感知现在所处的环境;第三,决策,以便可靠、安全地抵达目的地。
1.传感
通常来说,一辆无人车装备有许多不同类型的主传感器。每一种类型的传感器各自有不同的优劣,因此,来自不同传感器的传感数据应该有效地进行融合。现在无人驾驶中普遍使用的传感器包括以下几种。
(1)GPS/IMU:GPS/IMU 传感系统通过高达200 Hz频率的全球定位和惯性更新数据,以帮助无人车完成自我定位。GPS是一个相对准确的定位用传感器,但是它的更新频率过低,仅有10Hz,不足以提供足够实时的位置更新。IMU的准确度随着时间降低,因此在长时间距离内并不能保证位置更新的准确性;但是,它有着GPS所欠缺的实时性,IMU的更新频率可以达到200Hz或者更高。通过整合GPS与IMU,我们可以为车辆定位提供既准确又足够实时的位置更新。
(2)LIDAR:激光雷达可被用来绘制地图、定位及避障。雷达的准确率非常高,因此在无人车设计中雷达通常被作为主传感器使用。激光雷达是以激光为光源,通过探测激光与被探测物相互作用的光波信号来完成遥感测量。激光雷达可以用来产生高精度地图,并针对高精地图完成移动车辆的定位,以及满足避障的要求。以Velodyne 64-束激光雷达为例,它可以完成10Hz旋转并且每秒可达到130万次读数。
(3)摄像头:摄像头被广泛使用在物体识别及物体追踪等场景中,在车道线检测、交通灯侦测、人行道检测中都以摄像头为主要解决方案。为了加强安全性,现有的无人车实现通常在车身周围使用至少八个摄像头,分别从前、后、左、右四个维度完成物体发现、识别、追踪等任务。这些摄像头通常以60Hz的频率工作,当多个摄像头同时工作时,将产生高达1.8GB每秒的巨额数据量。
(4)雷达和声呐:雷达把电磁波的能量发射至空间中某一方向,处在此方向上的物体反射该电磁波,雷达通过接收此反射波,以提取该物体的某些有关信息,包括目标物体至雷达的距离、距离变化率或径向速度、方位、高度等。雷达和声呐系统是避障的最后一道保障。雷达和声呐产生的数据用来表示在车的前进方向上最近障碍物的距离。一旦系统检测到前方不远有障碍物出现,则有极大的相撞危险,无人车会启动紧急刹车以完成避障。因此,雷达和声呐系统产生的数据不需要过多的处理,通常可直接被控制处理器采用,并不需要主计算流水线的介入,因此可实现转向、刹车或预张紧安全带等紧急功能。
2.感知
在获得传感信息之后,数据将被推送至感知子系统以充分了解无人车所处的周遭环境。在这里感知子系统主要做的是三件事:定位、物体识别与追踪。
1)定位
GPS以较低的更新频率提供相对准确的位置信息,IMU则以较高的更新频率提供准确性偏低的位置信息。我们可以使用卡尔曼滤波整合两类数据各自的优势,合并提供准确且实时的位置信息更新。如下图所示,IMU每5ms更新一次,但是期间误差不断累积精度不断降低。所幸的是,每100ms,我们可以得到一次GPS数据更新,以帮助我们校正IMU积累的误差。因此,我们最终可以获得实时并准确的位置信息。然而,我们不能仅仅依靠这样的数据组合完成定位工作。原因有三:其一,这样的定位精度仅在一米之内;其二,GPS信号有着天然的多路径问题将引入噪声干扰;其三,GPS必须在非封闭的环境下工作,因此在诸如隧道等场景中GPS都不适用。
基于GPS/IMU定位的原理图
因此作为补充方案,摄像头也被用于定位。
基于立体视觉测距的流程图
简化来说,基于视觉的定位由三个基本步骤组成:① 通过对立体图像的三角剖分,首先获得视差图用以计算每个点的深度信息;② 通过匹配连续立体图像帧之间的显著特征,可以通过不同帧之间的特征建立相关性,并由此估计这两帧之间的运动情况;③ 通过比较捕捉到的显著特征和已知地图上的点计算车辆的当前位置。然而,基于视觉的定位方法对照明条件非常敏感,因此其使用受限且可靠性有限。
因此,借助于大量粒子滤波的激光雷达通常被用作车辆定位的主传感器。由激光雷达产生的点云对环境进行了“形状化描述”,但并不足以区分各自不同的点。通过粒子滤波,系统可将已知地图与观测到的具体形状进行比较以减少位置的不确定性。
为了在地图中定位运动的车辆,可以使用粒子滤波的方法关联已知地图和激光雷达测量过程。粒子滤波可以在10cm的精度内达到实时定位的效果,在城市的复杂环境中尤为有效。然而,激光雷达也有其固有的缺点:如果空气中有悬浮的颗粒(比如雨滴或者灰尘),那么测量结果将受到极大的扰动。
定位中的多传感器融合
因此,我们需要利用多种传感器融合技术进行多类型传感数据融合,处理以整合所有传感器的优点,完成可靠并精准的定位。
2)物体识别与跟踪
激光雷达可提供精准的深度信息,因此常被用于在无人驾驶中执行物体识别和追踪的任务。近年来,深度学习技术得到了快速的发展,通过深度学习可达到较显著的物体识别和追踪精度。
卷积神经网络(CNN)是一类在物体识别中被广泛应用的深度神经网络。通常,CNN由三个阶段组成:① 卷积层使用不同的滤波器从输入图像中提取不同的特征,并且每个过滤器在完成训练阶段后都将抽取出一套“可供学习”的参数;② 激活层决定是否启动目标神经元;③ 汇聚层压缩特征映射图所占用的空间以减少参数的数目,并由此降低所需的计算量;④ 一旦某物体被CNN识别出来,下一步将自动预测它的运行轨迹或进行物体追踪。
物体识别和跟踪示意
物体追踪可以被用来追踪邻近行驶的车辆或者路上的行人,以保证无人车在驾驶的过程中不会与其他移动的物体发生碰撞。近年来,相比传统的计算机视觉技术,深度学习技术已经展露出极大的优势,通过使用辅助的自然图像,离线的训练过程可以从中学习图像的共有属性以避免视点及车辆位置变化造成的偏移,离线训练好的模型直接应用在在线的物体追踪中。
3.决策
在决策阶段,行为预测、路径规划及避障机制三者结合起来实时地完成无人驾驶动作规划。
1)行为预测
在车辆驾驶中主要考验的是司机如何应对其他行驶车辆的可能行为,这种预判断直接影响司机本人的驾驶决策,特别是在多车道环境或者交通灯变灯的情况下,司机的预测决定了下一秒行车的安全。因此,过渡到无人驾驶系统中,决策模块如何根据周围车辆的行驶状况决策下一秒的行驶行为显得至关重要。
为了预测其他车辆的行驶行为,可以使用随机模型产生这些车辆的可达位置集合,并采用概率分布的方法预测每一个可达位置集的相关概率。
面向行为预测的随机模型示意
2)路径规划
为无人驾驶在动态环境中进行路径规划是一件非常复杂的事情,尤其是在车辆全速行驶的过程中,不当的路径规划有可能造成致命的伤害。路径规划中采取的一个方法是使用完全确定模型,它搜索所有可能的路径并利用代价函数的方式确定最佳路径。然后,完全确定模型对计算性能有着非常高的要求,因此很难在导航过程中达到实时的效果。为了避免计算复杂性并提供实时的路径规划,使用概率性模型成为了主要的优化方向。
3)避障
安全性是无人驾驶中最重要的考量,我们将使用至少两层级的避障机制来保证车辆不会在行驶过程中与障碍物发生碰撞。第一层级是基于交通情况预测的前瞻层级。交通情况预测机制根据现有的交通状况如拥堵、车速等,估计出碰撞发生时间与最短预测距离等参数。基于这些估计,避障机制将被启动以执行本地路径重规划。如果前瞻层级预测失效,则第二级实时反应层将使用雷达数据再次进行本地路径重规划。一旦雷达侦测到路径前方出现障碍物,则立即执行避障操作。