自动驾驶系统安全隐患分析

  • A+
所属分类:安全闲碎

A Comprehensive Study of Autonomous Vehicle Bugs

本文来自实验室金若辰、黄安妍、许伟豪、杨园的研究成果和学习笔记


自动驾驶汽车(AVs)正成为我们日常生活中不可或缺的一部分。大约50家公司正在积极开发自动驾驶汽车,包括谷歌、福特和英特尔等大公司。一些自动驾驶汽车已经在公共道路上运行,最近有记录显示至少有一人不幸死亡。因此,了解自动驾驶系统中的错误对于确保其安全性、安全性、健壮性和正确性至关重要。


此篇论文从Baidu Apollo, Autoware系统中分析16851次代码提交以及499个bug,并将其分类为13种原因,20种现象,18种分类,最终总结出16条发现。




1.AV系统基本介绍


自动驾驶系统安全隐患分析


百度Apollo开源平台的主要部分:HD maps(高精度地图)(支持其他所有模块), localization(定位),perception(感知),prediction(预测),planning(规划),control(控制)

  • 定位:汽车运用激光和雷达数据,将这些传感器感知内容与高分辨率地图进行对比,这种对比可以实现厘米级别精度的定位

    精确定位的常用方法:传感器内容与地图内容进行对比,需要将自身坐标系中的数据转化为地图坐标系中的数据

    利用激光雷达,我们可以通过点云匹配来对汽车进行定位(点云是指目标表面特性的海量点集合。结合激光测量和摄影测量原理得到点云,包括三维坐标(XYZ)、激光反射强度(Intensity)和颜色信息(RGB)。在获取物体表面每个采样点的空间坐标后,得到的是一个点的集合,称之为“点云”(Point Cloud)。)

  • 匹配点云算法

    • 迭代最近点(ICP):两次点云扫描进行匹配,第一次扫描中的每一个点在第二次扫描的结果中寻找最匹配的点,得到许多匹配点对,距离误差相加计算平均距离误差,平移和旋转来降低平均误差。

    • 滤波算法:消除冗余信息,在地图上找到最可能的车辆位置

    • 直方图滤波算法(误差平方算法,ssd)

    • 卡尔曼滤波算法:根据过去的状态和新的传感器测量结果来预测当前的状态,并用传感器的位置加以纠正。

  • 感知:深度学习是重要的工具,卷积神经网络构成深度学习的分支对感知任务中的分类、检测和分割十分重要。这种方法适用于几种不同的无人驾驶车传感器的数据来源,包括摄像头,雷达,激光雷达

  • 预测:预测其他车辆和行人的移动

  • 控制:运用转向油门和制动来执行规划轨迹

  • 规划:将预测和路线相结合以生成车辆轨迹

  • 惯性导航:可以用加速度,初始速度,初始位置来计算汽车在任何时间点的车速和位置,惯性测量单元可以提供实时的位置信息,更新频率很高,可以在很短的时间内进行定位。IMU和GPS相结合,IMU弥补了GPS更新频率较低的缺陷,GPS纠正了IMU的运动误差

  • 视觉定位:摄像头与其他传感器数据相结合

  • 激光雷达定位:这种方法将来自激光雷达传感器的监测数据与预先存在的高精度地图连续匹配,通过比较可以获知汽车在高精度地图上的全球位置和行驶方向。


Apollo工作原理

基于GPS,IMU,激光雷达的多传感器融合定位系统,利用不同传感器的互补优势,提高准确性稳定性。

这些传感器同时支持GNSS(速度和位置信息)和lidar定位(位置和方向信息),融合框架通过卡尔曼滤波将这些输出结合在一起,卡尔曼滤波建立在两步预测测量周期上,惯性导航解决方案用于预测步骤,GNSS和lidar定位用于卡尔曼滤波测量结果的更新。


自动驾驶系统安全隐患分析


2. AV系统bug的根本原因

研究问题1:导致高级自动驾驶错误的不同根源发生的程度有多大?

对于不正确的算法实现,修复它们所产生的错误通常需要非常简单和广泛的代码修改,可能会影响许多行代码(即平均104行代码)。因此,在这些情况下定位故障或自动修复故障可能是具有高度挑战性的。

自动驾驶系统安全隐患分析

发现1:不正确的算法实现,通常涉及许多行代码,会导致27.86%的AV错误。

发现2:不正确的配置导致大量AV错误,即27.25%的自动驾驶错误。

发现3:涉及相对较少行代码的错误的根本原因,即20行或更少的代码,导致25.25%的错误。




3.AV系统bug的现象(后果)


问题2:不同的自动驾驶错误症状会在多大程度上发生?

