谈起自动驾驶的历史,DARPA 挑战赛可以代表十年前的最高水平。DARPA,全名“Advanced Research Projects”,指的是预先研究项目。在 21 世纪初,出于对无人驾驶车辆的关注,DARPA 在 2004 年、2005 年和 2007 年针对越野环境与城市环境组织相关自动驾驶竞赛。2007 年,卡内基梅隆大学的 BOSS 自动驾驶汽车 4 小时 10 分完成了 96 千米的城市道路比赛,获得第一名。在这项比赛中,BOSS 在与人类驾驶场景非常接近的环境中,遵守所有的交通规则,并与其他交通参与者和障碍物进行交互,顺利完成任务。

 

以 BOSS 为代表的无人车采用由摄像头、激光雷达、毫米波雷达、组合惯导、线控系统、计算单元等构成的硬件系统,由多传感器融合、运动物体检测与跟踪、运动规划和行为规划等算法构成的软件系统,由软件和硬件结合构成自动驾驶系统,奠定了无人车的基础路线。时隔多年,依然可称为无人车中的一座标杆,值得无人驾驶研究人员学习和研讨。

 

 

1.基础路线一:感知子系统与框架

BOSS 周身布置了包括激光雷达、摄像头、毫米波雷达、组合惯导在内的十几个传感器,使用多传感器组合提供冗余设计和全方位覆盖设计,以确保在城市环境中安全行驶。具体传感器配置如下。

 

 

传感器

数量

作用

特征

Applanix POS-LV 220/420 GPS/IMU (APLX)

1

姿态估计、组合定位

亚米级精度

SICK LMS 291-S05/S14 LIDAR (LMS)

6

中距离检测

FOV:180/90deg×0.9deg, 1/0.5deg 角度分辨率;

最大测量范围:80m

Velodyne HDL-64 LIDAR (HDL)

1

360°环境感知

FOV:360×26deg, 0.1deg 角度分辨率;

最大测量范围:70m

Continental ISF 172 LIDAR (ISF)

2

可调整视线范围,覆盖固定传感器配置无法观测到的十字路口

FOV: 12×3.2deg

最大测量范围:150m

 

IBEO Alasca XT LIDAR (XT)

2

远距离环境感知

FOV:240×3.2 deg;

最大测量范围:300m

Continental ARS 300 Radar (ARS)

5

中 / 远距离环境感知

FOV:60/17 deg×3.2 deg;

最大测量范围:60-m/200-m

Point Grey Fireflfly (PGF)

2

图像感知

高动态范围摄像机;

FOV:45-deg

 

感知子系统为无人驾驶系统的其余部分提供世界的复合模型(composite model),包括一个静态障碍地图、一个全局移动车辆列表,以及 Boss 相对于道路的位置。

 

1.1 基于多传感器融合的运动物体检测和跟踪

运动物体检测和跟踪系统负责检测和跟踪自动驾驶汽车车身周围环境中障碍物的运动状态,为智能车辆做出自主决策和规划提供一系列参考信息。BOSS 采用多传感器融合的方法来提高环境感知能力,整个系统分为两层:传感器层和数据融合层。传感器层从传感器数据中提取特征,生成用于根据点模型或盒模型描述移动障碍物假设。传感器层还尝试将特征与来自融合层的当前预测假设相关联。如果无法关联,将生成新的移动障碍物建议信息。如果可以关联,封装成更新假设状态估计所需的所有观测信息。数据融合层根据传感器层提供的观测信息和建议信息,为每个假设选择最佳跟踪模型,并使用卡尔曼滤波器对运动物体状态进行最优估计。

 

 

1.2 静态障碍地图构建与表示 

