自動駕駛自誕生那天起,其志向便已立下,成為熟知城市每一處道路的“老司機”,成為乘客更安全、更舒適、更高效出行的“守護神”。在搞錢撈錢的大背景下,這個無私追求樸素得令人敬畏。 在自動駕駛的分工中,決策規(guī)劃將承擔(dān)上述志向?qū)崿F(xiàn)的大部分工作,也因此被毫不吝嗇的稱為自動駕駛的大腦。決策規(guī)劃這塊網(wǎng)上已經(jīng)有數(shù)量眾多的優(yōu)秀科普文章,但她們都沒有長成《十一號組織》的樣子。抱著將所有自動駕駛知識都“擼一遍”的偉大理想,我決定用四篇文章來詳細介紹下決策規(guī)劃的作用、常用算法。 自動駕駛系統(tǒng)分類 留白 自動駕駛系統(tǒng)沒有嚴謹?shù)姆诸?,但行業(yè)內(nèi)普遍喜歡將自動駕駛系統(tǒng)區(qū)別為模塊化的和端到端的。圖1所示為兩者系統(tǒng)的原理框圖對比。 圖1 模塊化和端到端自動駕駛系統(tǒng)原理簡圖 一、模塊化自動駕駛系統(tǒng) 這是最經(jīng)典也是業(yè)界采用最多的一種自動駕駛系統(tǒng),也是最簡明清爽的一種結(jié)構(gòu),其作用是實時地求解出連續(xù)的控制輸出使得自動駕駛車輛可以安全地由初始位置行駛到目標(biāo)位置?;谀K化的思想,將自動駕駛系統(tǒng)劃分為三層:環(huán)境感知層、決策規(guī)劃層和控制執(zhí)行層。每一層還可以劃分為不同的模塊,每個模塊還可以劃分為不同的子模塊……。 環(huán)境感知層就像是人的眼睛和耳朵,負責(zé)對外部環(huán)境進行感知并將感知結(jié)果送入決策規(guī)劃層。決策規(guī)劃層就像是人的大腦,在接收到感知信息后進行分析、決策,并生成加減速、變道、直行等控制命令??刂茍?zhí)行層就像人的雙手和雙腳,在接收到控制命令后控制執(zhí)行器完成加速、轉(zhuǎn)向等操作。 模塊化自動駕駛系統(tǒng)中每一層都是關(guān)鍵和核心。但從實現(xiàn)自動駕駛功能的角度,環(huán)境感知層是基礎(chǔ),決策規(guī)劃層是核心,控制執(zhí)行層是保障。作為核心的決策規(guī)劃層帶著自動駕駛往“更安全、更舒適、更高效”的道路上狂奔,畢竟小小的失誤小則影響乘坐舒適性、通行效率,大則影響人生財產(chǎn)安全。 在模塊化自動駕駛系統(tǒng)中,不同團隊負責(zé)不同的模塊,可以實現(xiàn)更好的分工合作,從而提高開發(fā)效率。同時團隊內(nèi)部可以對負責(zé)的模塊進行充分的評估,了解各模塊的性能瓶頸所在,從而讓我們能對最后的0.1%的不足有更清晰的認知,技術(shù)的迭代、更新。 缺點就是整個系統(tǒng)非常復(fù)雜、龐大、需要人工設(shè)計成百上千個模塊。二是對車載硬件計算能力要求高,如果越來越多的子模塊采用深度學(xué)習(xí)網(wǎng)絡(luò),這將帶來災(zāi)難性的計算需求爆炸?;谀K化的自動駕駛系統(tǒng),我們可能花10%的時間就實現(xiàn)了99.9%的問題,但我們還需要花90%的時間去解決最后0.1%的不足。 這個系統(tǒng)的難度之大,已經(jīng)遠超一家公司的能力范圍,需要一個協(xié)作的生態(tài)。 二、端到端自動駕駛系統(tǒng) 術(shù)語端到端(End to End)來源于深度學(xué)習(xí),指的是算法直接由輸入求解出所需的輸出,即算法直接將系統(tǒng)的輸入端連接到輸出端。2016年NVIDIA將端到端的深度學(xué)習(xí)技術(shù)應(yīng)用在自動駕駛汽車之后,端到端自動駕駛迅速捕獲圈內(nèi)一眾大佬的芳心,各種demo更是層出不窮。 所謂端到端自動駕駛是指車輛將傳感器采集到的信息(原始圖像數(shù)據(jù)、原始點云數(shù)據(jù)等),直接送入到一個統(tǒng)一的深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò),神經(jīng)網(wǎng)絡(luò)經(jīng)過處理之后直接輸出自動駕駛汽車的駕駛命令(方向盤轉(zhuǎn)角、方向盤轉(zhuǎn)速、油門踏板開度、制動踏板開度等)。 2016年NVIDIA發(fā)表了論文《End to End Learning for Self-Driving Cars》,拉開了端到端自動駕駛內(nèi)卷的序幕。 論文首先展示了訓(xùn)練數(shù)據(jù)的采集系統(tǒng),如圖2所示。論文中只涉及了車道保持功能,因此訓(xùn)練數(shù)據(jù)也只對攝像機的視頻數(shù)據(jù)和人類駕駛員操作方向盤的角度數(shù)據(jù)進行了采集。 圖2 數(shù)據(jù)采集系統(tǒng)框圖 三架攝像機安裝在采集車的擋風(fēng)玻璃后面,并按照左中右依次布置,這樣布置是為了捕獲完整的前向路面信息。一臺NVIDIA DRIVETM PX被用來作為采集車的計算單元。攝像機生成的每一幀視頻數(shù)據(jù)(30FPS)都與人類駕駛員的轉(zhuǎn)向角度進行時間同步。 采集車最終在各式道路以及多樣照明和天氣條件組合下采集了72小時的駕駛數(shù)據(jù)。訓(xùn)練數(shù)據(jù)包含視頻采樣得到的單一圖像,搭配相應(yīng)的轉(zhuǎn)向命令。 但是只有來自人類駕駛員的正確數(shù)據(jù)是不足以完成訓(xùn)練的,神經(jīng)網(wǎng)絡(luò)還必須學(xué)習(xí)如何從任何錯誤中恢復(fù),否則自動駕駛汽車就將慢慢偏移道路。因此訓(xùn)練數(shù)據(jù)還擴充了額外的圖像,這些圖像顯示了遠離車道中心的偏離程度以及不同道路方向上的轉(zhuǎn)動。兩個特定偏離中心的變化圖像可由左右兩個攝像機捕獲。 訓(xùn)練數(shù)據(jù)準備完畢之后,將其送入一個卷積神經(jīng)網(wǎng)絡(luò)(CNN),訓(xùn)練系統(tǒng)框圖如圖3所示。 圖3 訓(xùn)練系統(tǒng)框圖 CNN計算一個被推薦的轉(zhuǎn)向命令,這個被推薦的轉(zhuǎn)向命令會與該圖像的期望命令相比較,CNN權(quán)重就會被調(diào)整以使其實際輸出更接近期望輸出。在這個框架中,只要提供足夠的訓(xùn)練數(shù)據(jù),即人類駕駛員駕駛攜帶有攝像頭的車輛累計駕駛大量的里程,再加上人為創(chuàng)造系統(tǒng)的“極限”道路狀態(tài)——偏離道路線的各種工況,CNN就會得到充分的訓(xùn)練,而變得足夠強大。 一旦訓(xùn)練完成,網(wǎng)絡(luò)就能夠從單中心攝像機(single center camera)的視頻圖像中生成轉(zhuǎn)向命令,圖4展示了這個配置。 圖4 訓(xùn)練過的網(wǎng)絡(luò)用于從單中心前向攝像機中生成轉(zhuǎn)向命令 在端到端自動駕駛中,沒有人工設(shè)計的繁復(fù)規(guī)則,只需要極少的來自人類的訓(xùn)練數(shù)據(jù),深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)就會學(xué)會駕駛。且不用關(guān)心有沒有高精地圖覆蓋、此時是行駛在高速主干路還是城區(qū)道路、道路上車道線有沒有缺失等。 相比模塊化自動駕駛系統(tǒng),端到端自動駕駛系統(tǒng)設(shè)計難度低,硬件成本小,還能借助數(shù)據(jù)的多樣性獲得不同場景下的泛用性。各方面條件得天獨厚,從理論層面看堪稱自動駕駛的終極夢想。 然而端到端深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)是一個完完全全的黑盒子,不具解釋分析性,可靠性、靈活性差,工程師們沒有辦法對它進行系統(tǒng)化的解釋分析,而是只能依靠推測和實驗進行調(diào)整。最終帶來的結(jié)果是安全難以得到保障,而自動駕駛最最關(guān)注的恰是安全。 比如端到端自動駕駛系統(tǒng)下汽車做出一個汽車減速左轉(zhuǎn)的行動,工程師們無法確定這是因為汽車看到行人,還是因為看到較遠處的紅燈。但是,在模塊化的自動駕駛系統(tǒng)下,由于多個識別系統(tǒng)嵌套,相對好理解到底汽車所做的每一個舉動背后的邏輯。 這也意味著,如果端到端系統(tǒng)出現(xiàn)問題時,工程師們并不能對其對癥下藥,做出合理的應(yīng)對。更多情況下甚至只能簡單向模型灌注更多的數(shù)據(jù),希冀它能在進一步的訓(xùn)練中“自行”解決問題。這也會大大降低端到端自動駕駛系統(tǒng)原本開發(fā)簡單的優(yōu)勢。 決策規(guī)劃分層架構(gòu) 留白 決策規(guī)劃的任務(wù),就是在對感知到的周邊物體的預(yù)測軌跡的基礎(chǔ)上,結(jié)合結(jié)合自動駕駛車輛的和當(dāng)前位置,對車輛做出最合理的決策和控制。 正如人的大腦又分為左腦和右腦、并負責(zé)不同的任務(wù)一樣,模塊化自動駕駛系統(tǒng)中決策規(guī)劃層也可以繼續(xù)細分為執(zhí)行不同任務(wù)的子層。而這一分層設(shè)計最早其實是源自2007年舉辦的DAPRA城市挑戰(zhàn)賽,比賽中多數(shù)參賽隊伍都將自動駕駛系統(tǒng)的決策規(guī)劃方式包括三層:全局路徑規(guī)劃層(Route Planning)、行為決策層(Behavioral Layer)和運動規(guī)劃層(Motion Planning),如圖5所示。 圖5 決策規(guī)劃分層架構(gòu) 全局路徑規(guī)劃層聚焦在相對頂層的路徑規(guī)劃,聚焦在分鐘到小時級別的規(guī)劃。該層在接收到輸入的目的地信息后,基于存儲的地圖信息搜素出一條自起始點至目標(biāo)點的一條可通過的路徑。如圖6所示,在藍色起點和黃色終點之間,黑色就是搜索出來的一條可通行的路徑,當(dāng)然路徑不止一條,如何搜索出最優(yōu)是下文將要介紹的內(nèi)容。 圖6 全局路徑規(guī)劃示例 在全局路徑規(guī)劃的時候,也可以基于地圖精度和豐富度,提前可以考慮道路曲率半徑、坡度等信息,來避免搜索出部分參數(shù)超出ODD要求的全局路徑。但是高度隨機的交通參與者、高度動態(tài)的交通流以及高度復(fù)雜的道路結(jié)構(gòu),全局路徑規(guī)劃是無法考慮周到的,因此還需要基于具體的行為決策進行后面的運動規(guī)劃,也就是局部路徑規(guī)劃。 行為決策層在收到全局路徑后,結(jié)合感知環(huán)境信息、交通規(guī)則信息、車輛狀態(tài)信息、駕駛場景信息等,推導(dǎo)判斷下一分鐘或下一秒時刻的情況,作出車道保持、車輛跟隨、車道變換和制動避撞等的適合當(dāng)前交通環(huán)境的駕駛行為。如圖8所示,自車在檢測到前方存在低速行駛車輛,且右側(cè)車道滿足變道條件后,作出向右變道的駕駛行為決策。 圖8 行為決策示例 運動規(guī)劃層也被成為局部路徑規(guī)劃層,與全局路徑規(guī)劃聚焦在分鐘到小時級別的規(guī)劃不同,運動規(guī)劃聚焦在毫秒級到秒級的規(guī)劃。規(guī)劃的時候,根據(jù)輸入的行為決策信息、結(jié)合車輛實時位姿信息、局部環(huán)境信息、全局路徑參考信息等,在“安全、舒適、效率”的精神引領(lǐng)下,規(guī)劃生成一條滿足特定約束條件的平滑軌跡軌跡(包括行駛軌跡、速度、方向等),并輸入給控制執(zhí)行層。 如圖9所示,在車輛收到行為決策層的左變道指令后,主車基于各種信息規(guī)劃出幾條可行的路徑,如何規(guī)劃出最優(yōu)的路徑也是下文要介紹的內(nèi)容。 圖9 運動規(guī)劃示意圖 全局路徑規(guī)劃與運動規(guī)劃作為兩個層級的不同規(guī)劃,現(xiàn)將其特點匯總為表1。 表1 全局路徑規(guī)劃與運動規(guī)劃特點對比 |
|