一、什么是好的决策规划系统
Brandon Basso先定义了一个好决策系统的特征和输出应该是怎样的。
好决策系统的特征:
- 及时性(要能及时的做出决策)
- 交互决策(考虑自车的动作对其他交通参与者的影响、考虑其他道路交通参与者的动作)
- 可靠性和可重复性(如果自动驾驶系统在同样的场景做出的决策不同,说明系统稳定性不好)
好决策系统的输出:安全、舒适、老司机般的体验
二、决策规划技术的挑战
1.场景中交通参与者多
在决策系统中需要考虑场景中其他交通参与者未来的动作,一般来说在一个交通场景中可能有上百个交通参与者与自动驾驶车辆发生交互,因此自动驾驶车辆需要采样计算5000多条备选轨迹才能做出正确的决策,但是自动驾驶需要非常及时的做出决策,我们的决策规划算法通常运行频率在10H-30Hz左右,也就是说每30ms到100ms就需要计算一次,而在这么短的时间做出正确的决策是一个巨大的挑战。
2.决策不确定性(再精确的模型也无法在线精确的预测其他交通参与者的未来选择)
这里提到三个不确定性,运动学不确定性、遮挡不确定性、模型建模不确定性,这里分别对三种不确定性举例进行了说明:
1)运动学不确定性:比如上图中第一个骑自行车的直行,但是后面那个不确定是右转环式直行,第一个有可能会被第二个人喊着右转呢?这种不确定性需要被考虑。
2)遮挡不确定性:第二种就是属于盲区,你不知道盲区会不会突然出来一辆快速冲过来的车;
3)模型建模不确定性:第三种这个例子很有意思,我们在预测中都是考虑社会车辆会如何运动,但是没有考虑过如果社会车辆不是按着运动状态运行呢,比如骑行人突然摔倒该怎么办,我们所建的模型如何解决这样的问题。
上面三个不确定性的考虑已经证明Cruise走在世界前列,目前为止我们大部分自动驾驶的企业对于这些不确定性的考虑还处于初期,远没有做到这么精细的阶段。
三、决策规划整体架构
整体架构
Cruise称他们的决策系统为The Cruise Decision Engine,首先将场景感知数据作为输入(Cruise的预测模块是属于大感知模块下面,同时Cruise的预测模块会考虑障碍物与障碍物之间的交互预测的),然后在自车动作生成模块生成自车初始动作(这里为什么说是初始动作呢,因为涉及到与其他障碍物交互博弈,所以多次迭代才能确定自车的最优决策),接下来将自车动作输入到冲突解决模块,最后输入到规划执行模块,输入到执行器实现油门、刹车、方向盘控制,这里重点对各个模块进行介绍:1)动作生成模块:自车结合所有交通参与者的预测信息生成自车初始动作信息,由于自车有多种可能性的动作,比如加速通行、停车、避让等动作,会生成大量的备选轨迹,因此这里为了加速初解的计算效率,利用了机器学习的方法训练了一个模型,通过机器学习的方法加速选出最好的轨迹。这里通过机器学习的方法,大概只需要10ms的时间就可以找到自车的初始解,1%的极端情况下14ms就可以找到初始解,最差的情况下也只需要80ms就可以找到初始解。在自动驾驶中引入机器学习是一个非常棒的选择,因为这里是初始解,后面有其他模块兜底,即使错误也不会导致安全问题,但是可以加速决策求解。
自车动作生成模块
机器学习加速自车决策初始解
2) 冲突解决模块:根据自车动作生成模块生成的初始动作,然后结合交通场景中的所有交通参与者可能的运动信息进行轨迹采样,并对轨迹进行评分,选出最好的运动轨迹,并经过多次迭代做出最好的决策(3到4次)。其中轨迹评分会考虑安全性(碰撞、远离骑行人和行人)、交通规则(停牌、红绿灯)、舒适性(轨迹平滑)、不确定性以及全局规划导航信息等。这里面还提到利用强化学习去解决不确定性问题。
冲突解决模块
3)控制模块:
控制模块
四、决策规划技术细节
首先介绍了整个决策系统的最终目的:
然后针对上面的目的分别通过实际场景进行了分析:
1)解决运动学不确定性:这里介绍了两个场景,一个是前方的行人突然去打开车门(如果按照正常预测行人应该是走向路外,如果按照预测进行决策则不安全),而这里考虑了运动学不确定性,自动驾驶车辆减速避让,只能说太强了。
第二个场景则是预测行人左转,但是走到自动驾驶前方的时候自行车突然变为直行,从自车左方行驶过去,由于行人和骑行人灵活,其预测一直是难点,而这里考虑了不确定性,提前反应保证了安全。
2)解决遮挡不确定性:由于遮挡,自车右前方的车辆不能观测到,通过设置路口右方驶来的虚拟车辆解决遮挡不确定性。(右上方带绿色箭头的障碍物为虚拟不可见的障碍物),第二个场景是,提前考虑到被遮挡的行人而缓慢行走。
3)解决3D不确定性:其实主要说的是前方的路上是坡道,无法提前看到对向来车,cruise自动驾驶车辆会提前减速,这样处理是因为cruise考虑了前方是坡道的感知不确定性,二维平面已经无法处理这样的场景了,需要增加维度,考虑3D不确定性。
4)交互博弈:通过对自车行为对他车影响及他车对自车的影响进行交互博弈决策,因为我们的自动驾驶系统中不能只考虑自身的舒适性、安全性,而不去考虑其他交通参与者的体验,这样做出的决策是极其的危险,我们的决策是需要在考虑整体的平衡时提高效率,所以设计评价指标时除了自车舒适性、效率、安全性等,社会车也需要同等考虑这些评价,同时满足这两种情况才能称之为好的决策,这里举了两个例子,一个是让行,一个是抢行。
这里针对交互博弈介绍了在借道避让场景下让行和抢行的决策及考虑不确定性条件下超骑行人的案例:
让行对向来车
让行带向来车
抢行对向来车
超低速行人
1)模仿学习进行决策:使用模仿学习的方法,并离线训练策略网络生成模型进行决策,这里举了一个超过前方故障车的场景。
2)解决模型误差:这里提到下图这个场景,一个行人向左走,一个向右走,如果按照正常的预测模型,将会出现分叉的空间,自车决策当自车到达行人位置的时候两个行人走开,但是没有考虑到向左走的人其实是捡帽子,他可能向左也可能捡完帽子向右走,如果自车真的向前行驶则会碰撞到行人。在自动驾驶中行人预测是一个极其大的挑战,因为自由度比较大,不能像车辆一样有动力学约束,这里Cruise采用强化学习的方法离线训练模型,进行仿真模拟,从而解决这个问题,通过下图右边这个黄色的图可以看到,经过强化学习的训练,已经可以形成一个保守的预测解决上面提到问题。
这里还提到用强化学习的方法训练两辆自动驾驶车去泊车,但是不会碰撞,而且舒适性比较好。
3)应急反应:这里提到的这个场景真是非常惊险,从自动驾驶车辆右方突然窜出一辆自行车,如果正常的决策流程的话很可能反应延迟撞上去,因此这里cruise利用强化学习的方法离线训练类似场景,跳过预测,直接输出决策给规划和控制,及时刹车。这里有点类似AEB(紧急自动刹车),在自动驾驶系统设计中需要考虑应急系统解决这样的场景,不然的话,外卖小哥将会持续成为城区自动驾驶最大的考验 。
4) 动力学模型:通过设计一个高保真车辆和环境的动力学模型在规划控制闭环系统,保证了自动驾驶驾驶的舒适性
五、总结
Cruise这次技术开放日真正做到了秀肌肉的目的,通过各种难场景展示了其技术的前进性以及技术探索,但是技术细节基本没有透露。Cruise决策规划技术主要有以下几点非常值得我们学习,也是自动驾驶未来的发展路径:
基于规则搭建的整体架构,引入机器学习、监督学习、强化学习、模仿学习,在规则保证安全的同时,通过学习的方式提高决策效率和决策的性能。
1)考虑多种不确定性:运动学不确定性、遮挡不确定性、感知不确定性、模型不确定性。
2)交互博弈:在自动驾驶过程中,需要通过和其他交通参与者交互才能提高交通效率,这一块是自动驾驶研究难点。
3)应急反应:有些时候如果走完整个决策流程再执行可能会导致自动驾驶车辆反应慢,产生安全事故,需要设置AEB、AES功能提高系统应急反应能力。
4)预测:随着自动驾驶技术的研究进入新的阶段,单个障碍物的预测已经不能满足自动驾驶的需求,需要考虑障碍物与障碍物以及自车之间的相互影响,预测和决策将会越来耦合在一起。比较奇怪的是,Cruise将预测和感知放在了一起。
5)Cruise基本框架:采用生成自动驾驶车辆和其他交通参与者的采样轨迹,然后进行评价生成最优决策。
6)高保真的动力学模型
看完了Cruise的技术开放日,虽然没有透露特别多的技术细节,但是Cruise考虑到的问题和场景已经非常震撼,目前大多数自动驾驶公司还没有做到这种地步,如此之精细。