静态障碍地图系统将车辆上无数扫描激光器的数据结合在一起,生成周边环境的理解。对于允许自主车辆在公共道路上安全行驶而不与障碍物(如路标、路缘)碰撞至关重要。如路沿检测算法,主要步骤分为:预处理、小波特征提取和后处理。预处理阶段提供了两个重要的特征:减少由于遮挡和稀疏数据造成的误报,以及格式化数据以进行特征提取。基于小波的特征提取是对预处理后的点集进行离散小波变换。后处理应用一些额外的启发式来消除误报和检测一些额外的非道路点,对预处理阶段进行补充。整个路线网络定义文件(RNDF),采用拓扑图表示(与度量图表示法对应)。道路网络包括一个或多个路段,每个路段包括一个或多个车道。路段的特征是车道数、街道名称和速度限制。车道的特征是车道的宽度、车道标线和一组航路点。车道之间的连接以出口和入口航路点为特征。图中的每个节点表示一个航路点,方向边缘表示将该节点连接到它可以到达的所有其他航路点的车道。基于多个因素的组合,将成本分配给边缘,这些因素包括穿过与边缘相关联的车道的预期时间、车道长度和环境的复杂性。

 

 

1.3 车道辅助定位 

大多数城市驾驶可以被认为是对固定路网约束内的局部干扰的响应,因此在组合惯导定位失效时,相对于车道边界正确定位不失为一种方法。使用 SICK LMS 激光来检测道路上绘制的车道标记。车道标记通常比周围的道路材料亮,并通过使用斜率函数对线扫描中的强度进行卷积来检测。响应中的波峰和波谷代表潜在车道标记边界的边缘。为了减少误报,仅将适当间隔的峰和谷对视为车道标记。结果是一组潜在的车道标记位置。将车道标记位置与道路模型车道位置进行匹配,并通过阈值判断,生成一个平滑的、基于道路网络的位置估计。

 

 

2.基础路线二:规划子系统与框架

规划子系统分为三层设计:任务规划(Mission planning),行为规划(Behavioral planning)和动作规划(Motion planning)。其中,任务规划也可称之为路径规划或者路由规划(Route planning), 负责全局的路由寻径,如起点到终点的路径选择;行为规划也可称之为行为决策(Decision),负责根据结合全局路径信息、当前交通信息和障碍物等情况,给运动规划模块输入一系列的决策信息,如在十字路口通行优先级、交通堵塞处理、车辆汇流合理判断问题等;动作规划接收行为规划信息,生成一系列的动作以达到某种目的,如安全规避障碍物、准确进入停车位。

 

 

2.1 任务规划

根据道路网络定义文件(RNDF)中提供的数据来创建道路编码图形,对环境中的航路连通性进行描述,主要包括道路与道路之间的连接情况、通行规则以及道路的路宽等信息。任务规划器根据路网信息,计算每条道路的 cost,生成车辆可行驶的路径。当然,在车辆动态行驶过程中,车辆会检测道路堵塞(blockage)等情况,添加新的观测数据进行路网图更新。任务规划器也会根据实时的路网信息进行可行驶路径规划。主要处理步骤为:

 

1. 根据路网信息,计算每条道路的 cost,以进行任务规划;

 

2. 车辆实时检测阻塞或者根据静态障碍地图,进行路网信息更新;

 

3. 在阻塞前后进行 U 形转弯操作,将 U 形转弯赋予较低的 cost,将通过阻塞赋予较高的 cost;

 

4. 检测阻塞算法中漏过的一些障碍物,添加虚拟阻塞;

 

5. 道路信息是变化的,车辆会重新再次访问(Revisit)原来到过的地方,并通过指数型 cost 更新函数进行降低通过阻塞的 cost。

 

2.2 行为规划

 

 

行为规划负责执行任务规划生成的路线,基于三种主要驾驶环境进行相应驾驶行为。三个环境分别是:道路(road)、交叉路口(intersection)和区域(zone)。

 

它们的相应驾驶行为分别是进行车道行驶,交叉路口处理和实现区域姿态处理(停车等)。

 

State estimator:将车辆的位置与世界模型结合起来,使用 RNDF 生成车辆位置。

 

Goal selector:使用状态估算器报告的当前逻辑位置来生成下一系列本地目标,以供运动计划者执行;这些将是道路目标或区域目标。

 

Lane selector: 使用周围的交通状况来确定最佳车道随时进入,并在可行时执行合并到该车道的操作。

 

Merge planner: 确定 lane selector 建议的车道的可行性。

 

Current scene reporter:将已知车辆和离散障碍物的列表提炼为几个离散数据元素,最值得注意的是当前车道中距 Boss 前方最近车辆的距离和速度。

 

