AI系列之自动驾驶(二)——敲黑板了,这是你必须要知道的三层控制
前言
机器人学家汉斯·莫拉维克曾经就机器执行简单的自动化任务进行过精辟的总结,想让计算机在高阶智力测验方面达到甚至超越成人的水平是相对简单的,可是如果想要让他达到哪怕一岁小孩对世界的感知能力、无意识的直觉和趋利避害的生物天性却是极为困难的,甚至是不可能的,是为“莫拉维克悖论”。
自上个世纪五十年代提出人工智能的概念以来,起起伏伏,潮起潮落,符号主义、专家系统、深度学习等理论先后登场,都是为了一个目的—创造出一个可以像人一样思考、像人一样行动、像人一样感知、理性的行动和决策的系统,千方百计运用各种理念和手段只为达成一种类人的智能体,这在某种程度上说是一种“上帝造物”行为。
直到今天我们很容易可以让机器代替人类完成90%的甚至99%的决策和行动,可恰恰那不到百分之一的区间像一片极难跨过的禁区一样横亘在我们面前,这是人工智能的鸿沟,也是自动驾驶的愿景能否落地的根本。AI的三个阶段中,可执行快速计算和记忆存储的计算智能阶段已然迈过,基于深度学习的感知智能阶段我们尚在努力,但可以执行想象、情感等人类独有能力的认知智能还没有有效的实现途径,当然这要基于各项相关基础学科的研究成果,或许真有实现的一天也未可知。自动驾驶能否实现L5级的无人境界,某种程度完全取决于人工智能对于剩下1%的研究和应用程度。
现存的技术瓶颈相信迟早会得到解决,但我们已知的任何操作系统都无法保证完全的可靠性,相反,操作系统出错的概率某种程度是无可避免的,现存最精密的操作系统也会频繁出问题,而且越是庞大的系统越是难以预测会出现的问题,那种动辄数百万行甚至上千万行代码的电脑操作系统就是明证,而且软件操作系统还要协调管理庞杂的硬件组件系统,硬件的任何不稳定性甚至会反向影响软件的进程,如此犬牙交错的连接关系,想要不出任何问题,难如登天。
行文至此,那就意味着无人驾驶想要突破这一切达到要想实现100%的完美(即不会出现任何碰撞、事故和失误)是极为困难,甚至不可能的。如果不允许操作系统存在出错的概率,而且必须基于此才能取得合法地位,那么无人驾驶的愿景可能永远都是空中楼阁。
那么亟待解决的问题就来了,无人驾驶的特殊性在于,电脑系统的故障可能对我们的生活和工作带来一定的困扰,但是无人驾驶汽车一旦发生故障,那很可能会发生无可挽回的事故,究竟将无人驾驶的故障发生时间或者法定的容错率设定在何种域值内才是合理地或者说是可以被接受的,安全行驶时间是一个很好的衡量指标,如果一辆自动驾驶汽车的安全使用时长是人类安全操作时长的数倍或者数十倍呢?后面立文再做讨论,没搂住,扯远了,现在我们转向本文的宗旨,对于自动驾驶汽车的控制系统的讨论。
自动驾驶,一个控制工程学和人工智能的交叉学科。控制工程学主要解决汽车机械零部件的协调运行和复杂系统的控制管理,通过信息的输入和输出与环境进行交互反馈;人工智能则为自动驾驶系统提供保证其完美运行的智能决策体系。二者如何协调运行,我们从三个层级进行阐述:
一、底层控制系统
我们可以将涉及汽车底层机械元件的操控行为或硬件反馈控制系统例如刹车、加速和汽车转向都归为底层控制系统,底层控制的核心任务是保证各项硬件系统稳定的运行在计算好的最佳设定值上,保证各项子系统的运行维持在最优的区间范围,规避可能性风险,精准调控至最佳路径。其背后是一套均衡理论,通过调动汽车的所有控制系统将汽车的行驶状态始终处于某种平稳的均衡状态,当然这背后依赖的是庞大的传感器数据反馈、计算力和反馈控制系统。例如,当车速过低时,增加汽油注入来提高车速,当车速过快时,减少汽油注入,将实际车速降至预定安全值,简单来说就像一套自动稳定器一样。
底层控制系统涉及的算法种类繁多,但其核心都是确保某个部件系统甚至整个系统的流畅运行。随着传感器接收到的数据量越来越大机器学习技术将会发挥更大的作用。
想要完美的操控机器达到预定目标,需要工程师们的不懈努力。这里我们简单举一个具有代表性的例子——“滞后时间”概念。自动驾驶系统本身就需要有非常灵敏且即时的操控反馈系统,在执行风险规避动作或者相关异常情况下需要即时决策即时反馈,如果汽车硬件系统在此过程中出现较长的时间延迟反馈,比如在视野范围内突然出现需要规避的障碍物,决策系统虽然发出了规避指令,但是机械活动却耗费了更多的时间,那么就可能出现不可容忍的意外发生。燃油发动机注入燃料的过程,也同时伴随着机械的、化学的活动过程,从动力的产生到传导以及相关控制元件的联动都是需要时间的,这就产生了“滞后时间”。“滞后时间”的存在就意味着汽车的启动、加减速、转向、刹车灯都难以进行精准的时间控制。当然,绝对的精准控制是不可能的,但如何将“滞后时间”的负面效应降到最小,如何将控制反馈系统的运行时间竭力压缩,却是可以精益求精的方向;一种解决方案是引入预测算法、投入更加强大的计算力,预测算法可以通过传感器随时回传的环境数据流监控行车环境,提升情境识别的能力,并结合静态地图、周遭自然环境精准计算行车时点的燃料注入量使得发动机可以始终恒速运行提前对异常情况进行控制准备。强大的计算力可以极大缩短数据处理时间,即时提供决策指令,并配合算法为恒速运行和精准计时提供更高的准确度;另外一种干脆舍弃燃油发动机直接改用电动式发动机,只要为引擎配置好特定的电压电位,引擎就始终能即时产生对应程度的力矩,为行车提供动力。当然这也是巨头们纷纷将电动式引擎配置在他们的原型车上的原因之一。
二、中层控制系统
中层控制系统主要依靠强大的算法和计算力来支撑其运行,其工作原理包括四个模块:第一个模块是一款可以针对汽车行车环境进行三维数字建模并进行即时、持续的更新的软件工具,名曰“占据栅格”;第二个模块是一个深度学习软件,用于标记和识别汽车传感器流入的原始数据,并借助算法通过数据分析对汽车周遭的物体进行识别分类;第三个模块是使用“不确定性锥”替代汽车环境物体,并进行动作预测;第四个模块即短期轨迹规划器,负责引导汽车进行障碍躲避,并保证汽车始终处于交通规则的范围内执行行驶动作。
首先,我们明确占据栅格就是一个三维空间模型,这个空间模型填充着两种数据,一种是内置的高清地图的静态数据,一种是来源于汽车传感器源源不断地环境数据,并且根据行车进程进行即时更新,环境数据通过第二个模块的深度学习软件进行物体识别并可用特殊符号对物体进行标记。至此,高清地图数据将为“占据栅格”的三维数字空间填充道路图像并且根据汽车行驶路径进行持续变换,由深度学习软件识别的物体也根据传感器的探测数据分布在三维数字空间中的汽车周边并进行实时更新,一个模拟现实的空间环境就产生了。
到了这一步,还是远远不够的,系统仅仅能够知道汽车处于地图的什么位置,哪些地方分布着哪些物体,汽车要想安全的行驶,还需要知道这些物体即将要行驶的轨迹,并且如何规划路径避开这些移动或静止的物体,达到安全行驶的目标。这个时候具备物体轨迹预测能力的“不确定性锥”就登场了,它可以预测汽车附近物体的位置、可能的轨迹方向和移动速度。一旦第二模块的深度学习软件识别标记了一个物体,占据栅格就会显示它的存在,不确定性锥就会预测该物体下一步的移动方向。不确定性锥为自动驾驶系统提供了一定的场景理解能力,可以像人一样在瞬间完成对于周边环境的感知以及预测判断,为第四模块的行车路径规划提供了有力的决策依据。
那不确定性锥是如何工作的呢?在占据栅格中每个物体的周围画出一个小圆圈,称为“当前活动区域”,然后根据未来十秒钟后物体所有可能到达的位置再画一个大圆圈,称为“未来活动圈”,最后用线将小圈和大圈连起来就得到了“不确定性锥”。所以,快速移动的物体,锥体的形状相对较大,难以预测的物体,锥体形状也会增大,例如摇摆不定的自行车、四处游荡的小狗和踢球的孩子;相反,容易预测的比如静态物体因为不太可能会移动,所以锥体形状较小。当然锥体也会根据特殊情况进行预测处理,比如死胡同、转弯角这种虽然是静态物体但是可能存在风险的地方,锥体形状也会增大。所以通过对锥体大小的判断,系统就可以识别周边物体的活动轨迹和范围。我们利用这种具备轨迹预测功能的“不确定性锥”代替物体,这样,自动驾驶系统就得到了占据栅格中各个物体的移动轨迹范围和方向,为安全的路径规划提供了依据。
当前三个模块都完成了之后第四个模块短期轨迹规划器就登场了,当汽车附近的物体都被标记成大小不一的不确定性锥的时候,轨迹规划器就可以调用精密的算法算出最佳的行驶路线,减少事故发生的可能性。
三、上层控制系统
上层控制系统负责汽车整个行驶过程中的路径规划和导航工作,而这两者功能实现的基础就是“搜索算法”。搜索算法需要凭借强大的计算力去在一个问题的众多的解决方案中,寻找出一条最佳解决解决方案。因为在此过程中,搜索算法需要对所有的解决方案进行评估,由此该算法会占用大量的系统资源,所以充足的计算能力是该算法高效运行的必要条件。应用到自动驾驶系统中就是凭借搜索算法将起始地与目的地之间所有可能的备选路径依次罗列并自动进行优劣的等级排序,从而在众多备选路径中找出最佳行驶路线。
而搜索算法中应用最广的可能就是A*算法,该算法通过在搜索中加入代价函数检索路径占用的成本与到达目标位置需要付出的乐观预计成本相结合,得出最终所要付出的代价。应用到自动驾驶系统中只需要研发人员调整A*算法中的代价函数,就可以评估众多的驾驶行为各自需要付出的成本代价,该算法省去了搜索过程中的大量重复计算行为,实现对最短路线的精准定位。
总结
“莫拉维克悖论”解释了为什么自动驾驶汽车到目前为止还没有大规模的落地应用,关键技术的突破商待时日,按照目前的形式来看不会很远。本文也是笔者自己的学习笔记,分享出来,与大家一起讨论,共同进步。