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:不同的自動駕駛錯誤癥狀會在多大程度上發生?
在駕駛錯誤中,最常見的癥狀包括速度和速度控制、軌跡和車道定位和導航,
-
Crashes -不正確的終止
-
Hangs-系統或組件在其行程仍在運行時無法對輸入作出回應,生成錯誤可阻止正確編譯、構建或正確安裝AV系統或組件
-
Display and GUI (DGUI)-顯示在GUI、可視化或AV系統的HMI上的錯誤輸出
-
Camera-相機捕捉影像失敗
-
Stop and parking (Stop)-制動錯誤
-
Lane Positioning and Navigating (LPN)-導航或定位錯誤
-
Speed and Velocity Control (SVC)-速度失常
-
Traffic Light Processing (TLP)-交通燈錯誤
-
Traffic Light Processing (TLP)-啟動錯誤
-
Turning (Turn)-轉向錯誤
-
Trajectory (Traj)-軌跡錯誤
-
Localization (LOC)-基于多傳感器融合的定位相關的錯誤行為,并可能表現為車輛地圖上的錯誤資訊
-
Security & safety (SS)-安全保障失效
-
Obstacle Processing (OP)-障礙物處理失效
-
Logic-邏輯錯誤
-
Documentation (Doc)-檔案錯誤
-
Unreported -無法通過閱讀問題討論或描述、源代碼或問題標簽來識別癥狀,
-
IO-輸入輸出錯誤
-
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/293097.html
標籤:其他