Distance keeper: 利用周围的交通状况来确定必要的车道内车辆安全距离,并据此控制车辆的速度。

 

Vehicle driver: 将 Distance keeper 和 Lane selector 的输出与其自己的内部规则结合起来,以生成所谓的“运动参数”消息,可控制诸如速度,加速度和所需跟踪车道之类的细节。

 

Precedence estimator:使用已知的其他车辆列表及其状态信息来确定交叉路口的优先级。

 

Pan-head planner:传感器获取相关的信息,以进行交叉路口优先决策。

 

Transition manager:管理行为规划和运动规划之间的离散目标序列,确定何时传输到下一个目标序列。

 

场景:两车道汇流 

 

 

主要判断指标包括:自车车道是否满足 merge 过去的空间;目标车道各障碍物前后以及障碍物之间是否满足自车 merge 过来后需要的空间;自车与 merge 目标点前后障碍物车的速度、加速度等指标是否合理。根据以上指标在目标车道挑选最好的 merge 目标点。

 

2.3 动作规划

动作规划接收行为规划的目标,生成车辆安全运动轨迹。其主要分为两种工作场景:一种是正常道路(on-road)模式,一种是非结构化道路(unstructured driving)模式。主要步骤为:

 

1. 根据任务规划和行为规划给定的运动目标,规划一条合理路径;

 

2. 基于轨迹生成算法生成一系列的轨迹去跟踪这条路径 ;

 

3. 根据判定准则从生成的轨迹中选取最优轨迹。

 

BOSS 采用的轨迹生成算法是模型预测轨迹生成。通过设计合理的评价函数,在满足各种约束条件下,实现避障功能且尽量减小车辆与全局路径的偏差。模型预测轨迹生成主要是为了使得规划结果满足车辆动力学和运动学约束,因此可以采用较低精度的车辆模型。

 

On-road planning:

路径生成:获取车道中心线作为目标路径。

 

轨迹生成:从中心线路径衍生出多组局部目标的轨迹。局部目标沿着中心线路径放置在一个固定的纵向距离上,但在与路径的横向偏移上有所不同。

 

轨迹速度:根据环境上下文和各种限制条件,包括当前跟随距离的最大速度、路段速度限制、路径曲率的最大速度、目标点速度等,进行速度的配置。

 

轨迹评估:根据与障碍物的距离、与中心线的距离、平滑度、最终点误差(endpoint error)以及轨迹速度等,进行最优轨迹评估,选择最优轨迹。

 

在行驶过程中进行合理的变道、U 行转弯、异常检测与恢复等操作。

 

3.基础路线三:系统开发流程与测试

BOSS 车整套无人驾驶系统从头开始开发,为了满足 DARPA 城市挑战赛的需求,使用了螺旋系统开发过程,着重于定期的、回归的系统测试。

 

测试和开发紧密地交织在一起,遵循如图所示的循环开发过程。

 

在算法开发开始之前,团队定义了 BOSS 需要完成的能力需求(Requirements Definition)。

 

需求推动了算法的开发。算法通过模拟或数据重放进行离线测试(Development & Offline Debugging)。

 

一旦算法足够成熟,就进行车载测试,全面评估系统和环境之间的相互作用(Online Developmental Testing)。这些测试通常会发现在离线测试中并不明显的算法问题或实现 bug,通常会导致大量的返工周期和进一步的离线调试。

 

一旦开发人员对算法的工作感到满意,对算法的测试就被添加到正式的、定期安排的系统测试中(Formal System Testing)。对算法进行独立测试过程中发现新的缺陷,这需要一些返工。

 

回归系统测试是开发过程的基石。在循环开发过程之后,每个研究人员都可以自由地实现和测试尽可能独立于整个系统,但是为了判断系统整体能力并验证单独的组件更改不会降低整个系统性能,团队执行了回归系统测试。系统测试的频率与系统就绪程度成比例。BOSS 车从 2007 年 2 月到 10 月,进行了 65 天的系统测试。正式的测试时间在系统的完善过程中进行调整,例如,在二月份,团队进行了不到 16 公里的系统测试。相比之下,在 10 月的前 3 周,该团队进行了超过 1500 公里的自动测试。