一文帶你通俗易懂地理解自動(dòng)駕駛
從自動(dòng)駕駛的架構(gòu)出發(fā)往往最能夠理解自動(dòng)駕駛的原理,大眾對(duì)自動(dòng)駕駛最淺顯易懂的理解就是感知,決策,執(zhí)行。所有機(jī)器人都是這樣的架構(gòu)。
- 感知回答周?chē)惺裁吹膯?wèn)題,類(lèi)似人的眼睛,耳朵。通過(guò)攝像頭,雷達(dá),地圖等手段獲得周?chē)系K物和道路的信息。
- 決策回答我要如何做的問(wèn)題,類(lèi)似大腦。通過(guò)分析感知得來(lái)的信息,生成路徑和車(chē)速。
- 執(zhí)行則類(lèi)似于手腳,將決策獲得信息轉(zhuǎn)化成剎車(chē)、油門(mén)和轉(zhuǎn)向信號(hào),控制車(chē)輛按照預(yù)期行駛。
接下來(lái)我們深入一層,問(wèn)題開(kāi)始有一些復(fù)雜。
我們?cè)谌粘I钪锌赡軙?huì)直覺(jué)的認(rèn)為,我每時(shí)每刻在根據(jù)當(dāng)下眼睛看到信息決定我下一步的決策,但情況往往并不是如此。從眼睛到腦袋再到手腳總是存在一個(gè)時(shí)間的延遲,自動(dòng)駕駛也是如此。但我們不曾感受到影響是因?yàn)榇竽X會(huì)自動(dòng)處理“預(yù)測(cè)”這件事情。哪怕只有幾毫秒,我們的決策也是根據(jù)對(duì)所見(jiàn)之物的預(yù)測(cè)來(lái)指導(dǎo)手腳運(yùn)作的,這是我們維持正常機(jī)能的基礎(chǔ)。因此我們會(huì)在自動(dòng)駕駛決策之前增加預(yù)測(cè)這個(gè)模塊。
感知過(guò)程同樣內(nèi)藏乾坤,仔細(xì)推敲也分為兩個(gè)階段“傳感”和“感知”?!皞鞲小鲍@得的是傳感器的原始數(shù)據(jù)比如圖片,而“感知”是從圖片里處理出的有用信息(諸如圖里有幾個(gè)人)。古語(yǔ)常說(shuō)“眼見(jiàn)為實(shí),耳聽(tīng)為虛”?!案兄钡挠杏眯畔⒂挚梢岳^續(xù)分為自車(chē)感知與外部感知,人亦或是自動(dòng)駕駛汽車(chē)在處理這兩大類(lèi)信息時(shí)往往有不同的策略。
- 自車(chē)感知-由感受器官每時(shí)每刻獲得的信息(包括攝像頭,雷達(dá),GPS等)
- 外部感知-由外部智能體或過(guò)往記憶,收集處理后轉(zhuǎn)告的信息(包括定位,地圖,車(chē)聯(lián)信息等),前提需要自車(chē)定位感知(GPS)的輸入。
另外各類(lèi)傳感器經(jīng)由算法處理后的障礙物,車(chē)道等信息往往存在矛盾。雷達(dá)看到了前方有一個(gè)障礙物而攝像頭告訴你沒(méi)有,這時(shí)候就需要增加“融合”模塊。對(duì)不一致的信息作進(jìn)一步的關(guān)聯(lián)和判斷。
這里我們也常常把“融合與預(yù)測(cè)”歸納為“世界模型”。這個(gè)詞非常生動(dòng),無(wú)論你是唯物主義還是唯心主義?!笆澜纭倍疾豢赡苋咳M(jìn)你的腦子里,而指導(dǎo)我們工作生活的是“世界”的“模型”,也就是通過(guò)對(duì)我們出生后的所見(jiàn)所謂加以處理,在腦中逐步構(gòu)建的對(duì)世界的理解,道家稱之為“內(nèi)景”。世界模型的核心職責(zé)就是通過(guò)“融合”來(lái)理解當(dāng)下環(huán)境要素的屬性和關(guān)系,并配合“先驗(yàn)的規(guī)律”作出“預(yù)測(cè)”為決策執(zhí)行提供更從容的判斷,這個(gè)時(shí)間跨度可以從幾毫秒到幾小時(shí)。
由于世界模型的加入,整個(gè)架構(gòu)變得更加豐滿,但這里還一個(gè)細(xì)節(jié)常常被忽略。也就是信息的流向。簡(jiǎn)單的理解,人是通過(guò)眼睛感知再到大腦處理最后交給手腳執(zhí)行的單向過(guò)程,可實(shí)際的情況往往更加復(fù)雜。這里有兩個(gè)典型的行為構(gòu)成了一個(gè)完全相反的信息流,那就是“目標(biāo)達(dá)成的預(yù)案”以及“注意力的轉(zhuǎn)移”。
“目標(biāo)達(dá)成的預(yù)案”如何理解?實(shí)際上思考的伊始并非感知而是“目標(biāo)”。有目標(biāo)才可以觸發(fā)一個(gè)有意義的“感知-決策-執(zhí)行”過(guò)程,比方說(shuō)你希望開(kāi)車(chē)去一個(gè)目的地,可能你知道有幾個(gè)路線,而你最后會(huì)權(quán)衡擁堵情況選擇其中一個(gè)線路。擁堵情況屬于世界模型,而“到達(dá)目的地”屬于決策。這是一個(gè)決策向世界模型傳遞的過(guò)程。
“注意力的轉(zhuǎn)移”又如何理解?哪怕是一張圖片,無(wú)論是人類(lèi)還是機(jī)器都無(wú)法獲取內(nèi)部隱含的所有信息。從一個(gè)需求和上下文出發(fā),我們往往會(huì)把注意力放在一個(gè)有限范圍和有限的品類(lèi)上。這些信息無(wú)法從圖片本身獲得,而是來(lái)源于“世界模型”和“目標(biāo)”,是一個(gè)從決策到世界模型再向感知傳遞的過(guò)程。
我們補(bǔ)充一些必要的信息,重新整理下整個(gè)架構(gòu),它變成了如下的模樣,是不是又復(fù)雜了一些。還沒(méi)完我們繼續(xù)看。
自動(dòng)駕駛算法和大腦一樣,有一個(gè)對(duì)處理時(shí)間的要求。一般的周期在10ms-100ms之間,可以滿足對(duì)環(huán)境變化的反應(yīng)要求。但環(huán)境有時(shí)簡(jiǎn)單有時(shí)卻非常復(fù)雜。很多算法模塊無(wú)法達(dá)成這個(gè)時(shí)間要求。比如思考一遍人生的意義可能不是100ms可以搞定的事情,如果每走一步路都要思考一遍人生,對(duì)大腦一定是一種摧殘。計(jì)算機(jī)也是如此,存在算力和運(yùn)算速度的物理限制。解決方法就是引入分層框架。
這種分層機(jī)制越往上處理周期一般會(huì)縮短3-10倍,當(dāng)然并不一定需要完整出現(xiàn)在實(shí)際框架當(dāng)中,工程上根據(jù)板上資源以及算法使用情況可以靈活調(diào)整?;旧?,感知是上行過(guò)程,根據(jù)注意力不斷精細(xì)化特定要素,提供有“縱深和指向”的感知信息。決策是下行過(guò)程,根據(jù)不同層次的世界模型逐層從目標(biāo)分解動(dòng)作到每個(gè)執(zhí)行單元。世界模型一般沒(méi)有特定流向,用于構(gòu)建不同粒度尺度的環(huán)境信息。
根據(jù)處理任務(wù)的復(fù)雜度,人員分工以及通訊環(huán)境也會(huì)進(jìn)行適當(dāng)?shù)拈幐钆c合并。比如低階ADAS功能(ACC),算力較少,可以只設(shè)計(jì)一層。高階ADAS功能(AutoPilot)一般會(huì)有兩層的配置。而自動(dòng)駕駛功能,復(fù)雜算法較多,三層的設(shè)計(jì)有時(shí)是必須的。在軟件架構(gòu)設(shè)計(jì)中,也存在同一層的世界模型與感知或是決策模塊合并的情況。
各類(lèi)自動(dòng)駕駛公司或者行業(yè)標(biāo)準(zhǔn)都會(huì)發(fā)布自己的軟件架構(gòu)設(shè)計(jì),但往往都是根據(jù)現(xiàn)狀閹割后的結(jié)果,并不具有普適性,但為了方便大家理解,我還是把當(dāng)下主流的功能模塊代入進(jìn)來(lái),大家來(lái)看看對(duì)照關(guān)系,對(duì)理解原理更有幫助。
這里需要提前注意下,雖然這已經(jīng)有點(diǎn)軟件架構(gòu)的意味,但仍然是一種對(duì)原理的描述,實(shí)際的軟件架構(gòu)設(shè)計(jì)相較于此還要更為復(fù)雜,這里并沒(méi)有展開(kāi)所有細(xì)節(jié),而是把容易混淆的部分重點(diǎn)做了展開(kāi)。下面我們重點(diǎn)梳理下。
環(huán)境感知-ALL IN深度學(xué)習(xí)
為了確保無(wú)人車(chē)對(duì)環(huán)境的理解和把握,無(wú)人駕駛系統(tǒng)的環(huán)境感知部分通常需要獲取周?chē)h(huán)境的大量信息,包括障礙物的位置,速度,前方車(chē)道的精確形狀,標(biāo)志牌的位置類(lèi)型等。通常是通過(guò)融合激光雷達(dá)(Lidar),周視/環(huán)視相機(jī)(Camera),毫米波雷達(dá)(Millimeter Wave Radar)等多種傳感器的數(shù)據(jù)來(lái)獲取這些信息。
深度學(xué)習(xí)的發(fā)展,使得通過(guò)神經(jīng)網(wǎng)絡(luò)算法完成自動(dòng)駕駛搭建成為全行業(yè)共識(shí)。感知模塊的算法是整個(gè)深度學(xué)習(xí)化的“馬前卒”,是最早完成轉(zhuǎn)型的軟件模塊。
定位地圖與V2X-自車(chē)感知與外部感知之間的關(guān)聯(lián)與差異
傳統(tǒng)意義上理解,外部感知是以GPS定位信號(hào)為基礎(chǔ),將高精地圖和車(chē)聯(lián)網(wǎng)消息(V2X)等絕對(duì)坐標(biāo)系下的信息轉(zhuǎn)化到自車(chē)坐標(biāo)系下,供車(chē)輛使用的感知源。和人使用的高德導(dǎo)航儀類(lèi)似。配合原本就在自車(chē)坐標(biāo)系下的“自車(chē)感知”信息綜合為自動(dòng)駕駛提供環(huán)境信息。
但實(shí)際的設(shè)計(jì)往往更為復(fù)雜,由于GPS不可靠,IMU需要持續(xù)修正,可量產(chǎn)的自動(dòng)駕駛定位往往使用感知地圖的匹配來(lái)精確獲得精確的絕對(duì)位置,利用感知結(jié)果來(lái)修正IMU獲得精確的相對(duì)位置,和GPS-IMU組成的INS系統(tǒng)形成冗余。因此“外部感知”所必須的定位信號(hào),往往依賴于“自車(chē)感知”信息。
另外雖然地圖嚴(yán)格意義上屬于“世界模型”的組成部分,但受限于GPS的敏感性,在國(guó)內(nèi)進(jìn)行軟件實(shí)施的過(guò)程中,會(huì)把定位模塊和地圖模塊進(jìn)行整合,并加偏所有GPS數(shù)據(jù),確保沒(méi)有敏感定位信息的外泄。
融合預(yù)測(cè)模塊-核心關(guān)注兩者的差異
融合的核心是解決兩個(gè)問(wèn)題,一個(gè)是時(shí)空同步問(wèn)題,利用坐標(biāo)系轉(zhuǎn)換算法和軟硬協(xié)同的時(shí)間同步算法,首先將激光雷達(dá),相機(jī)和毫米波雷達(dá)等感知測(cè)量結(jié)果對(duì)齊到一個(gè)時(shí)空點(diǎn)上,確保整個(gè)環(huán)境感知原始數(shù)據(jù)的統(tǒng)一。另一個(gè)是解決關(guān)聯(lián)(Association)與異常剔除的問(wèn)題,處理不同傳感器映射到同一個(gè)“世界模型”元素(一個(gè)人/一根車(chē)道等)的關(guān)聯(lián),并且剔除可能由于單一傳感器誤檢導(dǎo)致的異常。但融合區(qū)別于預(yù)測(cè)的根本是其只處理過(guò)去以及當(dāng)前時(shí)刻的信息,并不會(huì)對(duì)外來(lái)時(shí)刻做處理。
而預(yù)測(cè)會(huì)基于融合的結(jié)果做出對(duì)未來(lái)時(shí)刻的判斷,這個(gè)未來(lái)的時(shí)刻從10ms-5分鐘皆有。其中包括對(duì)信號(hào)燈的預(yù)測(cè),對(duì)周?chē)系K物行駛路徑的預(yù)測(cè)或者是對(duì)遠(yuǎn)處的過(guò)彎位置做出預(yù)測(cè)。不同周期的預(yù)測(cè)會(huì)給到對(duì)應(yīng)周期的規(guī)劃,做不同粒度的預(yù)判,從而為規(guī)劃的調(diào)整提供更大的空間。
規(guī)劃控制-層次化策略分解
規(guī)劃是無(wú)人車(chē)為了某一目標(biāo)而作出一些有目的性的決策的過(guò)程,對(duì)于無(wú)人駕駛車(chē)輛而言,這個(gè)目標(biāo)通常是指從出發(fā)地到達(dá)目的地,同時(shí)避免障礙物,并且不斷優(yōu)化駕駛軌跡和行為以保證乘客的安全舒適。規(guī)劃的結(jié)構(gòu)總結(jié)就是根據(jù)不同粒度的環(huán)境融合信息,從外部目標(biāo)出發(fā)進(jìn)行逐層的評(píng)估與分解,最終傳遞到執(zhí)行器,形成完整的一次決策。
細(xì)分來(lái)看,規(guī)劃模塊一般會(huì)分成三層:任務(wù)規(guī)劃(Mission Planning),行為規(guī)劃(Behavioral Planning)和動(dòng)作規(guī)劃(Motion Planning)三層,任務(wù)規(guī)劃核心是基于路網(wǎng)和離散路徑搜索算法獲得全局路徑被給出大尺度的任務(wù)類(lèi)型,往往周期較長(zhǎng),行為規(guī)劃是基于有限狀態(tài)機(jī)判斷在一個(gè)中周期上,車(chē)輛應(yīng)該采取的具體行為(左換道,繞行避讓,E-STOP)并設(shè)定一些邊界參數(shù)和大致的路徑范圍。運(yùn)動(dòng)規(guī)劃層往往會(huì)基于采樣或是最優(yōu)化的方法最終獲得滿足舒適性,安全性要求的唯一路徑。最后交由控制模塊通過(guò)前饋預(yù)測(cè)和反饋控制算法完成對(duì)唯一路徑的跟隨,并操縱制動(dòng),轉(zhuǎn)向,油門(mén),車(chē)身等執(zhí)行器最終執(zhí)行命令。
不知道各位看官姥爺理解到了第幾層,但以上這些也只是自動(dòng)駕駛原理的入門(mén)內(nèi)容,當(dāng)下自動(dòng)駕駛的理論,算法和架構(gòu)發(fā)展都非??欤m然上述內(nèi)容是比較本源的知識(shí)點(diǎn),很長(zhǎng)時(shí)間內(nèi)不會(huì)過(guò)時(shí)。但新增的需求給自動(dòng)駕駛的架構(gòu)和原理都帶來(lái)了很多全新的認(rèn)知。