技術文章
隨著自動駕駛技術的飛速發展,仿真測試已成為替代成本高昂且充滿風險的道路測試的關鍵環節。它能夠在虛擬環境中模擬各種復雜的交通場景和少數天氣,極大地加速了自動駕駛系統的開發與驗證進程。然而,一個常被忽視的問題正悄然侵蝕著仿真測試的可信度——非確定性,即仿真測試過程中因核心引擎或其他因素導致的隨機性。
圖1 aiSim多傳感器融合示例
目前,許多市面上的仿真軟件,尤其是基于游戲引擎開發的平臺,其核心設計目標之一是高效地為玩家提供充滿驚喜和變化的娛樂體驗。這種內在的隨機性,在游戲世界里是優點,但在嚴謹的汽車測試領域,卻是一個致命的缺陷。
想象一下在仿真測試過程中,工程師精心設置了所有參數——車輛速度、行人軌跡、天氣狀況、傳感器配置——期望能穩定復現一個特定的危險場景。然而,每次點擊“開始",結果卻不盡相同:第一次,車輛避讓;第二次,發生了輕微碰撞;第三次,又安然無恙。這或許并非是算法時好時壞,而是仿真環境本身在“搖擺不定"。
Greg等人研究指出,基于游戲引擎的仿真環境,其隨機性并非偶然,而是源于其底層架構的諸多方面:
(1)資源負載與調度:系統CPU/GPU的負載波動,會直接影響物理引擎的計算時機和順序,導致即使輸入相同,輸出的軌跡也會產生高達數十厘米的偏差。
(2)物理引擎的“模糊"處理:為了實時渲染流暢的畫面,游戲引擎在處理物體碰撞等復雜物理交互時,往往采用近似計算。這種不精確性在一次碰撞后會被急劇放大,甚至影響到場景中其他未參與碰撞的物體,造成全局性的結果污染。
(3)多線程與并行計算:為了效率,引擎會將任務分配給多個線程并行處理,但線程完成的順序并非每次都固定,這種執行順序的微小變化,會像蝴蝶效應一樣,最終導致仿真結果的巨大差異。
這種隨機性帶來的問題是災難性的:
(1)問題無法追溯:當測試中出現問題,工程師無法穩定復現它,也就無從定位和修復缺陷,極大地增加了調試成本和時間。
(2)結果失去可信度:如果仿真結果不穩定,如何相信它所提供的安全驗證報告?這會給自動駕駛系統的安全性帶來“偽證",造成虛假的安全感。
(3)測試覆蓋率失效:隨機性使得精確控制測試用例、確保覆蓋所有關鍵場景變得不可能。
歸根結底,對于自動駕駛這種安全至上的系統,測試必須是科學、嚴謹且可重復的。因此,一個具備高度確定性、一致性的仿真平臺,是所有有效測試的絕對前提。
為了驗證一個仿真平臺的確定性,最直接的方式便是確保各項參數不變的情況下進行重復仿真,對輸出的仿真數據進行最直接的比較,判斷是否存在差異。
例如,第一個獲得ISO 26262 ASIL-D認證的AD/ADAS仿真測試軟件aiSim,它構建了有特色的仿真內核,摒棄了游戲引擎中那些為“體驗"而犧牲“精確"的設計。為了驗證aiSim的確定性,我們進行了一系列重復性實驗。
圖2 aiSim傳感器配置GUI
通過在GUI中拖放仿真傳感器,我們在仿真車輛中添加了1個帶有目標檢測功能的1920×1080的前置針孔Camera、1個帶有目標檢測功能的前置Radar、1個帶有目標檢測功能的128線頂置LiDAR、1個內置IMU、1個內置GPS以及1個可以反饋自車狀態的Vehicle sensor。
圖3 仿真傳感器數據示例
圖4 仿真場景示例
aiSim本身包含了數十種城市、郊區的室內、室外場景。本文以真實世界常見的“行泊一體"為例,在一個包含14輛他車的室外停車場環境(Parking_US-CA_SanJoseAlamitos)中,對主車執行了“跟車 -> 切入變道 -> 尋找車位 -> 泊車"的全套連貫動作。
我們在固定的軟硬件環境下,針對三種典型天氣進行了5輪獨立的重復測試,每一輪測試都記錄了長達1000幀的數據,以確保完整與統一。我們將每一輪測試的數據與第一次測試的基準數據進行精確比對:
晴天 (Sunny):在Sunny.json配置下,模擬了日光充足的理想泊車環境。
雨天 (Rainy):切換至Rainy.json配置,引入了雨水對傳感器性能的干擾。
復雜雪天 (Snowy & Broken Road):在Snowy.json的預設配置基礎之上,加入了道路老化、標線磨損、路面破損、坑洼等退化元素,將測試環境推向了極限。
測試過程中,我們記錄了全部傳感器和車輛狀態數據,包括:
視覺數據 (Camera):RGBA原始圖像、語義分割圖、目標檢測圖及JSON格式的2D/3D標注框。
雷達數據 (Radar & LiDAR):毫米波雷達和激光雷達的點云(LAS v1.4)、目標列表及3D標注框。
車輛自身狀態 (GPS, IMU, Vehicle):高精度的定位、姿態、加速度及車輛動力學信息。
圖5 仿真相機輸出圖像類型
我們采用均方根誤差(RMSE)來量化圖像、點云等原始數據的細微差異,并對JSON格式的結構化數據采用根據樣本數值差異個數進行判定的統計確定性檢驗。
Camera Sensor的RGBA原始圖像、分割圖像、目標檢測圖像均以tga格式輸出,2D Bounding Box、3D Bounding Box均已json格式輸出。通過比較同一環境、場景下相同幀之間的誤差或差異項,驗證Camera的確定性。
對于tga格式文件,計算所有1000幀圖像所有通道的像素均方根誤差(MSE,Mean Squared Error)。在3類天氣5次測試過程中,RGBA原始圖像、分割圖像、目標檢測圖像的所有通道的像素均方根誤差均為0;
圖6 基于python腳本可視化的彩色圖像、分割圖像、目標檢測圖像均方根誤差結果
對于json格式文件,比較2D與3D Bounding Box的所有Group的key與value,記錄差異項個數(Number of Differences)。在3類天氣5次測試過程中,Bounding Box信息(包括位置、姿態、個數、類型、id、相對速度、持續時間、像素遮擋率等)不存在差異項。
圖7 基于python腳本可視化的2D&3D BoundingBox差異項個數結果
Radar Sensor輸出json格式的檢測目標相關信息,包括距離、旋轉、相對速度、id、類型等,因此與相機的Bounding Box一樣,記錄差異項個數(Number of Differences),結果也是一樣,不存在差異項。
圖8 基于python腳本可視化的Radar檢測差異項個數結果
LiDAR Sensor生成的輸出包括兩種格式的數據:LAS格式的3D激光點云和JSON格式的目標檢測數據。激光點云數據包含每個點的坐標、強度、返回次數、標識符(ID)等,我們比較內部的所有屬性,記錄差異項個數(Number of Differences);
對于以JSON格式輸出的目標檢測數據,與Camera類似,我們將比較所有Group的鍵(key)與值(value),并記錄差異項個數(Number of Differences)。最終結果與前面相同,在3類天氣5次測試之間均不存在差異項。
需要指出的是,由于las文件和檢測到的目標內部包含的GPS時間屬性在aiSim中取自系統時間(UTC時間),該項不納入差異比較范圍。
圖9 基于python腳本可視化的LiDAR檢測差異項個數結果
GPS Sensor、IMU Sensor以及用于觀測仿真自車狀態的Vehicle Sensor輸出的均為JSON格式的信息,同樣比較所有Group的鍵(key)與值(value),并記錄差異項個數(Number of Differences)。對于3類天氣5次測試的GPS、IMU、Vehicle數據信息,3類天氣5次測試之間均不存在差異項。
圖10 基于python腳本可視化的GPS、IMU、Vehicle Sensor結果
在本文設計的傳感器配置與場景中,aiSim的各項傳感器數據在固定的參數配置下,仿真過程與仿真結果不存在任何差異(除UTC時間)。除了本文提到的傳感器與場景,在其他不同環境、傳感器配置下的驗證中,aiSim也均表現出了很好的確定性。
在aiSim的仿真世界里,沒有偶然和隨機,只有精確和必然。每一次的測試結果都真實反映了被測算法的真實能力,每一次的問題暴露都能被穩定復現和修正。
參考文獻
1. On Determinism of Game Engines Used for Simulation-Based Autonomous Vehicle Verification