自动驾驶无疑是汽车行业为用户描画的一张“大饼”,能够手离方向盘,将开车这种枯燥乏味且极具风险的“力气活儿”变成一种享受,太有诱惑力了。
但现实是,吆喝了很多年,我们似乎离真正的自动驾驶还有相当的距离。如果你找个业内人士聊聊,他可能会列举出从技术到安全,从商业模式到法律法规等一系列苦衷,借此来向你说明自动驾驶的“路漫漫其修远兮”。但是理由再多,趋势在那儿,面对这个人人都在为之而奋斗的终极目标,恐怕是有条件要上,没有条件创造条件也要上。但是这条路究竟应该如何走,如何走得更顺,就需要一个合理的规划了。
其实从技术上来讲,实现自动驾驶一直面临着一个扩展性的问题,因为自动驾驶的终极目标是根据分级、分阶段实现的,而不是一步到位,因此在这个漫长的过程中如何打造一个可扩展的技术架构去应对所有自动驾驶级别在算力、安全性等方面的要求,就成了一个十分重要的命题。而且这样的可扩展的架构,对于在这个过程中形成高中低端的差异化产品,适应不同用户市场的需要,及时将技术投入变现,也大有裨益。
自动驾驶的分级
为了完美地解答这个问题,我们还是要先回到自动驾驶的分级上。按照美国汽车工程师学会SAE给出的定义,自动驾驶从L1到L5分为五级,分别对应着驾驶支持、部分自动化、有条件自动化、高度自动化和完全自动化。
自动驾驶的分级说明
从图中不难看出,各个级别之间的差异是根据驾驶控制权的归属来界定的,自动驾驶级别越低,驾驶员对车辆的控制权就越强。比如在L1中,包括自动巡航、自动制动和车道保持等几个内容,它们实际上只允许车辆在一个方向上做加速或减速的自动控制,而不包括转向的操作,驾驶员仍然对车辆具有绝对的控制权,必须通过亲自观察环境做出正确的判断和决策;而到了L5,车辆则处于无需驾驶员干预的完全自动化状态,在大多数情况下驾驶员甚至对车辆的驾驶没有“发言权”。
从这个分级规则中我们也可以看出,在L3到L4之间,其实存在一个很高的“台阶”。如果说,从L1到L3的自动驾驶系统还是一个驾驶员导向的产品,核心要义还是由人去操控汽车,那么到了L4和L5,汽车基本上就等同于一个机器人了,在大多数情况下是处于与“人”切断联系的状态,自主运行。也可以说从L1至L3,产品广告词吹得再玄妙,也还是ADAS,只有到了L4和L5,才是真正进入了的自动驾驶的境界。
从L1到L5的这种跨度,反观上文中所提到的技术架构的可扩展性,就显得更具挑战性了。
可扩展的技术架构
想要解决这个问题,首先需要在深入理解的基础上对其进行简化。目前业内一种比较主流的认知是,可以将自动驾驶决策(THINK)分为两个部分(域):一个是感知和建模(Perception and Modeling),一个是安全计算(Safe Computing)。
具体来讲,感知和建模是对来自车辆传感器的数据进行特征提取、分类、识别、跟踪等处理,得出目标是什么、目标的XYZ坐标位置,以及目标移动的速度和角度等信息,并输出一个网格图。而感知和建模域的输出,则可作为安全计算域的输入,安全计算要做的就是将目标的网格图与环境信息融合,进行最佳路线的规划,并动态预测未来几秒内可能的变化,其计算结果输出为车辆加减速和转向两种控制信号,这样的计算处理过程反复进行,就可形成连贯的自动驾驶行为。
由于感知和建模、安全计算这两个域的功能不同,具体的技术诉求也是不同的,这主要反映在功能安全性和计算效率上。
对于感知和建模来说,由于前端输入来自多个传该器——包括摄像头、毫米波雷达和激光雷达三种类型——为了适应复杂应用场景,至少需要两种传感器去满足全面、准确的数据获取要求,这种传感器的多样性和冗余性,使得单一传感器的感知和建模系统只需满足ASIL-B的功能安全要求,即可在整体上达到ASIL-D的功能安全水平。而在算力上,定点计算即可满足大多数感知和建模数据处理的要求。
而安全计算则很不一样,由于经过传感器融合之后,没有了数据的多样性和冗余性,因此安全计算处理器必须要达到ASIL-D的功能安全要求。同时由于计算复杂性要高,必须同时使用定点运算和浮点运算——浮点运算主要是进行向量和线性代数加速——而且从安全性的角度,神经网络因为不能回溯而无法胜任,因为必须使用确定性的算法,这些计算效率上的要求,都需要与其相适应的计算架构的支持。
试想一下,如果用单一的计算架构去同时完成感知和建模、安全计算两个任务,显然是不经济的,而且丧失了灵活性。比如,当你希望扩展传感器的数量或类型时,就不得不对整个处理器结构进行替换。所以一种可扩展架构的思路就是,分别为两个域设计不同的处理器芯片与之相对应,这样后续的系统扩展升级也会更容易。
这样一来,一个架构就可以满足从L1到L5所有自动驾驶级别的技术要求,开发者不论是做面向未来的技术探索,还是做针对当下市场需求的产品研发,都可以进退有据,游刃有余。有了这样的认识和技术支撑,在通往自动驾驶的台阶上,前行的步伐也会更笃定。
(自:安富利公司)