各位聽眾朋友大家好!又到了模擬大觀園節目時間了!今天將由我來為大家浮光掠影地介紹一下自動駕駛模擬這個行當。
首先說為什麼自動駕駛需要模擬。幾年前看非誠勿擾,嘉賓黃瀾表示要有2/3的人接受自動駕駛她才會接受,體現了普通群眾對於自動駕駛安全性的關注。而為了要確保安全性,自動駕駛演算法在真正大規模應用之前,就需要經歷大量的道路測試。但自動駕駛系統的測試非常「貴」:時間和資金成本龐大,所以人們就希望將盡量多的測試搬到電腦系統中去做,用模擬暴露自動駕駛系統中的大部分問題,減少實地路測的需求,因此,我們的飯碗就出現了。
模擬場景即自動駕駛系統的test case。根據中國汽車技術研究中心的分類,自動駕駛測試場景可分為【自然駕駛場景】【危險工況場景】【標準法規場景】【參數重組場景】等四大類:自然駕駛場景來自汽車真實的自然駕駛狀態,是建構自動駕駛測試場景中最基礎的資料來源;危險工況場景主要包含大量惡劣天氣環境、複雜道路交通以及典型交通事故等場景,如CIDAS資料庫;標準法規場景是驗證自動駕駛有效性的一種基礎測試場景,是透過現有的標準、評估規程建構測試場景,目的是對自動駕駛汽車應該具備的基本能力進行測試;參數重組場景是將已有模擬場景進行參數化設定並完成模擬場景的隨機產生或自動重組,具有無限性、擴展性、 批量化、自動化等特性。
場景庫搭建流程大致可分為【收集資料】:即實際道路資料和法規資料等、【處理資料】:即從資料中擷取特徵並組合形成場景和【應用資料】:場景庫測試並反饋。
目前,自然駕駛場景的生成基本上已經自動化:採集車按照一定的格式收集數據,演算法篩選可能會有用的關鍵片段的數據,演算法計算片段數據中本車和周圍其他車輛的軌跡,再把軌跡寫入場景描述文件,例如OpenScenario格式的場景文件,現有的許多模擬軟體都可以直接利用這樣獲得的場景文件進行模擬。需要注意的是,在這種情況下,仿真軟體中還原出來的只是實採場景的“邏輯”,場景中的參與者披著仿真軟體三維模型庫中的車輛模型“馬甲”上演著一幕幕真實行為片段。換句話說,這樣還原出來的場景當然可以滿足規控演算法的測試,但這樣無法還原當時的感測器感知訊息,因為畢竟還是由模擬軟體的三維模型來扮演的前景車輛和背景。現在如果想要還原感測器感知訊息,可以應用NERF。
那麼,究竟什麼樣的模擬場景才是有價值的呢?路測車輛收集的自然駕駛資料還原場景被認為是最能接近真實路況且隨機性強的,但我們不是說目前路測花費的時間長趕不上趟兒嗎?這就需要我們對路測資料進行處理,將交通參與者辨識提取出來後再重新排列組合,形成基於真實資料的隨機場景。
例如百度19年大火的論文介紹了他們的AADS模擬系統:在該系統中,使用一台安裝了雷射雷達和雙目相機的汽車掃描街道,便可獲得自動駕駛模擬的全部素材,然後自動將輸入素材分解為背景、場景照明和前景物件。透過視圖合成技術,可以在靜態背景上改變視點,產生任意視角的真實影像,進而模仿車子在不同環境中行走的動作。那麼如何證明這些重組場景的有效性呢?論文中提到了一種透過比較虛擬場景和實際場景中感知演算法的辨識效果來評估的方法,用被測對象的表現來評估測量工具,也很有趣。後來的一些應用於自動駕駛的NERF研究中,也使用的是這樣的一套思路,例如UniSim。
我個人認為,再有效的自然駕駛資料模擬場景也只適合部分演算法的測試:這種方法不管怎樣,周圍物體的軌跡都是錄製好的,是沒辦法根據本車行為改變的。這就像是電影和遊戲的區別,電影中的場景只能播放,而遊戲是可以根據互動改變場景的。
也許在不久的將來,結合交通流模擬和真實數據,隨機場景產生可以批量建立既符合真實交通狀況,也能夠隨本車行為變化的模擬場景。
我們之前談到的場景庫,可以說是在為自動駕駛模擬測試準備數據,那麼模擬開發工作就是在創建或完善工具了。
模擬開發大概包含以下幾個面向:
最後我覺得可能還有更高進階要求的第8點:「哪裡不會點哪裡」的能力,例如如果你的被測對像只是自動駕駛功能框架的一部分呢?你能不能透過開源演算法把剩下的補齊,讓「閉環」跑起來?
有了自動駕駛模擬測試所需的資料和工具,接下來就是模擬測試了。今天主要介紹幾個常見模擬測試鏈路。
前面幾節說了那麼多,都是在總體介紹我們這個行當,都是我這個盲人摸出來的大象,本節就來談談大體上我們每天都在幹嘛。這些日常工作當然是包含在第二、三節的內容當中的:
另外還有一點6.【需求分析】:身為模擬開發工程師,你理應是最了解你所用工具的那個人,所以一旦客戶(內部外部都算)有了新需求,模擬開發工程師應該能夠根據需求和被測對象的具體情況設計技術方案、提出軟硬體需求和專案計劃。所以有的時候,產品和專案管理的活都要幹。
「技術堆疊」這句話聽著挺洋氣,但其實就是這個崗位應該都會點啥。很久以前我看過一個電視劇,裡邊一個急診的大夫自嘲:我們是萬金油,人家外科大夫才是金不換。我一直認為模擬工程師就像醫院裡的急診科大夫,什麼都得知道點:測試什麼演算法,那麼除了這個演算法之外的所有東西都要準備好,導航定位、控制規劃、資料處理、參數標定、天文地理、醫卜星象、金批彩掛、評團調柳……可以不求甚解,快速滿足演算法測試需求是最重要的。
這種所謂的「全局觀」是模擬工程師的優勢,但只有對演算法有真正的了解,才能做出能真正幫助演算法改進的模擬工作,也才能走得更遠。扯遠了,拉回來:
以上只是我個人的一點總結,歡迎廣大同行在此補充!
為了文章的完整性,我也會在這一節簡單介紹下市面上常用的一些模擬軟體(真的不是廣告!沒上榜的也不要氣餒)。
最後再補充一個lgsvl:本來lgsvl的優勢是和Apollo結合得較好,但是我聽說lgsvl的官方已經放棄了這個項目,所以我勸你棄掉這個洞。
相信透過我前五節的介紹,聰明的在校同學已經可以從中體會出成為一名自動駕駛模擬工程師的學習路徑,而透過批判我前五節的內容,年輕的同行也已可以從中得出進階之道。但本節我還是寫一些在這方面的粗淺理解。
我前邊說了那麼多,想必大家也能看出來,自動駕駛的模擬是一個多學科交叉的領域,能夠接受來自很多專業的同學,包括但不限於:電腦/控制/機器人/機械/車輛/電力電子等等。
經歷與技術上,我嘗試列舉一些任職要求:
目前自動駕駛產業正經歷很大波動,但總結起來能用到模擬工程師的主要有以下幾類企業:主機廠,以整合應用成型模擬軟體為主,但新勢力基本上都要做自研;自動駕駛解決方案供應商,也就是演算法的Tier1,可能也是自研模擬的居多;模擬軟體企業,這方面國內才剛起步,基本上都是新創企業。
在本節的最後我再談一點從傳統機械「轉行」來的體會。我碩士畢業的一個學校具有濃厚的轉碼風氣,我那屆入學機械研究生院的中國學生裡,大概有十之七八畢業後都從事了電腦行業。有賴於相對寬鬆的選課制度,同學的操作是盡量多修電腦學院的課程。於是在那兩年,焚膏油以繼晷,恆兀兀以窮年是常態。但我不記得當年找工作需不需要刷題了。總之一句話,機械如何轉型計算機:去讀半個電腦學位。其實當時也不單機械,各個專業都在轉,也不單是中國學生,全世界人民都這樣。
不過後知後覺的我並不在當年的這十之七八里邊,所以我錯失了轉型最好的機會。等到靠自學的時候,就難多了:最主要沒有時間,這就更要求學習資料和方法要有效率。因此相對來講,還是上網課效率較高,畢竟有老師指導。 Coursera的課不錯,好像比較貴。近幾年開源的網路資源越來越多了,不過上的課在精不在多,畢竟電腦最注重實作也最容易實作。電腦經典的著作也很多,像是資料結構與演算法、c primer……我是一本沒看過,有些事真的一旦錯過就不再。
其實我覺得,一個最容易的轉型方式就是,直接從事電腦相關的工作,有了需求提高是最快的,解決了我上面說的學習方向問題和時間問題。不過要是因此產生了績效不達標的問題,您當我沒說。
NERF正伴隨著“資料閉環”、“大模型”、“端到端”這些新興熱門詞彙一起在自動駕駛領域「興風作浪」。短短幾年的時間,NERF再也不是出道時單純的MLP 體渲染,儲存空間資訊的載體五花八門:哈希表、體素網格、多維高斯函數…新的成像方式也層出不窮:U-net 、CNN、光柵化…自動駕駛方向只是NERF一個很小的應用分支。
NERF應用到自動駕駛模擬方向,主要會面臨以下這些問題:
自動駕駛資料收集的方式導致場景的範圍「不閉合」:室外的場景會包含大量遠景,這對NERF的空間資訊儲存是很大挑戰;自動駕駛場景包含大量的動態物體,NERF需要能夠處理動靜態物體(或曰前景背景)的分離;NERF模型普遍不具有遷移能力,可能每個場景都需要訓練單獨的NERF模型,而NERF的訓練仍然比較慢,所以NERF在自動駕駛資料上的大規模應用仍然會有問題。
不過我仍然期待著,同時也相信,NERF會為自動駕駛模擬帶來顛覆性的發展,最終消除仿真在感知演算法上的domain gap,甚至做的更多。從我所了解的資訊來看,NERF至少會帶來以下這些突破:
NERF新視角影像合成的能力可以增強感知演算法訓練資料集:可以產生新感測器內參(相當於改變了感測器配置)、外參(修改了自車軌跡)下的圖片、雷射雷達點雲等數據,給感知演算法更多訓練數據,這方面可以參考StreetSurf、UniSim等研究。在動態物體可編輯的情況下,將來NERF可以產生有針對性的極端情況、隨機情況場景,補充單純路測和WorldSim的不足。如果NERF可以同時很好地解決城市級場景的訓練重建和即時渲染,那麼NERF就完全可以做為一個XIL在環仿真測試的平台,而不會有感知資料domain gap的問題,也會推動端到端算法的發展。另外,NERF的模型甚至也可以作為一個插件放入遊戲引擎(如3d Gaussian Splatting的UE插件已經問世),這樣就可以把NERF的街景重建納入到原有的WorldSim體系中去。如果考慮與AIGC方向的大模型結合,NERF在新場景生成上就會有更多的可能性:將可以任意編輯光線、天氣、物件外觀和行為等等。
所以身為模擬工程師,我強烈建議廣大同行密切關注NERF方向的進展,儘管NERF的各研究項目還都只是初具雛形,但現在深度學習方向在硬體的加速下進展已經越來越快了。
雜七雜八寫了這麼多,最後還有一些感想。
模擬開發有什麼坑。技術上的坑不在這裡討論,在這裡只說一點整體上的感想。那就是要警惕你是否在過度陷入到毫無意義的工作中去:給不同人做類似的項目不算,完成好每個項目就是價值;不使用現成工具非要自研長期看也不算,脫離對特定工具的依賴是有價值的;研發上很多事後被證明不通的嘗試也不能算,研發的失敗也有價值的。那麼具體什麼是「毫無意義」的工作呢?這就見仁見智了,我總結不好。
還有從這個職位出發能幹嘛。如果你在工作中對被測對像有了深入的了解,那麼或許可以嘗試轉向某個方向的演算法開發崗位;還有就是機器人、無人機的模擬開發也可以考慮。
移動機器人和自動駕駛的相通性自不必說,這裡提一下無人機。無人機產業的體量肯定沒有汽車這麼大,但也已經有了落地點,像是巡檢、空拍、測繪等。無人機也需要自動操控演算法來進行避障、路徑規劃等,無人機使用的感測器也和無人駕駛車車輛類似,因此可以說模擬測試有相通之處:無人機也需要豐富的視覺影像、雷達點雲等感知輸入,需要更精細的動力學模型等等。
有興趣了解機器人和無人機模擬的同學,可以從開源的模擬平台Gazebo(https://classic.gazebosim.org/)入手,其對運算資源的需求不會像Nvidia的Isaac那麼高。
今年是OSRF從柳樹車庫獨立出來的第十一年,而機器人作業系統ROS和Gazebo至今已經有了二十多年的發展歷史。 Gazebo從最初一個研究生課題組的科研工具,逐步發展成了今天有11個發行版,以及二代ignition 7個發行版的獨立模擬軟體工具。
Gazebo支援ODE、Bullet等實體引擎,使用OGRE作為渲染引擎,可以創建三維環境,模擬相機、雷射雷達等多種感測器的信息,具有豐富的機器人模型:從機械手臂到輪式機器人,再到人形機器人。更重要的是,Gazebo天然地對ROS平台下的演算法提供全面的支援:畢竟如果你下載安裝一個desktop full的ROS版本,Gazebo是自備的。當然了,Gazebo作為一個開源軟體,只提供了一個起點,它的功能均衡,但是各方面都比較粗糙,不夠深入。不過就像太祖長拳,喬峰在聚賢莊使出來還是會不一樣的。
我上學的時候就接觸過Gazebo,後來工作做機器人仿真,一直在用Gazebo,直到改行做自動駕駛。這就好像,我和Gazebo是曾經的同學,那時年輕,大家都不懂事。工作後我和她再次遇見,決定再續前緣,如膠似漆兩年多,人也過了三十歲,我對她留下一句:我想有更好的發展,就離她而去……現在再見只會說一句:好久不見…
#原文連結:https://mp.weixin.qq.com/s/_bOe_g3mqoobJUbFS3SNWg
以上是自動駕駛仿真大觀!一起聊聊自動駕駛仿真這個行當!的詳細內容。更多資訊請關注PHP中文網其他相關文章!