第九章 控制模块
前面提到感知是自动驾驶的"眼睛",规划是自动驾驶的"大脑",而控制就是自动驾驶的"四肢"。
自动驾驶系统的执行力,也称为运动控制,是将意图转化为动作的过程;其主要目的是向硬件提供必要的输入来执行规划的意图,从而生成所需的运动。控制器根据力量映射现实世界中的交互,而自动驾驶系统中的认知导航和规划算法通常关注车辆相对于其环境的速度和位置。控制系统内部的测量值用于确定系统的性能,因此控制器做出反应,拒绝干扰并将系统的动力学改变为所需状态。
自动驾驶的控制,也看成是运动控制,就是为车辆生成指令,一般为线控(wire-control)模式,即控制方向盘控制的角度,加速踏板和刹车踏板控制的速度或加速度,同时在实际环境下(道路,风,车轮滑移等),产生实际行驶轨迹。
首先,需要确定几个专业词的表述:路线 = route;路径= path;轨迹 = trajectory。
车辆的运动控制可以大致分为两个任务:车辆横向运动的转向控制,和纵向运动的油门和制动踏板控制。横向控制系统旨在控制车辆在车道上的位置,并执行其他横向动作,例如换道或避免碰撞的动作。纵向控制可控制车辆的加速度,使其在道路上保持理想的速度,与前一辆车辆保持安全距离,避免追尾事故。
当前传统的车辆控制方法建立在经典的最优控制理论基础上,该理论可以表述为在一组状态和控制动作上定义的成本函数。控制输入通常定义在有限时间范围内,并限制在可行状态空间。这样通过基于规则的控制器对自动驾驶车辆进行操作,其中参数由开发人员设置,并在模拟和现场测试后手动调整。
而深度学习不必在所有可预见场景保持性能条件下反复调整每个参数,而是使开发人员能够描述所需的行为,并通过学习让系统表现良好,并将其推广到新的环境中。学习算法可以作为学习控制器的一部分,在运动控制模块中使用,也可以作为完整的终端控制系统使用,该系统将传感器数据直接映射到控制命令,即端到端方法。
本章9.1先介绍车辆的运动学和动力学模型,这是车辆控制的基础;9.2介绍传统的控制算法,即PID、LQR和MPC;9.3讨论自动驾驶普遍采用的路径和轨迹稳定的控制算法,包括纯跟踪控制、后轮位置反馈、前轮位置反馈、基于控制Lyapunov函数的反馈控制和线性化输出的反馈控制等;最后,9.4讨论基于深度学习的自动驾驶控制算法。
关于深度学习的控制方法讨论片段:
"
第十章 仿真模拟
在现实世界中测试自动驾驶技术的性能和安全是一个巨大的工程。通常认为,大概需要 100 亿英里的试驾数据来优化一个开发的自动驾驶系统,即便是组建一支1000 辆车的车队也需要花费约 50 年的时间完成。由于无法进行充分的道路测试,道路测试需要投入的时间和费用及其昂贵,所以需要基于计算机模拟仿真系统帮助在虚拟环境中开发和测试自动驾驶系统。
众所周知,谷歌开发的仿真系统CarCraft已经跑了超过150亿英里(每天超过1000万英里),而实际车载测试才1800万英里(每个月大概100万英里)。其中将实际上车测试的问题在模拟仿真系统中进行复现并添加各种变化被成为"模糊化(fuzzing)",当时开发的可视化平台Xview就是模拟仿真系统的一部分,相当于调试可视化的显示界面。
这样的模拟仿真系统构成一般包括多个算法模块,比如:
•传感器模型:摄像头(游戏引擎类似的功能),激光雷达,雷达,声纳,甚至车联网(V2X),GPS,IMU,轮速计等等;
•高清地图和虚拟环境(类似VR):一些高清地图的制造商也可以直接从真实环境中生成,比如三番,纽约,伦敦城市等等;
•车辆模型(OEM数据,动力学模型,控制模型),行人,摩托和自行车等等,以前做运动捕获(motion capture)的公司有很好的数据,商用的汽车模拟软件在这些方面也很成熟;
•道路系统(路径网络)和道路特性(地质,坡度,风险,利用率等等);
•环境模型(季节,气候,天气,时间如白天/晚上,等等),跟传感器模拟关系大;
•交通模型(交通规则,限速,停车,十字/丁字/环路,红绿灯,让路,分岔,汇入等等),即交通流的仿真;
•驾驶模型 (驾驶行为,导航规则,避撞,个人特色,文化,地域等等);
•应用相关的,比如运动规划,模拟训练。
本章介绍一些搭建仿真系统的模块。10.1介绍传感器的仿真,比如摄像头的图形学成像技术,激光雷达和毫米波雷达的数据模拟合成等;10.2以开源软件SUMO为基础,介绍交通仿真模型;10.3介绍车辆和行人CAD模型,并讨论深度学习建模的车辆动力学,另外介绍了一些计算机视觉方法方面渲染人体和人体运动的研究;10.4以美国网约出租车公司Uber开源的可视化平台为例,介绍自动驾驶的可视化技术;10.5介绍道路网络仿真环境的建立;10.6分析场景库的自动驾驶测试技术(包括场景描述语言OpenSCENARIO 和场景库例子 PEGASUS); 最后10.7讨论数字孪生构建安全紧要数据的神经网络方法。
关于仿真场景的定义片段:
"
十一章 安全模型
安全一直是车辆行业非常重视的问题,而研发自动驾驶的初衷也是为了降低人为因素的交通事故。在美国权威机构的2018年报告中显示,美国每天有超过100人死于与非自动驾驶汽车有关的交通事故。同样一项被广泛引用的研究显示,近两年半美国发生了200多万起撞车事故,其中94%的事故是由司机造成的。
不过,在自动驾驶即将进入商业落地轨道的时候,大家发现以前的安全标准和测试过程有些不适合,故此一些新的测试自动驾驶系统的安全标准进行了修订。
前面提到自动驾驶的关键模块,如感知、规划和控制等等,而这些模块大量地使用了AI,例如计算机视觉、机器学习(ML)和深度神经网络(DNN)的算法,但一般这些算法多半是概率地对待解决的问题建模,这无疑对过去的安全模型和测试方法是一种新的挑战。
自动驾驶研发的公司也在探讨这些问题,并提出自己的安全模型,比如Mobileye的RSS模型和Nvidia的SFF模型。不少自动驾驶公司(主要是L4级别)纷纷发布了自己的安全报告,如谷歌WayMo、福特、GM、Nvidia、Uber和AutoX等等。
自动驾驶仍然受到来自不同攻击的威胁困扰,这些攻击可以分为物理攻击、网络攻击和基于学习的对抗性攻击。不可避免的是,基于深度学习的自动驾驶系统,其安全性(safety& security)受到这些攻击的严重挑战,因此应研究对策,减轻潜在的风险。
如果自动驾驶能够量产或者大规模部署,需要对其进行大量的验证和确认(V&V)。验证与确认最大化场景覆盖率的常见策略是在虚拟仿真进行,并模拟生成大量场景样本。
基于场景采样的V&V所面临的挑战是,确定合理覆盖所需的样本量,从而使得自动驾驶不当操作所产生的风险得以控制。然而,另一组基于形式验证(formal verification)的方法通过规范满足(specification satisfaction)处理场景覆盖。
目前自动驾驶安全方面的开放性挑战问题包括以下几点:
· 设计规范。ML模型的设计规范通常是不够的,因为模型要学习数据的模式以鉴别或生成新的未知输入的分布。因此,机器学习算法通过其训练数据(和正则化约束)学习目标类,而不是使用一个正式规范。
· 实施透明度。基于高维数据训练的高级ML模型并不透明。模型中的大量变量让模型难以理解,或者说是黑箱。在实践中,可解释性技术主要由设计者用于改进网络结构和训练过程,而不是支持安全评估。
· 测试和验证。对于DNN来说,由于数据的高维性,正式验证其正确性具有挑战性(证明NP- hard)。因此,很难在操作设计领域内实现完整的验证和测试。
· 性能和鲁棒性。SOTIF标准将ML模型视为黑箱,并建议提高模型性能和鲁棒性。然而,提高模型性能和鲁棒性本身是一项非常具有挑战性的任务。在学习问题中,模型的训练通常以训练集上的错误率(错误的正预测FP和错误的负预测FN)结束。经验误差是学习函数对其目标分布的预测误差率。泛化误差是指模型在训练集和测试集的经验误差之差。除此之外,操作错误是指模型在开放世界中部署的错误率,可能高于测试集错误率。域泛化是指模型为开放世界任务学习通用数据表征的能力。
· 运行监控函数。设计监控函数来预测ML故障(例如,误报和漏报)本质上是不同的。ML模型为输入实例生成预测概率,但研究表明预测概率不能保证故障预测。事实上,DNN和许多其他ML模型在分布漂移和对抗性攻击的情况下可能会产生不正确的输出,但具有很高的可信度。
本章11.1介绍一些安全基本概念,11.2分析NHTSA的12个安全要素,11.3介绍功能安全标准ISO26262,11.4讨论预期功能安全标准SOTIF,11.5对Mobileye的安全模型RSS进行分析,11.6介绍网络安全,而11.7阐述自动驾驶的安全隐患以及解决方案,最后11.8介绍自动驾驶系统的验证和确认(V&V)技术。
关于Intel的安全模型RSS的介绍片段:
"
第十二章 泊车
自动驾驶技术的产品落地涉及应用场景,而自动和自主泊车是一个具备"麻雀虽小,五脏俱全"有实际应用价值的场景。前面已经对自动驾驶内部结构和算法进行了分析和讨论,本章专注于自动泊车这个落地场景,将前面讨论的技术模块具体化展开。
其中12.1对泊车系统的基本介绍;12.2讨论泊车系统特有的环视摄像头系统如何标定;12.3介绍鱼眼镜头的感知方法;12.4对泊车位检测方法进行讨论;12.5分析泊车的一些具体运动规划算法;12.6分析传感器融合(超声波和摄像头)在自动泊车的体现;12.7针对自动代客泊车,也是泊车中最高级别的自动驾驶方法进行分析;12.8介绍泊车场的语义地图制作和定位技术,12.9介绍自动泊车在泊车场的深度学习规划方法。
关于一个基于视觉的泊车规划系统的讨论片段:
"
待续。。。。。。