一文讀懂自動駕駛軟件系統
/導讀/
無人駕駛軟件分為車輛端和云端2個部分,其中車輛端運行操作系統和無人駕駛系統,云端提供無人駕駛所需要的各種服務。操作系統主要負責無人車硬件資源(包括傳感器、系統總線、網絡等)的管理以及計算資源的調度。
對無人駕駛來說,操作系統的實時性非常重要,操作系統要保證任務能夠在規定的時間內得到響應。無人駕駛系統實現了無人駕駛所需要的各種算法,包括定位、環境感知、路徑規劃和控制等,無人駕駛系統是無人駕駛軟件的核心部分。最后云平臺提供了無人駕駛所需要的各種基礎服務,共同構成了整個無人駕駛軟件。
圖源 CSDN況祥彬博客自動駕駛操作系統
構建自動駕駛汽車是一項挑戰,構建自動駕駛汽車操作系統則更具挑戰性。
讓汽車更智能、更安全比建造今天在我們的街道上行駛的任何汽車都要困難得多。自動駕駛汽車操作系統也是如此。選擇汽車操作系統是一件大事,因為它需要控制汽車的核心功能,同時保證乘客和駕駛環境的安全。操作系統是指控制和管理整個計算系統的硬件和軟件資源,并合理地組織調度計算機的工作和資源,以提供給用戶和其它軟件方便的接口和環境的程序集合。
而自動駕駛的操作系統較之手機電腦的操作系統,顯得更加地復雜,對安全性要求也更高。由于無人車的軟件算法都運行在操作系統之上,對操作系統最主要的要求是穩定性和實時性。穩定性體現在操作系統占用的資源少,出現故障之后系統不會奔潰,能夠長時間運行。而實時性要求系統能夠及時響應控制指令,工業設備、汽車電子、航空航天等領域都要求采用實時操作系統,因為在這些領域操作系統如果不能及時響應控制指令,會產生很嚴重的后果。試想一下在駕駛過程中發出了緊急剎車指令,而操作系統沒有及時響應,會導致嚴重的交通事故。
自動駕駛系統
前面介紹了實時操作系統,在實時操作系統之上運行的就是無人駕駛中最重要的算法實現。算法實現有2種不同的架構,一種是模塊化的軟件架構,這是目前無人駕駛系統的主流方案,世界上最大的2個無人駕駛開源社區Apollo和Autoware都是采用這種架構。
另一種是端到端的軟件架構,和模塊化的思路不同,端到端的自動駕駛直接采用傳感器(攝像頭等)的數據作為輸入,通過深度學習模型,直接輸出控制信號(油門、剎車、方向轉角)控制汽車的行駛。端到端的自動駕駛結構非常簡單,但性能高效。由于深度學習模型不能安全硬編碼,并且具有不可解釋性,目前端到端的自動駕駛更多的只是作為研究手段。
現如今自動駕駛系統一般將核心的算法模塊化劃分為感知層、定位層、預測層、決策規劃層以及控制層,這一套系統的劃分經歷過大量的實驗及時間檢驗,可以說是目前無人車中運用最廣泛的系統之一。模塊化劃分的好處就是各個模塊各司其職,只用專心處理這一層所需要處理的數據,將輸出盡可能穩定地傳給下一層,使其完美完成自動駕駛操作的閉環,但同時,模塊間的信息交互、接口制定、互相配合的難度也是極大的,也造成了目前自動駕駛領域中部分難題難以劃定為某一模塊的劣勢。
而端到端的自動駕駛方法和人類的駕駛方式很相似,結構簡單高效,并不依賴高精度地圖,但用于生產實踐具有可解釋性差的問題,由于自動駕駛過程中的感知、決策和規劃都是通過深度學習模型完成的,出現故障后,沒法分析具體的原因。并且也不能硬編碼安全規則。在算法失控的時候,不能保證安全,而這一條足以使其無法應用于實際的工程應用之中。再根據無人車是否聯網,可以將無人駕駛車分為單車智能和網聯智能,單車智能強調車本身的智能,即使在沒有網絡的情況下,也具備完全自動駕駛能力。而網聯車則強調車和車、車和環境的交互,通過整個車聯網來實現更高級的智能,車本身可以具備自動駕駛能力,也可以只具備部分自動駕駛能力,通過網絡獲取更高級的智能。從目前的發展趨勢來看,無人駕駛車要更快的落地,單車智能和網聯智能二者需要互相融合,共同發展。
自動駕駛云服務
云服務是自動駕駛不可或缺的一環,自動駕駛相關的高精度地圖、數據存儲、模型訓練、自動駕駛仿真等都依賴于云服務。目前已經宣布能提供自動駕駛服務的云平臺有百度Apollo、亞馬遜AWS和華為Octopus,提供的主要功能包括:數據采集和存儲、數據Pipeline、模型訓練部署以及自動駕駛仿真。
講到云服務,首先提到的是數據存儲。數據存儲首先需要的是一個分布式的文件系統,大數據時代已經被廣泛證明了分布式文件系統的好處,最主要的好處是容量可以水平擴展,而且可靠性高。自動駕駛每天產生的大量數據都可以通過分布式文件系統保存下來。
其次是數據處理,深度學習模型訓練、高精度地圖生成以及自動駕駛仿真等都需要進行數據處理。自動駕駛的數據處理流程包括:收集、清洗、標注、訓練和部署。用于自動駕駛模型訓練的數據首先需要人工標注,然后再進行模型訓練,最后才能得到能夠識別車輛和行人的深度學習模型。數據的自動化標注是很大的挑戰,通過工程的方法盡量減少人工標注,可以大幅度提高標注效率。數據處理的另一個挑戰是大規模并行處理數據,由于數據量巨大,如何快速的處理數據是瓶頸。有很多優秀的分布式計算框架,其中Apache Spark可以構建大規模集群并發執行多個任務,在大規模數據處理中有非常好的實踐。能夠快速高效的處理數據,是自動駕駛數據處理的核心競爭力。
最后便是地圖服務,云端應該實時提供自動駕駛所需要的地圖服務。地圖包括道路信息和動態信息,道路信息不用再過多介紹,就是傳統的道路信息,動態信息是地圖上出現堵車或交通管制等需要實時動態更新的信息。在這之中,高精度地圖的維護是目前面臨的最大問題,因為涉及到整個地圖的采集、加工和標注,實時維護大體量的高精度地圖目前來說成本高昂,一些高精度地圖服務提供商提出采用眾包的方式更新高精度地圖。
參考資料:[1] https://blog.csdn.net/qq_40337086/article/details/125540221
- End -