自DARPA挑战赛以来,自动驾驶的规划算法大量涌现,但目前还没有一种算法能够覆盖所有的场景。
在面对高速场景、低速场景、自动泊车场景、复杂动态的非结构化道路场景,交通参与者密集场景等场景时,大多数自动驾驶系统会根据其模型最可能的场景来规划运动,以确定周围物体的作用。
目前大多数自动驾驶汽车能够以3 Hz至10 Hz的速度运行运动规划系统,但这远远不够。
美国杜克大学内部孵化的公司Realtime Robotics能够以1000 Hz运行,并行通过大量可能轨迹的数据网络,从而让系统在更短时间内考虑更多潜在结果,做出最佳决策。
这得益于他们专门为运动规划定制的处理器,提高了运算效率。
Realtime Robotics最初在桌面手臂机器人上做实验,基于FPGA开发出了一种可快速进行机器人运动规划的定制处理器,使运动规划流程的速度提升了三个数量级,而使用的电量仅为之前的二十分之一。
现在,他们计划把这种芯片运用在自动驾驶汽车上。
一
为什么要关注运动规划芯片技术?
答案很简单,它是自动驾驶汽车上的决策大师,会决定车辆下一步要做什么。
为这个决策过程加速不仅意味着车辆做起决定来更加雷厉风行,还意味着决策质量的提高,并最终为车辆安全性添砖加瓦。
在这个无法预知的世界中,计算机是真正的“猜拳大师”,它非常擅长推测人类的下一步动作,尤其是在像公路这样的半结构化环境中。
在对非确定性物体(那些有独立动作的物体)的动作进行预测时,大多数计算机用的是概率性模型。
举例来说,大多数模型都会默认高速上的前方车辆会待在自己的车道里以相同的速度进行巡航,如果不打转向,它变线的概率比较低,至于突然刹车的概率就更低。
大多数自动驾驶系统运动规划主要靠存储模型,而这些模型涵盖了大多数大概率情况,如果不出意外,车辆周边物体会遵循这些模型运动。
这些模型能为车辆提供信息级别,这样一来系统就能根据该级别做出运动规划。
举例来说,当系统无法判断下一步会发生什么时它就会选择减速停车。
不过,这样的规划每次只能对应一个场景,而非像奇异博士那样一次看穿14000605种可能(包括那些低概率的可能)。
在理想化状态下,自动驾驶系统确实应该一次看穿所有可能并做出那个最优抉择以便让车辆保持最佳状态。
可惜,大多数自动驾驶系统所用的芯片都“智商”不够用,它们每次只能处理一个运动规划,速率介于3 Hz与10 Hz之间。
Realtime Robotics的技术就强大得多,它能一次做出数十甚至数百个运动规划,每个运动耗时还不到1毫秒,也就是说Realtime Robotics的运动规划速率为1000 Hz。
有了这项技术,系统就能在更短时间里考虑更多可能并从中找出最佳决策。
Realtime Robotics在搭建车辆运动规划系统时第一个用到的是网格,整个过程在5-10秒之间,这个预先计算好的巨大图表包含了所有车辆在无障碍环境下的不同轨迹。
除此之外,网格还包含了节点与界限:
其中节点指的是特定车辆构型(比如位置、速度和行驶方向),而界限则连接了节点并代表着1秒之内这些构型间的轨迹。
在这个网格上有数不清的界限,它反映了网格涵盖的完整时间线上构型状态间的所有可能。
每个界限都有自己的“代价”,比如燃料消耗或乘客舒适度,其中“代价”最低的界限即是最高效也最平缓的动作。
二
在每个规划区间(约为每10毫秒)内,Realtime的芯片用了如下步进顺序来完成运动规划:
1、将来自摄像头、雷达、激光雷达和其它传感器的感知数据灌入自动驾驶系统,系统用这些数据来识别静止障碍物(例如建筑物和树木)、可确定的移动障碍(比如足球)和那些非确定的移动物体(比如其他车辆、行人和自行车等)。
带有静止和可确定障碍物(在模型中会被看做大号的静止物体)地理位置的感知数据会下沉入网格,而那些与障碍物相交的界限“代价”很高,因为你可不想让自己的车跟在这些障碍物屁股后。
2、至于那些非确定性的障碍物,系统就必须进行有根据的推测,判断它们在规划时间间隔中会遵循什么轨迹。
目前已经有许多研究人员在这个问题上花了大量时间,因此相关的模型并不少。系统会根据这些模型做出推测,在模型中将非确定性障碍视作静止物体,并对网格界限进行升级。
3、网格中“吸附”了所有障碍物数据后,真正的运动规划就要开始了。这时,Realtime Robotics的定制化硬件会正式登场,其核心秘方是FPGA芯片,它能在硬件中完成网格数据的编码,随后穿过网格界限(大多数是平行的)以找寻那个“代价”最低的路径。
硬件的平行性让运动规划步骤变得异常迅速,不到一毫秒就能生成一个规划。此外,如果你想扩大规模,直接添加更多硬件就行。
4、这时,你从Realtime系统中拿到的运动规划已经完全可以和其他系统平起平坐了。它们的不同在于Realtime的系统比竞品快了一到两个数量级,这也意味着它能直接绕回第三步,然后用稍有不同的推测重新将这个过程走一遍,以便猜测非确定的移动障碍物下一步会有什么动作。
鉴于大多数模型只做概率性的推测,因此它们对未来的判断只能算很有可能,与真实发生的还是会有差距,情况越复杂推测正确的难度就越大。重复执行第三和第四步,不论是10遍还是100遍,你就能挑出可能性最高的情况,做出最有安全保证的运动规划。
5、最后一步就是执行运动规划,或者更精确地说,告诉车辆下一步切入网格的哪个界限。
鉴于每个界限代表着车辆1秒钟的行驶时间,而一个新的运动规划每10毫秒就能完成计算和执行。
因此,最后一步其实更像是每秒刷新100遍的运动规划中的第一个动作。车辆可能会按这个规划执行,也可能转投效果更好的新规划(甚至是完全不同的)。
在这个无法预知的世界里,更快地运动规划就意味着你的车辆能以最快的速度做出最佳决策。
这一切不只是要在短时间内生成大量运动规划,还与速度息息相关,毕竟系统做运动规划时,车辆可是在高速行驶的。
在60公里/小时的速度上,10毫秒与100毫秒规划速度之间能差出一米半的距离,这点距离足可以决定一个行人的生死。
在更快的速度和更加受限的环境中,例如高速公路上,系统可能要考虑更少的规划以换取更快的速度,从而为车辆腾出更多的反应空间。
在更复杂的环境中车辆速度较慢,系统就可以花更长的时间进行规划以应对不可预知的情况。
三
Realtime已经在模拟环境中做了大量测试,视频中列举了在两个场景下,这一系统被证明安全性显着提高:
1骑自行车者(没有通行权)穿过一个十字路口
一个骑自行车的人在一辆车的遮挡下,违规通过十字路口。
通过模拟不同车速,自行车速度和自行车穿越时间下,以目前自动驾驶做决策的平均速度10Hz为例,会有6.25%的几率发生碰撞;而在Realtime系统1000Hz下碰撞不会发生。
2行人突然从停放的汽车后面出现
行人突然从停放的汽车后面出现,从感知到做出决策的时间很短,通过不同车速和行人移动速度的不同组合测试,发现按照一般决策系统处理的速度22%的几率会击中行人,而更快决策速度下,可以避免此事故。
毫无疑问,计算的速度当然是越快越好。
目前,Realtime Robotics的芯片已经应用在桌面手臂机器人上,在自动驾驶汽车上的应用还处于模拟环境中,在真实交通环境中的表现如何,还有待进一步测试。
在这个以AI与传感器为主要创新突破口的时代,Realtime的芯片创新确实令人欣喜,下一步就看业界怎么用好这项技术了。