深度解析:告诉你自动驾驶成功的关键是什么
自动驾驶汽车有三大主要系统功能:(1)汽车传感器相关系统功能;(2)汽车计算相关功能,也就是人们所认为的人工智能;(3)汽车控制相关的功能,控制油门、刹车、方向盘等。
今天我将主要讨论传感器和传感器数据使用方面的问题,即传感器融合。虽然今天只谈这一个方面,但同时也要意识到三大系统必须协同运作,这一点十分关键。就算车上装了最好的传感器,但人工智能和控制系统都很弱的话,那肯定不是一辆好开的自动驾驶汽车。但如果你有很棒的人工智能和控制系统,但配的传感器很糟糕的话,同样还是会碰到问题,因为如果传感器不灵的话,汽车就没办法感知所处的周遭环境,继而撞上附近的物体。
作为CyberneticSelf-DrivingCarInstitute的执行董事,我对传感器融合特别感兴趣,因此我认为,可以就这一话题提供一些见解。但是,正如我之前所提到的,另外两个系统对于拥有一辆能正常运作的自动驾驶汽车同样重要。
自动驾驶汽车需要有能探测所处环境的传感器,此外还需要有专门的子系统来控制传感器以及处理传感器收集到的数据。这些传感器可以是摄像头,收集图形数据;可以是雷达,通过无线电波探测物体,也可以是利用激光光波的激光雷达,还可以是超声波传感器,等等。传感器可以分为主动传感器和被动传感器两种:被动传感器,诸如摄像头,只能接收外部的光,形成图像;主动传感器的一例则是雷达,雷达可以发出无线电磁波,并接收反射回的电磁波,探测是否有物体在附近。
为了解读所收集到的数据,需要通过某种方式将各类数据整合在一起,这一过程被称为为传感器融合。通常,整个人工智能处理系统会模拟出汽车周围环境,人工智能系统同时还会不断接收新的传感器数据,更新模型。传感器数据融合之后,人工智能需要决定应该采取何种行动,然后向汽车的控制系统发出合适的指令,执行这些命令。可以类比人类身体的运作方式。人的眼睛在接收了视觉图像后,接收到的图片会送到人的大脑。你的大脑将构建一个周围世界的模型。基于收到的新图像,大脑会更新模型,并推断出身体下一步该做什么。
假设现在你在巴塞罗那奔牛节现常站在街转角,等着疯狂公牛的到来。大脑建立了一个周围街道和行人的模型。突然你看见公牛朝着你冲了过来。公牛冲锋的画面会传到你的大脑,随后大脑更新当下情况的模型,认为你应该“撒开脚丫子跑”。然后,大脑就命令你的动起来,开始逃命。大脑命令你沿着街道逃跑,远离公牛。
在这个类比中,我们有一个传感器,也就是人的眼睛。眼睛收集视觉图像。眼睛本身不会处理收集到的图像。主要功能就是收集图像。你的眼球有一定的容错性:即使遮住一部分视线,眼睛还是可以捕捉到图像。就算视线被类似纱布的东西完全遮住了,眼睛的功能还是正常的,但是它也会意识到有什么地方不对。这一信息一样会传到大脑。
就解读图像来说,眼球本身不具备处理图像的功能。据目前所知,眼球无法识别出朝着你冲过来的是公牛。参与识别的是大脑,在接受到眼睛收集到的图像后,大脑尝试解读图片的内容和意义。大脑会对周围环境进行监控。当你站在巴塞罗那的时候,大脑知道你在奔牛节活动现常大脑建立的这种模型能结合环境对公牛冲锋的图像进行解读。因为它意识到了,在所处的这个环境里,有可能出现公牛朝着人冲过来的情景。
假设你是站在纽约时代广场上。模型里可能不会包含有公牛冲过来的情景。就算如此,大脑还是能处理这样一张图片,只不过和纽约时代广场的模型不兼容。朝你冲过来的可能会是一辆出租,也可能是一个穿着蜘蛛侠外衣的怪咖,但是绝不会是一头公牛。
人类有多种感官。人的大脑除了利用视觉,还会利用触觉、能察觉怪味的嗅觉、味觉,还有听觉来。与人类五感配套的,还有身上的各种器官。例如,耳朵是听觉传感装置。耳朵接收到声音后,将信息传给大脑。大脑试图找出这些声音的含义。
回到刚才巴塞罗那的那个例子,在公牛出现在街转角之前,你可能就已经听到了公牛的蹄声。听到蹄声后,大脑会立即更新模型,加入“公牛在附近”的信息。甚至还可能命令你开始跑路。但它也可能会命令你先等着,通过眼睛确定公牛是不是朝着你冲过来。
在接收到某一感官的信息后,大脑可能需要另一感官的数据来进行对照和确认。在自动驾驶汽车上,可能只有一种传感装置,比如说雷达。也就是说,这类自动驾驶汽车只能通过雷达探测收尾环境。就像人类只有视觉,而失去其他感官一样。
自动驾驶汽车还可以搭载多种传感装置例如雷达、激光雷达、超声波传感器。自动驾驶汽车上既有搭载单一类型的,也有搭载多种类型传感器的。拿特斯拉举例,一辆特斯拉在前保险杠下方装雷达单元的同时,还有有六个超声波探测器单元,分别分布于车外壳或者车里。
每种类型的传感器都有不同的用途。眼睛用来看,耳朵用来听,不同类型传感器功能也不一样。例如,雷达用于距离探测和物体的速度,探测范围通常在500英尺左右。超声波传感器则用于近距离探测,探测范围在距车3到6英尺内。这种雷达多用于常见的驾驶情景之中,检测无人驾驶汽车前方是否有其他车辆。而超声波传感器则用来辅助停车,因为停车时汽车需要知道附近车辆的位置。超声波传感器还可以辅助变道,在变道的时候,传感器可以探测到视觉盲区里的车辆。
之前提过,眼睛有一定的容错率,即使在有障碍的情况下也能获取部分图片。自动驾驶汽车上的传感器也同样如此。一个雷达装置可能会检测到电磁波没发出或者反射回来的电磁波信号不稳定。这有可能是雷达本身出了问题。也有可能是所探测的物体超出正常探测范围,比方说探测范围是500英尺,但物体距离是600英尺,所以反射回来的雷达波信号很弱。雷达也就无法确定物体到底在不在那。
也有可能会出现“鬼影”,也就是传感器探测到有物体,但实际上没有的情况。想象你身处一间非常暗的房间里,然后觉得眼前出现了什么东西漂浮在空中。那到底是真的有什么东西,还是眼睛的错觉呢?眼球会欺骗我们的大脑,基于虚假信息对大脑进行刺激。
类似的,已经有研究人员证明了,可以愚弄自动驾驶汽车上传感器。利用一些图片,研究人员愚弄了自动驾驶汽车上的摄像头,让他们误以为自己处在一个和现实不相符的场景里。想象你在巴塞罗那,但我在你眼前举着一张纽约时代广场的图片,于是你的大脑会试着弄清楚到底发生了什么:眼前的究竟是一张图片呢?还是时空错乱了?
研究人员还戏弄了雷达。可能大家已经听说过,很多年前就有人借助违规设备,糊弄警车雷达测速仪的事情。有了这种装置后,警车雷达测速仪显示的速度远低于汽车实际驾驶速度。那些设备都涉嫌违法。
传感器的探测结果可能会出现“假阳性”的情况。“假阳性”是指传感器探测到实际不存在的物体的情况。假设雷达探测到车辆正前方有另一辆车停在路上。自动驾驶汽车的人工智能系统或许会紧急刹车。但车载摄像头传输的画面却显示前方没有车辆,与雷达侦测到的数据冲突。这个时候,人工智能系统需要决定哪个才是正确的,是显示有车辆的雷达,还是显示没有车辆的摄像头。也许是因为那个物体摄像头拍不到,但是雷达能侦测到。又或许雷达只是谎报,应该相信摄像头,因为摄像头拍摄的照片里没有任何物体。
如果雷达是正确的,而且物体确实在那,但是摄像头的照片里却没有物体,那么摄像头报告的结果就是“假阴性”。“假阴性”是指传感器显示没有,但是实际上却有物体存在的情况。任何传感器在任何情况下都可能会汇报“假阴性”或者“假阳性”的情况。自动驾驶汽车的人工智能则需要弄明白哪个是真的,哪个是假的。这对人工智能来说很难做到。
人工智能通常会把所有的传感器数据都列举出来,判断是否有哪一个传感器出错了。一些人工智能可能会预先设定好,认为某些传感器比其他传感器更准确,所以出现冲突的时候就依赖优先级高的传感器。其他可能会启用投票机制,比方说有X个传感器判断有东西在那儿,然后又Y个传感器显示没有东西,若X大于Y的话,那么人工智能就断定有东西在那。另一种流行的方法是随机抽样一致性算法(RANSAC)。
考虑到交通道路的风险问题,相比之下,在一个不存在的物体前停下来,比汽车撞上一个没有侦测到的物体要的情形要好得多。这就是传感器融合发挥作用的时候。传感器融合包括收集各种传感器数据,并试图理解它们。
在一些汽车中,例如特斯拉的某些型号中,雷达和摄像头数据在输入至人工智能之前,会被整合在一起。然后,人工智能接收到的数据就是经这两个单元融合之后的数据,而且还会与其他类型传感器收集到的数据整合在一起,比方说超声波传感器。
之所以提到这一点,是因为对自动驾驶汽车而言,没有必须将哪几类传感器数据融合在一起的说法。传感器数据间的融合可以有多种组合。这一点很重要。想象一下,如果你的大脑接收到的不是来自眼睛和耳朵的原始数据,而是一些预预先处理过的。处于中间过程的传感器融合将会产生各种假设和转变,以至于大脑对这些假设和转变形成依赖。
自动驾驶汽车内部有一套允许设备间进行*数据交换的网络。汽车工程师协会(theSocietyofAutomotiveEngineers)已经制定了一套称为“控制器区域网络”(ControllerAreaNetwork,C.A.N.)的普适标准。该网络不需要计算机主机,且允许设备在网络中*发送信息。网络上的设备会一直处于随时准备接收信息的状态,也就是说设备会一直检查是否有指向该设备的信息。这些设备通常被称为电子控制单元(ElectronicControlUnits,ECU),被视为该网络中的节点。
控制器区域网络类似于TCP-IP协议,允许在设备之间进行异步通信,并且每个消息都包含在一个信封中,除了表示消息的ID,还包括错误校正代码和消息本身。
传感器融合通常被称为多传感器数据融合(Multi-SensorDataFusion,MSDF)。获取了多个传感器的数据之后,会有一个低层级的分析,确定哪些传感器运作正常,哪些传感器可能有问题。MSDF将通过范例或一套方法来判断哪些传感器可能出现故障,哪些是正常的。最终,它将发送原始传感器数据整理成的转换信号,附带关于这些传感器数据的一些结论,一齐传送至无人驾驶汽车的大脑人工智能。人工智能系统或者处理系统会更新环境模型,并在更高、更抽象的层级上作出决定如何处理的决定。结果通常是对汽车进行控制,比如加速、减速、左转、右转等等。
视野(Field-of-View,FOV)对自动驾驶汽车了解外部世界而言至关重要。例如,汽车前安全杠的雷达装置通常会发出类似风扇的雷达探测波,但它只能侦测到汽车前方的物体。如果物体和汽车角度偏移的话,车前雷达是侦测不到的。同样,车前雷达也无法侦测到车两旁或者是车后的物体。人工智能系统需要意识到,车前雷达所提供的信息仅仅是关于车政策前方路况的。也就是说,仅依靠车前雷达,自动驾驶汽车完全看不到车两旁和车后的车辆。今天的自动驾驶汽车上,可以使用激光雷达来360度模拟周围的环境。激光雷达利用激光脉冲,会360度不断旋转。如此一来,激光雷达便可全方位探测汽车周围的物体。
当激光雷达和前置雷达、前置摄像头以及汽车侧面的超声波传感器相结合时,可建立并维持一个更贴近现实的环境模型。你可能会想,为什么不在无人驾驶汽车上装一堆这样的传感器呢?难道不是传感器越多模型也就越精确?理论上这样做是可行的,但实际上这种做法会导致汽车成本、重量和体积增大。
自动驾驶汽车制造商都在想方设法搞清楚用多少传感器、用哪些传感器、传感器如何又该如何搭配,才能满足自动驾驶汽车的需要。传感器越多,意味着数据也越多,但是也伴随着计算量增大、硬件成本升高。同理,传感器越少、数据以及运算也就越少,成本也就越低。我之前提到过,特斯拉的埃隆马斯克说他不相信自动驾驶汽车需要激光雷达,所以特斯拉的车都没有用激光雷达。他的说法对不对呢?目前我们还不知道。时间会告诉我们答案。
行业发展到某一程度后,会出现这样一种局面:一些自动驾驶汽车是安全的,另一些不安全,或者说一些自动驾驶汽车比另一些自动驾驶汽车更安全。
这就是为什么我一直预测未来我自动驾驶汽车行业会进行洗牌。那些不那么安全的传感器搭配方案会被淘汰出局。目前我们还不知道什么是正确的组合。从理论上讲,自动驾驶汽车的公路测试会揭露哪种方案是最安全的,但希望结论不是建立在人命之上。
基于传感器数据,通常需要进行多目标跟踪(Multi-TargetTracking,MTT)。需要对原始数据进行检查,以确定数据特征,并执行所谓的特征提龋
借助摄像机的图片,传感器融合技术发现一位行人正站在离车几英尺远的地方。如果担心行人可能会走到汽车行驶路径上的话,人工智能可能会决定追踪该行人。随后,当照相机再次拍摄到行人的照片时,人工智能便会将该行人归类为需要追踪的“目标”物体。如果车马上就要撞上行人了,人工智能可能会进行紧急制动。
人工智能系统需要从动态和静态两个角度来解读传感器数据。从静态的角度来说,传感器数据显示了汽车周围的物理空间。比方说车前方有一辆车,右侧有一位行人,左侧有一堵墙。从动态的角度来说,人工智能需要意识到,随着时间的推移,事情会发生变化。例如,之前的行人现在已经从车的右边移到了左边。之前在前方的车已经不在前面了,因为刚才它停在路边了。随着各种传感器数据流入人工智能系统,它将对数据进行实时分析。人工智能系统出了有静态模块外,还需要动态模块。
处于A位置的物体正在向B位置移动,那么当物体到达位置B时,自动驾驶汽车应该如何应对?
所以说自动驾驶汽车不光要能识别当下环境,还必须能够预测未来。人类司机再开车的时候也是这样的。假设我们看到一位滑滑板的少年。他在人行道上快速移动。我估计他会从路边跳下来,滑到我车的行驶路径上。因此,我决定提前转左转弯,避免在他跳到机动车道的时候我撞上他的情况。如果我乘坐的是一辆自动驾驶汽车的话,汽车也会收集关于这名少年的各类数据,而且在其构建的环境模型里作出同样的预测。
对于那些了解微处理器处理速度的人来说,他们可能会想,每一秒都会有大量的传感器数据产生并涌入人工智能系统,那自动驾驶汽车是如何做到对这些数据进行实时分析并及时作出各种决定的呢?
这确实需要大量高速处理器同时运转。
具体说来,流程应该是这样的。首先有一幅雷达图像被捕获,负责雷达单元的电子控制单元(ECU)花很短的时间对捕捉到的图像进行预处理。然后借助控制区域网络(CAN),把图像发送到传感器融合中心。在区域网络传输图像,以及接受信息都要花时间。同时传感器融合中心也会接受来自摄像头、超声波传感器和激光雷达传感器的数据。传感器融合处理了所有这些数据,又需要短暂时间。最终结果被传到人工智能上。人工智能需要对其进行处理,并更新环境模型。这需要时间。然后,通过控制区域网络(CAN),人工智能向汽车控制系统发出指令,这需要时间来完成。然后,控制系统接收命令,明确它要做什么,继而采取实际行动。
这一切都需要时间。如果处理器的速度不够快,导致从传感器接受数据到最终汽车作出反应之间的延迟过长的话,可能会成为一起自动驾驶汽车事故,导致有人因此丧命。
这不仅与处理器的原始速度有关,而且也与处理的内容有关。例如,如果人工智能计算的时间过长的话,就算最终得到的决定是正确的,也没有时间来执行。
你肯定有过这种经历:坐在一台有人类开的车里,司机犹豫要怎么开,然后在路口的地方突然转向。犹豫让他们陷入了两难的困境:他们要么是在红灯之前加速冲过路口,要么是在路口紧急刹车。不管哪种情况,由于它们的犹豫不决,都提高了自己和周围人的风险。自动驾驶汽车也会陷入完全一样的困境之中。
下面是一些关于传感器和传感器融合需要考虑的因素:成本、体积、重量、可拓展性、可靠性、制冷、安装、空间、故障自检、报告、容错性、灵活性、冗余性、反戏弄。
传感器融合是自动驾驶汽车发展中的一个重要方面。对于在做的软件工程师或计算机科学家的读者来说,你们有很多机会来提出新思路和创新方式来改进传感器融合。
自动驾驶汽车制造商知道,良好的传感器融合对一款正常运转的自动驾驶汽车至关重要。大多数消费者不知道传感器融合正在进行,也不知道它是如何进行的。他们只想知道,自动驾驶汽车有多神奇,能不能安全地把他们从Y点带到Z点。传感器融合得越好,用户们就越难以察觉其存在,我们的自动驾驶汽车也会越安全。
下一篇: 田大新:未来无人车离不开“群体智能”