1700044735
1700044736
图4.2 以十字路口识别的物体形成的一个占据栅格,同时叠加了高清地图数据和传感器数据
1700044737
1700044738
来源:谷歌公司
1700044739
1700044740
二十年前,通常的占据栅格是块状显示,而且画面粗糙,视觉感官水平跟老式游戏机中的吃豆人(Pac-Man)一样。在20世纪80年代,那时的无人驾驶汽车配置的是很重的小型计算机和电视摄像机,用于数据建模的占据栅格描绘出的汽车外场景是一帧一帧静态图像断续拼凑而成的。如今的占据栅格能够实时运行,通过列出汽车附近所有物体的滚动更新清单建立一个环境的动态模型。
1700044741
1700044742
讲到这里,细心的读者会停下来发现:在占据栅格技术发展史的大部分时间里,软件始终未能胜任正确识别物体的工作。这的确就是事实,但我们需要说明一个新的重要信息:占据栅格只是一个为后续路线规划服务的空间模型。为了解读环境场景,这时需要第二个软件模块来标记汽车传感器导入的原始数据。第二个模块借助深度学习软件对汽车附近的物体进行分类,这样一来占据栅格就可以存储这些信息,以供汽车操作系统的其余模块使用。
1700044743
1700044744
通过简化图像中呈现物体的识别过程,深度学习软件终于解开了人工感知的谜题而且促动了无人驾驶汽车的发展。我们将在后文中解释深度学习的内部工作原理,在这里我们将它概括为机器学习软件的一种类型,它使用人工神经网络技术从原始视觉数据流中识别目标。
1700044745
1700044746
在过去还无法准确标记数据资料的时代,占据栅格基本派不上用场,因为它只是对周边环境中的大型实物物体的一些粗糙模拟。由于不知道“潜伏”在车外的物体到底是什么,汽车软件系统的其他模块也就无法计算出最佳的应对措施,也无法预测这些“不明物体”下一步要做什么。直到最近,无人驾驶汽车也还只能在几乎没有移动物体的静态环境中稳定运行,例如工厂、矿山、农场,以及沙漠。在这些静态的环境中,无人驾驶汽车的引导软件能够很好地发挥作用,是因为它只需要躲避遇到的每一个障碍,而无须区分它们是什么。
1700044747
1700044748
深度学习使另一个技术的应用(不确定性锥)成为可能,该技术也大大提高了无人驾驶汽车软件在动态环境中的性能。这个被称为“不确定性锥”的工具是中层控制软件的第三个模块,用于预测汽车附近物体的位置和移动速度。一旦深度学习模块标记了一个物体,占据栅格就会显示出它的存在,不确定性锥就会预测物体下一步的运动方向。
1700044749
1700044750
不确定性锥为无人驾驶汽车提供了人工智能版的场景理解能力。当人类司机看到行人站得离汽车太近,他就会在脑海中思考要转向避开;在无人驾驶汽车中,利用不确定性锥技术也会进行类似的“脑海思考”。像是消防栓这样静止的物体,会用一个瘦小的圆锥体表示,因为它基本不大可能会移动。相比之下,快速移动的物体会用一个宽大的圆锥体表示,因为它可能运动到的地方比较多,所以它将来的位置是不确定的。
1700044751
1700044752
人类驾驶员并不会在脑海中将附近的每一个物体清晰地标记成椭圆锥体。然而,我们潜意识做的处理过程实际上是大致相同的。我们的大脑不断记录更新着周围出现的人和物体,结合以往的经验和眼前事物的状态,我们能猜测出这些周边事物的意图并预测出它们下一步会做什么。
1700044753
1700044754
机器人专家从天气预报领域借用了圆锥体的概念:如果你曾经看过电视上天气预报中气象学家说明龙卷风的运动轨迹时,你也许会注意到不确定性锥。圆锥的顶端标记的是当前已知的龙卷风位置。锥体尾端宽的部分是龙卷风的可能行进路线,即接下来的几天里它可能会肆虐的地方。锥体的开角越宽,龙卷风最后的终点越不确定。
1700044755
1700044756
中层控制软件按照如下方法创建圆锥体:首先,想象下在纸上画出一个物体,在物体周围画一个小圆圈,我们称它为“当前活动圈(current circle)”;然后,再画一个大圆圈,标记出未来十秒钟后物体可能会到达的所有位置,我们叫它“未来活动圈(future circle)”。最后,用两条线把小圆和大圆的边缘连接起来。这就是不确定性锥。
1700044757
1700044758
不确定性锥替代了人类驾驶员与行人之间的眼神交流作用。从无人驾驶汽车的视角来看,一个站在路边面向街道的行人会用稍微向前倾斜的锥体表示,表明她随时可能穿过街道。如果她的眼睛不是盯着前方,而是盯着手机,她的锥体图标则是另一种形状,或许更加窄小,因为她并没有准备好继续前进。如果她扫视了一眼无人驾驶汽车,她的锥体图标将进一步缩小,因为汽车的软件会识别到她看见了这辆车,也就不太可能挡在汽车的前进路线上。越不可预知的行人,锥体的形状就越大。摇摆不定的自行车骑行者比静止的行人有更大的不确定性,相应的锥体也就更大。四处乱撞的小狗或追着球跑的孩子,也都会用更大的锥体表示。
1700044759
1700044760
有时,即使一个静态的目标也可能会用一个大号锥体表示其不确定性——具有遮蔽性的建筑——虽然它们本身不大可能移动,但是可能会遮蔽了移动的物体。对于死胡同、转弯处,或随时可能会有乘客下车的一辆停在路边敞开车门的汽车,无人驾驶汽车的中层软件系统都会标记一个大号的不确定性锥。静止的校车也可能会产生不确定的大圆锥,虽然校车本身或许不动,但是随时都可能有孩子从车后跑出来。
1700044761
1700044762
当前三个模块完成了它们的工作后,第四个模块短期轨迹规划器就可以上场了。当汽车附近的物体都被标记并计算成了大小不一的不确定性锥,无人驾驶汽车的轨迹规划器就能制定出汽车前进的最佳路线。轨迹规划器使用精密完善的算法计算出最有效的前进路线,并保证遵守交通规则,减少行程时间和碰撞风险。
1700044763
1700044764
计算机尤其擅长计算这种非线性轨迹预测。在过去的几年中,软件已经被提升到了新的高度——计算机能比人更好地预测出物体的运动轨迹。特定条件下,可能的结果越多,计算机在计算各种可能性时表现得越好。添加的影响变量越多,如行人可能的运动范围,轨迹规划器的计算结果反而会提升更多。
1700044765
1700044766
以目前中层软件的优化升级速度来看,过不了多久,无人驾驶汽车的操作系统将实现驾驶过程三位一体的完美掌握——实时响应,稳定可靠以及智能处理。这是否意味着应该允许无人驾驶汽车上路了?可能吧。但首先,人类乘客还需要无人驾驶汽车拿出更确凿的可靠性证据,以及对机器人司机可靠性的清晰界定。
1700044767
1700044769
绝对安全可靠
1700044770
1700044771
我们已经讨论过当前的技术瓶颈,操作系统目前仍难以做到完全的可靠性。此外,足够全面的法律标准也需要进一步定义并量化。很多人坚持认为,无人驾驶汽车只有达到100%完美的可靠性才能合法,那意味着没有发生任何碰撞、事故或失误。然而事实是,如果需要完美的可靠性,无人驾驶汽车将永远不会获得合法地位,因为没有任何操作系统能做到始终完美可靠。
1700044772
1700044773
操作系统出错的概率很大,而且即使设计最精密的操作系统也会时不时地出问题。在个人电脑上,用户可能会安装一个有漏洞的新应用程序,以至于影响系统的核心程序。系统可能会被恶意的电脑病毒感染;一个新的硬件外设也可能会不经意降低整个系统的性能。
1700044774
1700044775
电脑的操作系统有两个特质,使其无法做到绝对可靠和安全:第一,它们包含数百万行代码,数量之大以至于熟练的程序员也很难迅速搜寻到潜在的漏洞;第二,操作系统要承受所谓的故障隔离(Fault Isolation)之苦。类似windows、iOS、Linux这样的操作系统,是以这样一种方式建立的:它们的子部件之间或程序之间几乎没有什么隔离。Windows XP的架构包含大约500万行代码,而这些代码又负责在单片数字“工作区”或内核运行着成千上万个程序。这些成千上万的程序联系还都连接着一个单一的二进制程序。类似于所有登山者都沿着一根绳子前进,如果一个人倒下去,所有人都会被拖倒。
1700044776
1700044777
硬件问题经常是计算机操作系统故障的根源之一。机器人操作系统需要管理更庞杂的硬件组件。如果像鼠标、键盘和耳机这些简单的外设都能导致计算机操作系统崩溃,那么汽车“硬件”带来的不可靠性也就可想而知了,比如它的轮胎、刹车、方向盘,以及驱动无人驾驶汽车所需的各种传感器。
1700044778
1700044779
每个附加的硬件都需要一个专门的软件驱动程序,使该硬件能与安装在操作系统上的其他部分沟通。所以,硬件的驱动问题是系统故障的另一个更主要的原因。驱动问题可以带来严重危害:操作系统故障中大约有70%是由驱动引发的崩溃,这个错误率是软件代码漏洞引发问题的3~7倍。
1700044780
1700044781
操作系统越复杂,越难预测它会出现何种问题。当代码行数达到数千万级时,即使编写无误也可能会崩溃,更何况若有黑客给无人驾驶汽车安装流氓硬件或胡乱修补操作系统,更是会威胁到数据安全。
1700044782
1700044783
对于无人驾驶汽车而言,操作系统崩溃引发的风险也更高。当个人电脑全面崩溃时,最多也就是让人恼火,没有用户会死于“蓝屏”“白屏”“黑屏”。然而,在无人驾驶汽车上,某个硬件的组件停止响应,整个操作系统受困于某种系统性问题并导致运行十分缓慢,这些问题虽然不是灾难性的,但也是十分危险的故障,而系统崩溃几乎就等同于死亡。
1700044784
[
上一页 ]
[ :1.700044735e+09 ]
[
下一页 ]