尽管Waymo已经在开放道路上积累超过10 Million Miles,Waymo的工程师们仍然发现有层出不穷的新自动驾驶场景待解决。安全
场景一:一个骑自行车的人手中拿着一个Stop Sign标识牌。咱们不知道它什么时候会举起标识牌。无人车必须理解这种场景,即便他举起了Stop Sign标识牌,自动驾驶汽车也不该该停下来。网络
场景二: 迎面而来的车辆上装载的塑料管子撒了一地,自动驾驶汽车必须学会应对这种突发状况,而且避开它们对无人车行驶的影响。机器学习
场景三:因为道路施工等因素,路面布满锥桶。无人车必须正确识别这些场景,在布满路面锥桶的场景下实现合理驾驶。工具
场景四:路口绿灯,无人车拥有路权,虽然咱们的无人车先到达路口,但必须为稍后到达的特种车辆让行。学习
场景五: 路口绿灯,无人车准备左转,遇到闯红灯高速经过的社会车辆,无人车须要识别这种场景,并及时停车避让违规车辆。测试
Perception、Prediction和Planning模块是自动驾驶的核心模块,每一个模块都存在巨大的挑战。优化
Perception输入:传感器(激光雷达)输入信息以及场景的先验信息。spa
Perception输出:道路交通对象(行人、车辆等),对道路场景的语义分割和理解。设计
Perception自己是一个很是复杂、高难度的问题,它必须可以识别各类形态万千、不一样种类的对象。好比下左一图,一群穿着恐龙服的行人,感知必须可以正确识别它们。3d
相同的物体在不一样的时间、不一样的季节它们的外观表现也会有很大的差别,这会对Perception带来巨大挑战。
各类复杂场景的分割理解难度极高。以下图左一:一个搬着箱子的人;下图左三:骑马的人。Perception必须可以正确的分割识别这些场景,而不会由于遮挡致使出现识别的错误。
Perception对检测到的物体进行下一步行为的预测,以辅助自动驾驶车辆进行合理的行为决策。
Perception要考虑物体的历史行为,好比车辆不会在短期内实现90度的转弯,所以咱们能够假设车辆在短期内仍然按照当前的朝向和速度前进;要对场景有更高语义层面的理解;要可以关注到不一样对象的属性差别和视觉线索,好比车辆大几率是会在车道上行驶上,行人会走斑马线,车辆的朝向可以大几率反应它的意图,若是行人作出停车的手势,大几率是要过马路;要可以解决待预测物体与其它物体的行为交互。
以下图所示,路边有一辆静止的车辆,骑自行车的人在靠近静止车辆时,会侵入无人车车道。Perception模块须要正确理解这些场景,并生成合理的预测曲线。
如何可以准确的预测社会车辆的行为仍然是一个存在巨大挑战的开放性问题。
Planning是Decision Making Machine,它基于Perception和Prediction的输出,规划车辆的行为,并输出Control模块,控制车辆的加减速、刹车等行为。
Planning首要考虑的是安全(safe),其次要考虑驾乘的温馨性(comfortable),再次要可以与其它交通参与者正确交互,最后要保证乘客送达目的地。如何可以知足这些条件实现良好的Planning效果仍然是一个开放性的问题。
Machine Learning是解决自动驾驶长尾问题的一种有效工具。利用Machine Learning技术能够实现从数据采集、标注、训练、车端部署的闭环循环流程,从而实现Case的不断积累,模型的不断完善。
Waymo使用了Automated Machine Learning技术生成和优化针对无人车的数据模型,极大提高了模型训练的效率。
机器学习模型不能解决全部的问题,但咱们须要的是一个安全的自动驾驶系统,因此必须有其它措施来补充ML的不足。
首先能够借助于冗余互补的传感器辅助解决这个问题。车辆同时配备了视觉、Lidar、Radar系统,各个系统彼此独立,相互补充,以最大限度保证无人车不会缺失任何信息。
其次,咱们能够采用ML和Non-ML混合系统,利用专家系统来弥补ML的不足。
首先Waymo有庞大的自动驾驶车队,能够支撑大规模的测试。
有些场景在实际道路上出现的几率很低,为了测试验证这些低频问题,须要本身构建场景,进行结构化测试。
仿真是一种重要的验证测试手段,能够轻量级安全的构造各类各样的测试场景。
自动驾驶仿真必须可以真实模拟车辆和行人的行为。这仅仅依靠简单的规则模型是不够的,咱们须要更加复杂的模型,Waymo使用一种Mid-2-Mid的Drive Agent机器学习模型,它接收定位、感知等信息,输出更加拟人化的运动规划。
Waymo提出的ChauffeurNet将Map、交通规则、道路环境等信息转化为图像信息,从而能够最大限度的利用比较成熟的机器学习模型,最终输出Agent的Trajectory。
ChauffeurNet能够解决大部分简单场景下的Prediction和Planning问题。
场景中红色的拖尾是Agent的历史轨迹,绿色是将来2s的预测轨迹。
主车成功的经过路边静止车辆的场景
主车遇到缓慢前行的车辆后减速
固然ChauffeurNet也有其局限性,好比如下复杂场景目前还不能很好的处理。
主车因为视距遮挡,直接冲出了路口
车辆没有成功完成掉头操做
对自动驾驶测试来说,最大的挑战在于很难收集到全部Corner Case。以下图所示,是人类驾驶行为分布,要通过很是长时间的积累才能获得一些Corner的驾驶行为Case。
在自动驾驶网络的神经网络模型中,可能有上千万的参数,若是Corner Case的样本数量太少,就难以保证网络模型可以学会这些Corner场景。
在神经网络模型覆盖长尾Case前,如何来解决长尾Case呢?专家系统是一个选择。专家系统融入专业的知识,经过小批量的样本就能够得到效果比较好的参数。
好比咱们计划获得实现一个轨迹优化机器学习模型,在基于运动控制理论和一系列的约束设计好专家模型以后,经过采集历史车辆轨迹,咱们就能够调整参数最小化Cost的方法,使得专家系统的轨迹输出尽量的逼近人类驾驶轨迹。
轨迹优化专家系统的另外一种模型是Inverse Reinforcement Learning技术,经过历史驾驶轨迹训练模型参数,使得它的输出尽量的逼近预期效果。
以下图所示,红色的主车,蓝色的是社会车辆。左图的社会车辆更加保守,右侧的社会车辆更加激进。用保守的轨迹训练出的模型表现就趋于保守,用激进的轨迹训练出的模型表现就趋于激进。
不论是专家系统,仍是神经网络,它们都在努力模拟人的驾驶行为,使Agent变得聪明起来,聪明的Agent能够辅助自动驾驶技术快速规模化。