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