黨的二十大報(bào)告指出: 教育、科技、人才是全面建設(shè)社會(huì)主義現(xiàn)代化國(guó)家的基礎(chǔ)性、戰(zhàn)略性支撐。必須堅(jiān)持科技是第一生產(chǎn)力、人才是第一資源、創(chuàng)新是第一動(dòng)力,深入實(shí)施科教興國(guó)戰(zhàn)略、人才強(qiáng)國(guó)戰(zhàn)略、創(chuàng)新驅(qū)動(dòng)發(fā)展戰(zhàn)略,這三大戰(zhàn)略共同服務(wù)于創(chuàng)新型國(guó)家的建設(shè)。高等教育與經(jīng)濟(jì)社會(huì)發(fā)展緊密相連,對(duì)促進(jìn)就業(yè)創(chuàng)業(yè)、助力經(jīng)濟(jì)社會(huì)發(fā)展、增進(jìn)人民福祉具有重要意義。
近年來(lái),智能網(wǎng)聯(lián)汽車行業(yè)的商業(yè)價(jià)值不斷提高,智能網(wǎng)聯(lián)汽車的智能駕駛與智慧座艙受到了越來(lái)越多消費(fèi)者的關(guān)注和歡迎。在這一大背景下,自動(dòng)駕駛技術(shù)不可避免地成為智能網(wǎng)聯(lián)汽車的核心技術(shù),逐漸成為主機(jī)廠與各級(jí)經(jīng)銷商希望掌握的核心技術(shù)。而作為行業(yè)的佼佼者百度也開(kāi)源了Apollo源碼,涵蓋了自動(dòng)駕駛的感知、融合、預(yù)測(cè)、決策、規(guī)劃與控制的全棧算法,受到了自動(dòng)駕駛算法行業(yè)從業(yè)人員的熱烈歡迎。然而,Apollo開(kāi)源代碼缺少注釋和相關(guān)理論知識(shí)的講解,在閱讀
和理解時(shí)會(huì)遇到不少問(wèn)題。這樣的問(wèn)題,不僅對(duì)該領(lǐng)域的算法工程師造成了困惑,同時(shí)也使高等
院校的廣大師生缺乏教學(xué)與學(xué)習(xí)的目標(biāo)和方向。
筆者從2013年接觸雷達(dá),掌握了雷達(dá)信號(hào)處理與數(shù)據(jù)處理領(lǐng)域扎實(shí)的基礎(chǔ)知識(shí)。
隨后在2016年開(kāi)始接觸汽車行業(yè)的高級(jí)輔助駕駛(ADAS),先后在公司擔(dān)任了總工、技術(shù)負(fù)責(zé)人、研發(fā)總監(jiān)等職務(wù),不僅接觸了各類傳感器,例如毫米波雷達(dá)、激光雷達(dá)和攝像頭,也對(duì)各種傳感器的工作原理與開(kāi)發(fā)過(guò)程有了深刻的理解和認(rèn)知,直接在一線帶領(lǐng)團(tuán)隊(duì)主導(dǎo)了各種ADAS功能的落地,涉及了各種不同的計(jì)算平臺(tái),積累了豐富的自動(dòng)駕駛?cè)珬K惴ǖ拈_(kāi)發(fā)與移植經(jīng)驗(yàn)。與此同時(shí),筆者通過(guò)與各大主機(jī)廠的接觸,對(duì)目前行業(yè)的痛點(diǎn)與解決方案的可行性與落地的可操作性有了更為深入的理解和判斷。
為此,本書(shū)的重點(diǎn)主要是講解Lattice算法的基本流程、基礎(chǔ)理論、核心模塊(如橫縱向軌跡生成與碰撞檢測(cè))的翔實(shí)分析與相關(guān)代碼的逐行解析,不僅可以幫助行業(yè)的規(guī)劃算法工程師更好、更深刻地理解Lattice的核心理論與模塊實(shí)現(xiàn),也可以為高等院校的廣大師生提供不錯(cuò)的教學(xué)資源或教材。與此同時(shí),筆者
在本書(shū)的撰寫(xiě)過(guò)程中,查閱了大量的資料,對(duì)Lattice算法的理解與認(rèn)知也更為深刻,收獲良多。
本書(shū)主要內(nèi)容
第1章介紹Lattice算法的背景、基本思想與本書(shū)的主要框架。
第2章介紹Frenet坐標(biāo)系與Cartesian坐標(biāo)系間的相互轉(zhuǎn)換關(guān)系,并對(duì)轉(zhuǎn)換過(guò)程詳盡地進(jìn)行了推導(dǎo)與證明。
第3章介紹參考線的離散化與計(jì)算過(guò)程,以及如何根據(jù)參考線確定自車當(dāng)前位置的參考點(diǎn)。
第4章介紹障礙物的描述,以及靜態(tài)障礙物與動(dòng)態(tài)障礙物ST圖的構(gòu)建方法。
第5章介紹Lattice算法中縱向運(yùn)動(dòng)軌跡的生成,根據(jù)不同的場(chǎng)景,例如定速巡航場(chǎng)景、有停止點(diǎn)的場(chǎng)景和有障礙物的場(chǎng)景等,
如何
選擇4次多項(xiàng)式和5次多項(xiàng)式,構(gòu)造車輛的縱向運(yùn)動(dòng)軌跡生成模型。
第6章介紹Lattice算法中橫向運(yùn)動(dòng)軌跡的生成,與縱向運(yùn)動(dòng)軌跡生成不同的是,本章主要介紹了5次多項(xiàng)式和OSQP兩種模型的構(gòu)建方法。
第7章介紹如何根據(jù)不同的場(chǎng)景構(gòu)建縱向參考速度,并對(duì)各條橫縱向軌跡進(jìn)行cost的計(jì)算與排序。
第8章介紹橫縱向軌跡合成與合成后軌跡點(diǎn)的Frenet坐標(biāo)向Cartesian坐標(biāo)的轉(zhuǎn)換,并對(duì)各條軌跡進(jìn)行基于AABB的粗式碰撞檢測(cè)與基于OBB的細(xì)式碰撞檢測(cè)。
閱讀建議
本書(shū)是一本兼顧Lattice算法的理論性與實(shí)戰(zhàn)性的書(shū)籍,既包含Lattice算法中涉及的基礎(chǔ)理論知識(shí),又有配套的代碼示例與注釋,包括詳細(xì)的理論分析,實(shí)操性強(qiáng)。由于Lattice算法理論性和實(shí)操性較強(qiáng),內(nèi)容較多,所以本書(shū)對(duì)Lattice算法涉及的基本理論、方法與概念講解得較為詳細(xì),包括公式推導(dǎo)、理論分析及代碼示例。每個(gè)知識(shí)點(diǎn)都配有源碼解析,力求精簡(jiǎn),在輕松掌握基礎(chǔ)知識(shí)的同時(shí)對(duì)代碼的實(shí)操部分可快速進(jìn)入實(shí)戰(zhàn)。
建議讀者先根據(jù)Apollo 6.0或8.0的官方安裝手冊(cè),搭建好開(kāi)發(fā)環(huán)境。
本書(shū)配套資源
素材(源碼)等資源: 掃描目錄上方的二維碼下載。
視頻等資源: 掃描封底的文泉云盤防盜碼,再掃描書(shū)中相應(yīng)章節(jié)的二維碼,可以在線學(xué)習(xí)。
致謝
非常感謝我的母親及妻女,在我寫(xiě)作的過(guò)程中承擔(dān)了繁重的家務(wù)勞動(dòng),使我可以全身心地投入寫(xiě)作工作中。
由于時(shí)間倉(cāng)促,書(shū)中難免存在不妥之處,敬請(qǐng)讀者見(jiàn)諒,并提寶貴意見(jiàn)。
樊勝利
2024年3月
第1章Lattice算法概述(23min)
1.1背景
1.2基本思想
1.3總體框架
第2章笛卡兒坐標(biāo)系與Frenet坐標(biāo)系(31min)
2.1Frenet坐標(biāo)系提出的背景
2.2Frenet坐標(biāo)系
2.2.1定義
2.2.2特點(diǎn)
2.3Frenet坐標(biāo)系與笛卡兒坐標(biāo)系的相互轉(zhuǎn)換
2.3.1笛卡兒坐標(biāo)向Frenet坐標(biāo)轉(zhuǎn)換
2.3.2Frenet坐標(biāo)向Cartesian坐標(biāo)轉(zhuǎn)換
2.4實(shí)例分析
2.4.1基于Python的實(shí)例分析
2.4.2基于Apollo 6.0的C 實(shí)例分析
2.5小結(jié)
2.5.1過(guò)度依賴參考線
2.5.2Cartesian坐標(biāo)系與Frenet坐標(biāo)系轉(zhuǎn)換的不一致性
第3章參考線的離散化與匹配點(diǎn)的選擇(19min)
3.1參考線的描述與計(jì)算
3.2參考線的離散化與s(t)的計(jì)算
3.2.1離散化與計(jì)算過(guò)程
3.2.2實(shí)例分析
3.3匹配點(diǎn)的選擇
3.3.1匹配點(diǎn)選擇的描述
3.3.2線性插值計(jì)算過(guò)程的描述
3.3.3實(shí)例分析
3.4小結(jié)
第4章靜態(tài)障礙物與動(dòng)態(tài)障礙物ST圖的構(gòu)建(26min)
4.1障礙物的描述
4.1.1障礙物與BB
4.1.2障礙物的幾何中心點(diǎn)與后軸中心點(diǎn)的變換
4.1.3障礙物與車道之間關(guān)系的描述
4.2靜態(tài)障礙物與ST圖
4.2.1靜態(tài)障礙物ST圖的構(gòu)建
4.2.2靜態(tài)障礙物ST圖的代碼解析
4.3動(dòng)態(tài)障礙物與ST圖
4.3.1動(dòng)態(tài)障礙物位置的確定
4.3.2動(dòng)態(tài)障礙物的重構(gòu)及端點(diǎn)極值的確定
4.3.3動(dòng)態(tài)障礙物ST圖的構(gòu)建
4.3.4動(dòng)態(tài)障礙物ST圖構(gòu)建的代碼解析
4.4自車速度的限制與規(guī)劃目標(biāo)的確定
4.5小結(jié)
第5章縱向運(yùn)動(dòng)軌跡規(guī)劃(31min)
5.1縱向運(yùn)動(dòng)場(chǎng)景的分類與描述
5.2基于定速巡航的縱向運(yùn)動(dòng)軌跡的生成
5.2.1可行駛區(qū)域的描述與計(jì)算
5.2.2縱向運(yùn)動(dòng)軌跡生成算法描述
5.2.3縱向運(yùn)動(dòng)軌跡的生成
5.3有障礙物條件下縱向運(yùn)動(dòng)軌跡的生成
5.3.1車道跟隨條件下末狀態(tài)的采樣策略
5.3.2超車條件下末狀態(tài)的采樣策略
5.3.3自車末狀態(tài)ST點(diǎn)的篩選
5.3.4縱向運(yùn)動(dòng)軌跡的生成
5.4有停車點(diǎn)的條件下縱向運(yùn)動(dòng)軌跡的生成
5.4.1自車末狀態(tài)ST采樣
5.4.2代碼解析
5.5小結(jié)
第6章橫向運(yùn)動(dòng)軌跡規(guī)劃(44min)
6.1基于s的5次多項(xiàng)式的橫向運(yùn)動(dòng)軌跡的生成
6.1.1橫向運(yùn)動(dòng)軌跡生成的算法描述
6.1.2基于s的5次多項(xiàng)式的描述
6.1.3代碼解析
6.2基于二次規(guī)劃的橫向運(yùn)動(dòng)軌跡的生成
6.2.1等間隔橫向采樣
6.2.2根據(jù)參考線更新邊界
6.2.3根據(jù)靜態(tài)障礙物更新邊界
6.2.4基于二次規(guī)劃(OSQP)的橫向運(yùn)動(dòng)軌跡規(guī)劃模型的構(gòu)建與求解
6.3實(shí)例分析
6.4代碼解析
6.5小結(jié)
第7章橫縱向運(yùn)動(dòng)軌跡的評(píng)估(23min)
7.1碰撞區(qū)域的構(gòu)建
7.1.1碰撞區(qū)域構(gòu)建過(guò)程詳解
7.1.2代碼解析
7.2縱向運(yùn)動(dòng)參考速度的構(gòu)建
7.2.1定速巡航場(chǎng)景下縱向運(yùn)動(dòng)參考速度的構(gòu)建
7.2.2定點(diǎn)停車場(chǎng)景下縱向參考速度的構(gòu)建
7.2.3代碼解析
7.3縱向運(yùn)動(dòng)軌跡的過(guò)濾
7.3.1停車點(diǎn)、當(dāng)前點(diǎn)與軌跡規(guī)劃終點(diǎn)的關(guān)系約束
7.3.2縱向運(yùn)動(dòng)軌跡中的速度、加速度和加加速度的關(guān)系約束
7.3.3代碼解析
7.4橫縱向運(yùn)動(dòng)軌跡的評(píng)估與計(jì)算
7.4.1縱向運(yùn)動(dòng)軌跡cost的計(jì)算
7.4.2橫向運(yùn)動(dòng)軌跡cost的計(jì)算
7.5小結(jié)
第8章橫縱向運(yùn)動(dòng)軌跡的優(yōu)選(15min)
8.1障礙物運(yùn)動(dòng)軌跡預(yù)測(cè)環(huán)境的構(gòu)建
8.1.1障礙物的過(guò)濾
8.1.2障礙物預(yù)測(cè)軌跡的生成
8.1.3代碼解析
8.2橫縱向運(yùn)動(dòng)軌跡的合成
8.3軌跡的檢驗(yàn)與驗(yàn)證
8.3.1軌跡的驗(yàn)證
8.3.2代碼解析
8.4碰撞檢測(cè)與橫縱向運(yùn)動(dòng)軌跡的優(yōu)選
8.4.1向量點(diǎn)積的定義與應(yīng)用
8.4.2Axis Aligned Bounding Box(AABB)碰撞檢測(cè)算法描述
8.4.3Oriented Bounding Box(OBB)碰撞檢測(cè)算法描述
8.4.4代碼解析
8.5小結(jié)