對於自動駕駛仿真,LGSVL是主流的模擬器之一。本文《LGSVL Simulator-A High Fidelity Simulator for Autonomous Driving》,由LGSVL開發者(主要來自LG電子美國研發中心)撰寫,對LGSVL做了詳細介紹。
摘要
在真正的自動駕駛車輛上測試自動駕駛算法是非常昂貴的,許多研究和開發人員不一定有足夠的資金購買真正的汽車和相應的傳感器。儘管有一些免費的開源的自動駕駛系統,比如Autoware和Apollo,但是與它們一起使用的開源模擬器的選擇是有限的。本文介紹了一種高保真度自動駕駛模擬器LGSVL。模擬器提供端到端的全棧仿真,隨時可以連接到Autoware和Apollo。此外,模擬器工具還配備了核心仿真引擎,用戶可以輕鬆定製傳感器、創建新型可控對象、替換核心模擬器中的一些模塊、創建特定環境的數字孿生體。
1 簡介
在過去的幾年裡,自動駕駛汽車取得了巨大的進步。研究表明,自動駕駛汽車必須行駛數十億英裡才能證明其可靠性[1],如果沒有仿真的幫助,這是不可能的。從自動駕駛研究的一開始[2],模擬器就在自動駕駛系統的開發和測試中發揮了關鍵作用。仿真使開發人員能夠在不駕駛真實車輛的情況下快速測試新算法。與道路測試相比,仿真模擬有幾個重要的優點:它比真實的道路測試更安全,特別是對於某些危險場景(如行人亂穿馬路),並且可以生成在現實世界中很少遇到的corner case(例如極端天氣)。此外,模擬器能夠準確地再現問題場景的所有因素,從而允許開發人員調試和測試新的補丁。
今天的自動駕駛系統在越來越多的模塊中使用深度神經網絡(DNN)來幫助提高性能。訓練DNN模型需要大量的標記數據。傳統的自動駕駛數據集,如KITTI[3]和Cityscapes[4],沒有足夠的數據供DNN處理複雜的場景。儘管最近學術界[5]和自主駕駛公司[6]、[7]、[8]發布了一些大型數據集,但這些從現實世界中收集的數據集通常是手動(通常在一些自動化工具的幫助下)標記的,這是緩慢、昂貴和容易出錯的。對於真值類型,如像素分割或光流,手動標記數據非常困難或不可能。在雲平臺的幫助下,模擬器可以輕鬆地生成更大數量級的精確標記數據集。
本文介紹了LGSVL模擬器。核心仿真引擎使用Unity[9],是開源的,原始碼可以在GitHub上免費獲得。模擬器支持ROS、ROS2和Cyber RT,使其可以與Autoware和Baidu Apollo一起使用。提供地圖工具來導入和導出用於自動駕駛的高清地圖,格式包括Lanelet2[10]、OpenDRIVE和Apollo HD Map。圖1展示了來自LGSVL模擬器的一些渲染示例。
圖1 LGSVL的渲染示例
本文的其餘部分結構如下:第二節回顧了以往的相關工作,第三節對LGSVL模擬器進行了詳細的概述,第四節列舉了該模擬器的應用示例,第五節總結了本文的工作方向。
2 相關工作
仿真在汽車工業中得到了廣泛的應用,尤其是在汽車動力學方面。一些著名的例子有:CarMaker[11]、CarSim[12]和ADAMS[13]。自動駕駛不僅僅需要車輛動力學,還必須考慮複雜的環境設置、不同的傳感器布置和配置以及模擬車輛和行人的交通等因素。早期的一些模擬器[14]、[15]在虛擬環境中運行自動駕駛車輛,但缺乏一些重要元素,例如支持不同的傳感器和行人模擬。
Gazebo[16]是機器人學和相關研究領域中最流行的仿真平臺之一。它的模塊化設計允許不同的傳感器模型和物理引擎接入模擬器。但是用Gazebo來創造大型複雜的環境是很困難的,而且它難以達到現代遊戲引擎(如Unreal[17]和Unity)的渲染效果。
還有一些其他流行的用於自動駕駛的開源模擬器,比如AirSim[18]、CARLA[19]和Deepdrive[20]。這些仿真器通常作為研究平臺創建,以支持強化學習或機器學習的合成數據生成,通常需要大量額外的努力來集成用戶的自動駕駛系統和通訊模塊。
還有一些商用汽車模擬器,包括ANSYS[21]、dSPACE[22]、PreScan[23]、rFpro[24]、Cognata[25]、Metamoto[26]和NVIDIA’s Drive Constellation [27]。然而,由於這些模擬器不是開源的,用戶很難定製以滿足他們自己的特定需求或研究目標。
如今,與駕駛相關的商業視頻遊戲提供了逼真的環境。研究人員使用諸如俠盜獵車手V這樣的遊戲來生成合成數據集[28]、[29]、[30]。然而,這通常需要一些黑客攻擊才能訪問遊戲中的資源,並可能違反用戶許可協議。此外,也很難支持攝像頭以外的傳感器,並且確定地控制車輛以及行人和交通等非玩家角色。
3 LGSVL模擬器概述
圖2說明了由LGSVL模擬器實現的自動駕駛駕駛仿真工作流程。每個組件的詳細信息將在本節下面進行解釋。
圖2 LGSVL的工作流程
用戶的自動駕駛系統
用戶的自動駕駛系統是用戶希望通過仿真開發、測試和驗證的系統。LGSVL Simulator目前提供與開源平臺Apololl、Autoware.AI和Autoware.Auto5的現成參考集成。
用戶自動駕駛系統通過通信接口連接到LGSVL。百度的Apollo平臺使用了一個名為Cyber RT的框架,它為模擬器提供了一個定製的網橋。Autoware.AI和Autoware.Auto,運行在ROS和ROS2上,可以通過標準的開源ROS和ROS2橋連接到LGSVL。圖3顯示了Autoware、Apollo和LGSVL一起運行。
圖3 Autoware (上)和Apollo (下) 與LGSVL一起運行
B. 仿真引擎
LGSVL利用Unity的遊戲引擎進行模擬,並利用Unity的最新技術,如高清渲染管道(HDRP),以模擬出接近真實世界的虛擬環境。仿真引擎的功能可以分為:環境仿真、傳感器仿真、車輛動力學與控制仿真。圖4表示了仿真引擎和自動駕駛系統之間的關係。
圖4 自主駕駛系統的高層次仿真體系結構
環境模擬包括交通仿真和物理環境模擬,如天氣和時間。這些方面是測試場景模擬的重要組成部分。環境模擬的所有方面都可以通過Python API進行控制。LGSVL模的仿真引擎是作為一個開源項目開發的。原始碼在GitHub上公開,可執行文件可以免費下載和使用。
C. 傳感器和車輛模型
LGSVL的ego車輛傳感器配置是完全可定製的。例如,每個雷射雷達傳感器的光束計數是可配置的。模擬器有一組默認的傳感器可供選擇,目前包括攝像頭、雷射雷達、毫米波雷達、GPS和IMU以及真值傳感器。用戶還可以構建自己的自定義傳感器,並將其作為傳感器插件添加到模擬器中。圖5顯示了LGSVL中的一些傳感器:左欄顯示了一些物理傳感器,包括魚眼攝像頭傳感器、雷射雷達傳感器和雷達傳感器;右欄顯示了一些真值傳感器,包括語義分割傳感器、深度傳感器和3D bounding box傳感器。
圖5 LGSVL傳感器。左:魚眼攝像頭、雷射雷達和雷達;右:語義分割、深度和3D bounding box
除了默認的參考傳感器外,LGSVL還支持用於自動駕駛系統的真實世界傳感器模型。這些傳感器插件的參數與現實世界中的同類產品(如Velodyne VLP-16雷射雷達)相匹配,並以與真實傳感器相同的格式生成點雲。此外,用戶可以創建自己的傳感器插件來實現新的變體,甚至是LGSVL默認不支持的新類型的傳感器。
LGSVL為ego汽車提供了一個基本的車輛動力學模型。另一方面,可以通過第三方的接口,將車輛動力學(FMI)的外部接口加載到另一個仿真系統中(可將仿真程序與仿真程序進行交互)。因此,用戶可以將LGSVL與第三方車輛動力學仿真工具耦合,以充分利用這兩個系統。
D. 3D環境和高精地圖
虛擬環境是自動駕駛仿真系統的重要組成部分,它可以為自動駕駛系統提供多種輸入。作為所有傳感器的輸入源,環境影響著自動駕駛系統的感知、預測和跟蹤模塊。環境影響車輛動力學,這是車輛控制模塊的關鍵因素。它還通過改變高精地圖來影響定位和規劃模塊,這取決於實際的3D環境。最後,三維環境是環境模擬的基礎,包括天氣、時間和動態對象。
我們也可以從記錄的數據(圖像、點雲等)創建真實場景的數字孿生體來複製和模擬真實世界。圖6顯示了我們為加利福尼亞州森尼維爾的Borregas大道創建的數字孿生仿真環境。此外,我們還與北加州、內華達州和猶他州合作,為GoMentum站的一部分製作了一個數字孿生模型[32]。GoMentum是一個自動駕駛測試場地,位於加利福尼亞州康科德,擁有19英裡的道路,48個十字路口,8個不同的測試區,佔地2100英畝。對於GoMentum,我們在真實場地和虛擬場地都進行了測試。
圖6 Borregas大道的數字孿生
LGSVL支持創建、編輯和導出現有3D環境的高清地圖。此功能允許用戶在三維環境中創建和編輯自定義高清地圖注釋。如圖7所示,LGSVL的高清地圖注釋具有非常豐富的信息,如車道、車道邊界線、交通信號、交通標誌、行人行走路線等。在圖形的右側,用戶可以通過在「創建模式」下選擇相應的選項來進行不同的注釋。
圖7 LGSVL的高清地圖示例和注釋工具
高精地圖注釋可以導出為以下幾種格式之一:Apollo 5.0高清地圖、Autoware Vector map、Lanelet2和OpenDrive 1.4,因此用戶可以將地圖文件用於自己的自動駕駛系統。另一方面,如果用戶擁有支持格式的真實世界高清地圖,他/她可以將地圖導入到LGSVL的3D環境中。目前,支持導入的高清地圖格式有Apollo 5.0、Lanelet2和OpenDrive 1.4。由於能夠導入和導出地圖注釋,用戶可以導入其他地方的高清地圖,編輯注釋,然後再次導出,以確保LGSVL中使用的高清地圖與用戶自動駕駛系統使用的地圖一致。
E. 測試場景
測試場景包括模擬一個環境和狀況,在這種環境和狀況下,可以放置一個自動駕駛系統來驗證正確和預期的行為。它包含了許多變量,例如一天中的時間、天氣、路況以及移動物體(如汽車、行人等)的分布和移動。LGSVL提供了Python API,使用戶能夠與虛擬環境進行交互。用戶可以編寫腳本來為他們的需求創建場景——生成和控制非玩家角色車輛和行人,並設置環境參數。
4 應用實例
LGSVL支持自動駕駛的各種測試應用。本節列出了一些實例。由於LGSVL的生態系統是一個開放的環境,我們相信用戶將把這個範圍擴展到更多不同的領域。
SIL和HIL測試LGSVL支持自動駕駛系統的軟體在環(SIL)和硬體在環(HIL)測試。對於SIL測試,LGSVL為不同的傳感器生成數據,例如攝像頭傳感器的圖像和雷射雷達傳感器的點雲數據,以及由自動駕駛系統的感知和定位模塊使用的GPS和IMU數據。這樣就可以對用戶的自動駕駛系統進行端到端的測試。此外,LGSVL還為其他自動駕駛系統模塊生成輸入,以啟用單模塊(單元)測試。例如,可以生成三維邊界框來模擬感知模塊的輸出作為規劃模塊的輸入,因此用戶可以繞過感知模塊(即假設完美感知)來測試規劃模塊。
LGSVL支持一組底盤命令,因此運行LGSVL模擬器的機器可以與運行自動駕駛系統的另一臺機器通信,後者可以使用這些底盤命令控制模擬的ego車輛。這使得HIL測試成為可能,自動駕駛系統無法區分來自真實汽車的輸入和模擬數據,並且可以向LGSVL發送控制命令,其方式與發送給真實汽車的方式相同。
為了驗證我們模擬的有效性,我們與加州大學伯克利分校合作,在GoMentum站的數字孿生模型[32]中測試了Scenic[33]生成的數千個場景,並選擇了幾個具有代表性的場景在真實的GoMentum站進行測試。更多的細節,請參見[34]。
B. 機器學習與合成數據生成
LGSV提供了一個易於使用的Python API,可以收集和存儲攝像頭圖像和雷射雷達數據以及各種真值信息——遮擋、截斷、2D邊界框、3D邊界框、語義和實例分割等。用戶可以編寫Python腳本來配置傳感器的內部和外部參數,以及以自己的格式生成標籤數據,用於感知訓練。GitHub上提供了生成KITTI格式數據的示例Python腳本。
強化學習是自動駕駛和機器人技術研究的一個活躍領域。在強化學習中,一個agent在一個基於策略的環境中採取行動,通常以DNN來實現,並從環境中獲得一個作為反饋的獎勵,該環境反過來又用來修改策略。這個過程通常需要在大量的事件中重複,然後才能獲得最佳解決方案。LGSVL通過Python API與OpenAI Gym[35]提供現成可用的集成,使LGSVL成為一個可用於OpenAI Gym強化學習的環境。
C. V2X系統
除了通過配備的傳感器感知世界,自動駕駛汽車還可以從V2X(vehicle to everything)通信中獲益,例如通過V2V(vehicle to vehicle)獲取其他車輛的信息,並通過V2I(vehicle to infrastructure)獲取更多的環境信息。在現實世界中測試V2X比測試一輛獨立的汽車更困難,因為它需要其他車輛和基礎設施的支持。研究人員通常使用模擬器來測試和驗證V2X算法[36]。LGSVL支持創建真實或虛擬傳感器插件,使用戶能夠創建特殊的V2X傳感器,以從其他車輛(V2V)、行人(V2P)或周圍基礎設施(V2I)獲取信息。因此,LGSVL可以用來測試V2X系統,也可以生成用於訓練的合成數據。
D. 智慧城市
現代智慧城市系統利用路邊傳感器監測交通流量。研究結果可用於控制交通信號燈,使交通更加順暢。這種系統需要不同的指標來評估交通狀況。例如,我們想設定一個「停車」次數的指標,當車輛通過某個路口,「停車」被定義為當車速在指定時間內低於某個值,我們需要對「停車次數」進行計數。這些指標很難被人工收集。LGSVL也適用於這種應用。使用我們的傳感器插件模型,用戶可以定義一種新型的傳感器,計算汽車的「停車」次數,因為我們有準確的速度和位置信息。我們的可控插件允許用戶自定義紅綠燈和其他特殊的交通標誌,這些可以通過Python API進行控制。
5 小結
我們介紹了LGSVL,一個基於Unity的高保真度自動駕駛模擬器和相關系統。它已經可以與Autoware和Apollo自動駕駛系統集成在一起進行端到端測試,並且可以很容易地擴展到其他類似的系統。文中給出了幾個應用實例來展示LGSVL的功能。
仿真引擎是開源的,整個生態系統都是開放的,這樣用戶就可以利用LGSVL進行不同的應用,並為生態系統添加自己的貢獻。模擬器將不斷增強,以滿足用戶群體的新需求。