在驾驶错误中,最常见的症状包括速度和速度控制、轨迹和车道定位和导航。


  1. Crashes -不正确的终止

  2. Hangs-系统或组件在其进程仍在运行时无法对输入作出响应。生成错误可阻止正确编译、构建或正确安装AV系统或组件

  3. Display and GUI (DGUI)-显示在GUI、可视化或AV系统的HMI上的错误输出

  4. Camera-相机捕捉图像失败

  5. Stop and parking (Stop)-制动错误

  6. Lane Positioning and Navigating (LPN)-导航或定位错误

  7. Speed and Velocity Control (SVC)-速度失常

  8. Traffic Light Processing (TLP)-交通灯错误

  9. Traffic Light Processing (TLP)-启动错误

  10. Turning (Turn)-转向错误

  11. Trajectory (Traj)-轨迹错误

  12. Localization (LOC)-基于多传感器融合的定位相关的错误行为,并可能表现为车辆地图上的错误信息

  13. Security & safety (SS)-安全保障失效

  14. Obstacle Processing (OP)-障碍物处理失效

  15. Logic-逻辑错误

  16. Documentation (Doc)-文档错误

  17. Unreported -无法通过阅读问题讨论或描述、源代码或问题标签来识别症状。

  18. IO-输入输出错误

  19. Other


自动驾驶系统安全隐患分析

发现4:28.06%的错误直接影响自动车辆的驾驶功能,速度和速度控制、轨迹和车道定位和导航的频率分别为8.42%、6.01%和5.01%。

发现5:构建错误、崩溃、逻辑错误和GUI错误是AV系统中最频繁发生的领域独立错误之一,构建错误占16.23%,崩溃为10.62%,逻辑错误为11.42%,GUI错误为7.82%。

发现6:有明显安全或安全症状报告的错误很少发生,只占AV错误的1%。


4. 不同现象出现的频率


问题3:每个根源会产生什么样的错误症状?

涉及许多代码的错误算法实现导致所有8种症状,直接影响车辆的驾驶,并导致我们的分类方案中所有20种症状中的16种。

自动驾驶系统安全隐患分析

发现7:常见的原因是涉及编译、构建、兼容性和安装(配置)的错误配置

不正确的配置导致了各种各样的错误症状,20个配置中有13个,其中绝大多数导致了构建错误,

发现8:错误分配或初始化导致的错误在两个AV系统中相对经常发生,

发现9:变量、条件语句或条件逻辑的分配不正确会导致20个AV错误症状中的16个。

发现10:并发性和内存滥用导致的错误症状相对较少,即499个错误中的21个(4.21%)。


5.在不同组件中出现bug的频率


问题4:AV组件在多大程度上包含错误?

在这两个系统中错误最多的核心AV组件是“规划、感知”和本地化——从大多数错误排序到最少,分别有135个(27.05%)、83个(16.63%)和57个(11.42%)。

自动驾驶系统安全隐患分析

发现11:许多错误不会发生在AV系统的特定领域的核心功能中

发现12:规划组件既有大量的缺陷,且表现出许多症状(驾驶缺陷的62.14%)。



6.在不同组件中出现的bug现象


问题5:自动驾驶组件在多大程度上出现错误症状?

5种特别的现象——LPN, SVC, Stop, Turn, Traj,在规划组件中尤为发生(高达62.14%)。

自动驾驶系统安全隐患分析

发现13:规划组件存在大量错误,并表现出许多症状,这些症状对AVs的安全和正确驾驶尤为重要(62.14%的驾驶错误)。

发现14:崩溃错误发生在整个关键的AV组件中,尤其是感知、定位和规划中,使它们容易受到更危险的影响。

发现15:生成错误会影响许多组件,概率为83.33%。

发现16:显示速度和速度控制误差的错误会影响大量的AV组件,影响的组件概率为50.00%。


7.讨论


(1)发现2,5,8与15表明工程师花费了大量时间在诸如兼容性,编译,上传更新与安装等与算法无关的部分。

(2)发现1,7强烈地表明,现有的bug定位和修复方法可能需要使用特定于领域的信息和执行修复的能力来增强,这些修复涉及许多行非平凡代码。

(3)AV研究人员需要更加关注安全

(4)AV研究人员需要更加关注其他组件

(5)研究的局限性:

内部:主观的分类偏差

外部:数据集的普适性;实验发现的普适性。



引用:

Joshua Garcia, Yang Feng⋆,†, Junjie Shen, Sumaya Almanee, Yuan Xia, and Qi Alfred Chen. 2020. A Comprehensive Study of Autonomous Vehicle Bugs. In ICSE ’20: International Conference on Software Engineering, May 23–29, 2020, Seoul, South Korea. ACM, New York, NY, USA, 12 pages.

https://doi.org/10.1145/3377811.3380397


本文始发于微信公众号(轩辕实验室):自动驾驶系统安全隐患分析

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: