駕駛?cè)腴T指南:分層架構(gòu)、坐標(biāo)系與感知規(guī)劃控制全解析)
1. 為什么入門兩個(gè)字最容易把人帶偏很多人第一次接觸自動(dòng)駕駛腦子里浮現(xiàn)的畫面是一輛車自己從A點(diǎn)開到B點(diǎn)中間不用人管。這個(gè)畫面本身沒錯(cuò)但它把問題壓縮得太狠了狠到會(huì)讓你在入門階段做出完全錯(cuò)誤的路徑選擇。我見過太多人一上來就去啃端到端大模型、去復(fù)現(xiàn)某個(gè)頂會(huì)論文的感知網(wǎng)絡(luò)結(jié)果連車輛運(yùn)動(dòng)學(xué)模型和坐標(biāo)系變換都沒搞明白代碼跑起來車在原地畫龍。自動(dòng)駕駛?cè)腴T指南這個(gè)題目核心價(jià)值不在于教你造一臺(tái)車而在于幫你建立一套分層認(rèn)知框架。你得先知道這個(gè)系統(tǒng)由哪幾層構(gòu)成、每層解決什么問題、層與層之間靠什么接口通信然后才能判斷自己該從哪一層切入。這個(gè)行業(yè)里做感知的人不一定懂控制做控制的人不一定懂規(guī)劃做規(guī)劃的人不一定懂標(biāo)定但所有人都必須理解上下游在干什么否則你交付的東西就是空中樓閣。這篇文章適合三類人第一類是在校學(xué)生想找方向但被各種名詞轟炸得暈頭轉(zhuǎn)向第二類是轉(zhuǎn)行工程師有軟件開發(fā)或算法基礎(chǔ)想切入這個(gè)賽道第三類是產(chǎn)品/項(xiàng)目崗需要和技術(shù)團(tuán)隊(duì)對話但缺乏底層認(rèn)知。我會(huì)從系統(tǒng)架構(gòu)、坐標(biāo)系、感知入門、規(guī)劃控制基礎(chǔ)、仿真驗(yàn)證這幾個(gè)維度展開每個(gè)部分都給出可操作的切入點(diǎn)和避坑經(jīng)驗(yàn)。不堆公式但關(guān)鍵概念一定講透。提示入門階段最大的陷阱是跳層學(xué)習(xí)。你可以在某一層深挖但絕不能對上下層一無所知否則連問題出在哪都定位不了。2. 先搞清楚自動(dòng)駕駛系統(tǒng)的分層架構(gòu)與數(shù)據(jù)流2.1 五層架構(gòu)的職責(zé)邊界一個(gè)典型的自動(dòng)駕駛系統(tǒng)可以拆成五層傳感器層、感知層、定位與建圖層、規(guī)劃決策層、控制執(zhí)行層。這五層不是學(xué)術(shù)上的嚴(yán)格劃分而是工程實(shí)踐中大家默認(rèn)的協(xié)作邊界。傳感器層負(fù)責(zé)把物理世界的信息變成電信號(hào)和數(shù)字?jǐn)?shù)據(jù)。攝像頭出圖像激光雷達(dá)出點(diǎn)云毫米波雷達(dá)出目標(biāo)距離和速度IMU出加速度和角速度輪速計(jì)出車速。這一層的核心問題是時(shí)間同步和標(biāo)定。時(shí)間同步?jīng)]做好后面融合出來的目標(biāo)位置就是錯(cuò)的標(biāo)定沒做好激光雷達(dá)和攝像頭看到的東西對不上融合直接崩。感知層拿到原始數(shù)據(jù)后要回答三個(gè)問題周圍有什么、它們在哪、它們要往哪去。檢測、分類、跟蹤、預(yù)測都在這一層。感知的輸出通常是障礙物列表每個(gè)障礙物帶位置、速度、朝向、類別、置信度。定位與建圖層回答我在哪和路是什么樣的。GNSS加IMU加輪速計(jì)做組合定位激光雷達(dá)或視覺做里程計(jì)和地圖匹配。高精地圖提供車道線、路沿、交通標(biāo)志的幾何和語義信息。規(guī)劃決策層分全局和局部。全局規(guī)劃給出一條從起點(diǎn)到終點(diǎn)的粗略路徑局部規(guī)劃在每條周期內(nèi)生成一條安全、平滑、可執(zhí)行的軌跡。決策模塊處理變道、跟車、避讓、路口通行這些行為選擇。控制執(zhí)行層把軌跡變成油門、剎車、轉(zhuǎn)向的具體指令。橫向控制管方向盤縱向控制管速度。這一層對實(shí)時(shí)性要求最高通常跑在獨(dú)立的實(shí)時(shí)控制器上。2.2 數(shù)據(jù)流的時(shí)序關(guān)系理解架構(gòu)之后更重要的是理解數(shù)據(jù)在時(shí)間上的流動(dòng)關(guān)系。傳感器采集有延遲感知推理有延遲規(guī)劃計(jì)算有延遲控制執(zhí)行有延遲。整個(gè)鏈路的總延遲如果超過某個(gè)閾值車就會(huì)反應(yīng)遲鈍。我習(xí)慣用一個(gè)簡單的表格來梳理各層的典型延遲量級這能幫你建立工程直覺層級典型延遲主要影響因素傳感器采集10-100ms曝光時(shí)間、掃描周期、傳輸帶寬感知推理30-200ms模型復(fù)雜度、硬件算力、批處理策略定位與地圖匹配10-50ms匹配算法、地圖數(shù)據(jù)量規(guī)劃決策20-100ms搜索空間、優(yōu)化迭代次數(shù)控制執(zhí)行5-20ms控制周期、執(zhí)行器響應(yīng)這張表的意義在于當(dāng)你在調(diào)試時(shí)發(fā)現(xiàn)車輛反應(yīng)慢你得知道去哪個(gè)環(huán)節(jié)找問題。如果感知占了200ms那大概率是模型太重或硬件不夠如果規(guī)劃占了100ms可能是搜索空間設(shè)得太大。2.3 為什么接口定義比算法本身更重要入門階段最容易忽視的是接口定義。感知輸出什么格式、坐標(biāo)系是什么、時(shí)間戳怎么對齊、置信度怎么用這些看起來是工程細(xì)節(jié)實(shí)際上決定了整個(gè)系統(tǒng)能不能跑通。我踩過的一個(gè)坑感知輸出的障礙物位置是在激光雷達(dá)坐標(biāo)系下規(guī)劃模塊默認(rèn)拿到的是車輛坐標(biāo)系下的位置中間少了一次變換。結(jié)果就是車看到障礙物在左邊實(shí)際障礙物在右邊差點(diǎn)出事。后來我們強(qiáng)制規(guī)定所有跨層傳遞的數(shù)據(jù)必須明確標(biāo)注坐標(biāo)系和時(shí)間戳沒有例外。注意如果你在入門階段就養(yǎng)成接口必須顯式聲明坐標(biāo)系和時(shí)間戳的習(xí)慣后面能省掉大量調(diào)試時(shí)間。3. 坐標(biāo)系與標(biāo)定入門階段最該先啃的硬骨頭3.1 為什么坐標(biāo)系是自動(dòng)駕駛的語法學(xué)外語不學(xué)語法你說出來的句子就是亂的。自動(dòng)駕駛里的坐標(biāo)系就是語法。車輛坐標(biāo)系、激光雷達(dá)坐標(biāo)系、攝像頭坐標(biāo)系、IMU坐標(biāo)系、世界坐標(biāo)系每個(gè)都有自己的原點(diǎn)和軸向定義。數(shù)據(jù)在這些坐標(biāo)系之間流轉(zhuǎn)變換錯(cuò)了后面全錯(cuò)。車輛坐標(biāo)系通常定義在后軸中心x向前y向左z向上。激光雷達(dá)坐標(biāo)系原點(diǎn)在雷達(dá)中心軸向取決于安裝方式。攝像頭坐標(biāo)系原點(diǎn)在光心x向右y向下z向前。IMU坐標(biāo)系原點(diǎn)在IMU芯片中心軸向取決于安裝朝向。這些定義不是隨便定的而是為了讓后續(xù)計(jì)算盡量簡單。比如車輛坐標(biāo)系把原點(diǎn)放在后軸中心是因?yàn)檐囕v運(yùn)動(dòng)學(xué)模型通常以后軸中心為參考點(diǎn)這樣計(jì)算轉(zhuǎn)彎半徑和航向角變化最方便。3.2 外參標(biāo)定的實(shí)操邏輯外參標(biāo)定就是求兩個(gè)坐標(biāo)系之間的旋轉(zhuǎn)和平移關(guān)系。理論上你只需要知道兩個(gè)坐標(biāo)系之間的旋轉(zhuǎn)矩陣R和平移向量t就能把點(diǎn)從一個(gè)坐標(biāo)系變換到另一個(gè)。實(shí)際操作中激光雷達(dá)和攝像頭的外參標(biāo)定最麻煩。常見做法是在車輛前方放置一個(gè)標(biāo)定板標(biāo)定板上有關(guān)鍵點(diǎn)攝像頭識(shí)別關(guān)鍵點(diǎn)在圖像中的像素坐標(biāo)激光雷達(dá)識(shí)別關(guān)鍵點(diǎn)在點(diǎn)云中的三維坐標(biāo)然后通過優(yōu)化算法求解R和t。這里有個(gè)經(jīng)驗(yàn)標(biāo)定板的放置位置要覆蓋攝像頭的整個(gè)視野不能只放在正前方。因?yàn)殓R頭畸變在邊緣區(qū)域更嚴(yán)重如果標(biāo)定板只放在中心邊緣的標(biāo)定誤差會(huì)很大。我一般建議至少放五個(gè)位置正前、左前、右前、左后、右后每個(gè)位置采集至少十幀數(shù)據(jù)。標(biāo)定完成后一定要做驗(yàn)證。驗(yàn)證方法是把激光雷達(dá)點(diǎn)云投影到圖像上看點(diǎn)云是否和圖像中的物體邊緣對齊。如果對齊得很好說明標(biāo)定參數(shù)可用如果偏差明顯說明標(biāo)定有問題需要重新采集數(shù)據(jù)。3.3 時(shí)間同步的坑與解法時(shí)間同步比空間同步更容易被忽視但它的影響同樣致命。攝像頭曝光有延遲激光雷達(dá)掃描一圈需要100msIMU采樣頻率高但時(shí)鐘可能和激光雷達(dá)不同步。如果這些傳感器的時(shí)間戳沒有對齊到統(tǒng)一時(shí)鐘融合出來的目標(biāo)位置就是錯(cuò)的。常見解法是硬件觸發(fā)加軟件對齊。硬件觸發(fā)讓所有傳感器在同一時(shí)刻采集軟件對齊用插值方法把不同頻率的數(shù)據(jù)對齊到同一時(shí)間戳。IMU頻率高可以用線性插值攝像頭頻率低通常取最近一幀。我實(shí)測下來如果時(shí)間同步誤差超過10ms在高速場景下目標(biāo)位置誤差就能達(dá)到幾十厘米。這個(gè)誤差在低速泊車時(shí)可能無所謂但在高速行駛時(shí)足以導(dǎo)致誤判。提示入門階段可以先不做多傳感器融合但一定要理解時(shí)間同步的重要性。哪怕你只用攝像頭也要知道圖像的時(shí)間戳對應(yīng)的是曝光開始還是曝光結(jié)束。4. 感知入門從傳統(tǒng)方法到深度學(xué)習(xí)的最小知識(shí)集4.1 感知要解決的三個(gè)核心問題感知層的工作可以概括為檢測、跟蹤、預(yù)測。檢測是回答有什么跟蹤是回答它從哪來、到哪去預(yù)測是回答它接下來會(huì)怎么動(dòng)。檢測的傳統(tǒng)方法包括背景差分、幀差法、霍夫變換等這些方法在特定場景下仍然有用比如車道線檢測。但現(xiàn)代自動(dòng)駕駛感知的主流是深度學(xué)習(xí)因?yàn)樯疃葘W(xué)習(xí)在復(fù)雜場景下的魯棒性遠(yuǎn)超傳統(tǒng)方法。跟蹤的核心算法是卡爾曼濾波和匈牙利匹配??柭鼮V波負(fù)責(zé)預(yù)測目標(biāo)下一時(shí)刻的位置匈牙利匹配負(fù)責(zé)把當(dāng)前幀的檢測結(jié)果和上一幀的跟蹤結(jié)果關(guān)聯(lián)起來。這里的關(guān)鍵參數(shù)是過程噪聲和觀測噪聲調(diào)不好會(huì)導(dǎo)致跟蹤丟失或ID跳變。預(yù)測分兩類基于物理模型的預(yù)測和基于行為模型的預(yù)測。物理模型假設(shè)目標(biāo)保持當(dāng)前運(yùn)動(dòng)狀態(tài)適合短時(shí)預(yù)測行為模型考慮目標(biāo)的意圖比如車輛是否要變道、行人是否要過馬路適合長時(shí)預(yù)測。4.2 深度學(xué)習(xí)感知的最小知識(shí)集如果你要入門深度學(xué)習(xí)感知不需要一上來就啃Transformer先把這幾件事搞明白卷積神經(jīng)網(wǎng)絡(luò)的基本原理。卷積核在圖像上滑動(dòng)提取局部特征。池化層降低分辨率增加感受野。全連接層做分類或回歸。這些概念在任意一本深度學(xué)習(xí)入門書里都有但你要理解的是為什么卷積適合圖像因?yàn)閳D像的特征是局部的、平移不變的。目標(biāo)檢測的兩種范式。兩階段檢測器先出候選框再分類精度高但速度慢單階段檢測器直接回歸框和類別速度快但精度略低。自動(dòng)駕駛對實(shí)時(shí)性要求高所以單階段檢測器更常用。語義分割和實(shí)例分割的區(qū)別。語義分割給每個(gè)像素分類但不區(qū)分同一類別的不同個(gè)體實(shí)例分割既分類又區(qū)分個(gè)體。車道線檢測用語義分割障礙物檢測用實(shí)例分割或目標(biāo)檢測。數(shù)據(jù)標(biāo)注的質(zhì)量控制。深度學(xué)習(xí)是數(shù)據(jù)驅(qū)動(dòng)的標(biāo)注質(zhì)量直接決定模型上限。我見過太多項(xiàng)目在標(biāo)注上省錢結(jié)果模型怎么調(diào)都上不去。標(biāo)注規(guī)范要明確什么算一個(gè)目標(biāo)、遮擋多少算可見、截?cái)嗄繕?biāo)怎么標(biāo)。這些規(guī)則不定清楚標(biāo)注員各標(biāo)各的數(shù)據(jù)就是垃圾。4.3 感知模塊的評測指標(biāo)感知做完之后怎么判斷好壞不能只看mAP。自動(dòng)駕駛場景下你更關(guān)心的是漏檢率和誤檢率。漏檢一個(gè)行人可能致命誤檢一個(gè)障礙物會(huì)導(dǎo)致急剎車。這兩個(gè)指標(biāo)要分開看不能用一個(gè)綜合指標(biāo)掩蓋。另外要看距離分層指標(biāo)。近處目標(biāo)檢測容易遠(yuǎn)處目標(biāo)檢測難。如果只報(bào)一個(gè)總體指標(biāo)可能近處很好、遠(yuǎn)處很差但總體看起來還行。我一般要求按10米、30米、50米、100米分層報(bào)告。還有一個(gè)容易被忽視的指標(biāo)是時(shí)序一致性。單幀檢測好不代表連續(xù)幀都好。如果目標(biāo)在連續(xù)幀之間跳來跳去跟蹤模塊會(huì)瘋掉。評測時(shí)要看檢測框在時(shí)間上的抖動(dòng)程度。注意入門階段不要追求SOTA先追求穩(wěn)定可用。一個(gè)mAP低5個(gè)點(diǎn)但時(shí)序穩(wěn)定的模型比一個(gè)mAP高但幀間跳變的模型有價(jià)值得多。5. 規(guī)劃與控制從能走到走得舒服5.1 規(guī)劃的分層邏輯規(guī)劃分全局和局部這個(gè)前面提過。這里展開講局部規(guī)劃的核心邏輯。局部規(guī)劃要在每個(gè)周期內(nèi)生成一條軌跡這條軌跡要滿足幾個(gè)條件無碰撞、可執(zhí)行、舒適、符合交通規(guī)則。無碰撞是底線可執(zhí)行是要求軌跡滿足車輛運(yùn)動(dòng)學(xué)約束舒適是要求加速度和 jerk 在合理范圍內(nèi)符合交通規(guī)則是要求不壓線、不闖紅燈。常見的局部規(guī)劃算法有采樣法、搜索法、優(yōu)化法。采樣法在控制空間或狀態(tài)空間采樣生成候選軌跡然后打分選最優(yōu)搜索法用A或D在柵格地圖上搜索優(yōu)化法把規(guī)劃問題建模成優(yōu)化問題用二次規(guī)劃或非線性規(guī)劃求解。入門階段建議從采樣法入手因?yàn)檫壿嬛庇^、容易調(diào)試。采樣法的核心是代價(jià)函數(shù)設(shè)計(jì)。代價(jià)函數(shù)通常包括偏離全局路徑的代價(jià)、偏離車道中心的代價(jià)、碰撞代價(jià)、速度偏離期望的代價(jià)、加速度和 jerk 的代價(jià)。每個(gè)代價(jià)的權(quán)重需要調(diào)調(diào)參過程就是規(guī)劃器性格的塑造過程。5.2 控制的兩個(gè)環(huán)路控制分橫向控制和縱向控制。橫向控制管方向盤縱向控制管油門和剎車。橫向控制的經(jīng)典算法是純追蹤和模型預(yù)測控制。純追蹤的邏輯是在期望軌跡上找一個(gè)預(yù)瞄點(diǎn)計(jì)算車輛當(dāng)前朝向和預(yù)瞄點(diǎn)方向的夾角然后打方向盤消除這個(gè)夾角。預(yù)瞄距離是關(guān)鍵參數(shù)太短會(huì)導(dǎo)致震蕩太長會(huì)導(dǎo)致切彎。縱向控制相對簡單常用PID控制器。但PID的積分項(xiàng)在遇到長下坡或滿載時(shí)會(huì)累積誤差需要加抗積分飽和。另外縱向控制要和規(guī)劃模塊的期望速度配合規(guī)劃給期望速度控制跟蹤期望速度。我踩過的一個(gè)坑橫向控制和縱向控制分開調(diào)各自都調(diào)得很好但合在一起就出問題。原因是橫向控制打方向盤時(shí)會(huì)影響車速縱向控制加速時(shí)會(huì)影響橫向穩(wěn)定性。后來我們做了聯(lián)合調(diào)試先固定縱向參數(shù)調(diào)橫向再固定橫向參數(shù)調(diào)縱向最后一起微調(diào)。5.3 舒適性評價(jià)的量化舒適聽起來很主觀但工程上可以量化。常用的指標(biāo)是加速度均方根和jerk均方根。加速度太大乘客會(huì)感到推背或前傾jerk太大乘客會(huì)感到頓挫。我一般把加速度控制在2m/s2以內(nèi)jerk控制在5m/s3以內(nèi)。這兩個(gè)閾值不是絕對的取決于車型和乘客接受度。但有了量化指標(biāo)調(diào)參就有了方向。還有一個(gè)容易被忽視的舒適性因素是方向盤轉(zhuǎn)角速率。方向盤打得太快乘客會(huì)感到車輛在畫龍。我一般把方向盤轉(zhuǎn)角速率控制在200度/秒以內(nèi)。提示規(guī)劃和控制模塊的調(diào)試一定要在仿真環(huán)境里做夠?qū)嵻囌{(diào)試成本太高。仿真環(huán)境可以快速迭代參數(shù)實(shí)車只做最終驗(yàn)證。6. 仿真驗(yàn)證入門階段最容易被低估的環(huán)節(jié)6.1 為什么仿真不是可選很多人覺得仿真就是跑個(gè)demo實(shí)車才是真刀真槍。這個(gè)想法在入門階段特別危險(xiǎn)。實(shí)車調(diào)試一次的成本包括車輛損耗、場地費(fèi)用、人員時(shí)間、安全風(fēng)險(xiǎn)。如果你在仿真里沒調(diào)好就上實(shí)車大概率是浪費(fèi)時(shí)間。仿真環(huán)境能幫你做幾件事快速迭代算法參數(shù)、復(fù)現(xiàn)極端場景、做回歸測試。極端場景在實(shí)車中很難復(fù)現(xiàn)比如突然竄出的行人、前車急剎、暴雨天氣。仿真里可以隨意構(gòu)造這些場景反復(fù)測試算法的魯棒性。6.2 仿真環(huán)境的搭建思路仿真環(huán)境分三層場景層、傳感器層、車輛動(dòng)力學(xué)層。場景層定義道路、交通參與者、天氣、光照。開源工具可以搭建靜態(tài)場景動(dòng)態(tài)交通參與者需要自己寫腳本控制。傳感器層模擬攝像頭、激光雷達(dá)、毫米波雷達(dá)的輸出。攝像頭仿真要模擬鏡頭畸變、曝光、運(yùn)動(dòng)模糊激光雷達(dá)仿真要模擬掃描線、反射強(qiáng)度、噪聲毫米波雷達(dá)仿真要模擬多普勒效應(yīng)和雜波。車輛動(dòng)力學(xué)層模擬車輛的響應(yīng)。簡單的可以用運(yùn)動(dòng)學(xué)自行車模型復(fù)雜的可以用動(dòng)力學(xué)模型。入門階段用運(yùn)動(dòng)學(xué)模型就夠了因?yàn)樗?jì)算快、參數(shù)少。6.3 仿真與實(shí)車的差異管理仿真再逼真和實(shí)車也有差異。傳感器噪聲分布不同、車輛響應(yīng)不同、交通參與者行為不同。這些差異會(huì)導(dǎo)致仿真里調(diào)好的參數(shù)在實(shí)車上表現(xiàn)不一樣。我的經(jīng)驗(yàn)是仿真里調(diào)參數(shù)實(shí)車上驗(yàn)證邏輯。仿真里可以把參數(shù)調(diào)得很精細(xì)但實(shí)車上你要關(guān)注的是邏輯是否正確。比如仿真里你可能把碰撞代價(jià)調(diào)得很高實(shí)車上發(fā)現(xiàn)車輛過于保守這時(shí)候你要調(diào)的是代價(jià)函數(shù)的邏輯而不是繼續(xù)微調(diào)權(quán)重。另外實(shí)車測試一定要有安全員和急停按鈕。入門階段不要追求無人測試安全永遠(yuǎn)是第一位的。7. 入門路徑與資源取舍的個(gè)人經(jīng)驗(yàn)7.1 按目標(biāo)選路徑如果你的目標(biāo)是做感知算法路徑是深度學(xué)習(xí)基礎(chǔ) → 目標(biāo)檢測/分割 → 點(diǎn)云處理 → 多傳感器融合 → 部署優(yōu)化。重點(diǎn)是把模型做小做快同時(shí)保持精度。如果你的目標(biāo)是做規(guī)劃控制路徑是車輛運(yùn)動(dòng)學(xué) → 經(jīng)典控制理論 → 優(yōu)化理論 → 局部規(guī)劃算法 → 實(shí)車調(diào)試。重點(diǎn)是理解車輛動(dòng)力學(xué)和舒適性評價(jià)。如果你的目標(biāo)是做系統(tǒng)集成路徑是傳感器原理 → 標(biāo)定與同步 → 通信中間件 → 功能安全 → 系統(tǒng)測試。重點(diǎn)是理解各模塊的接口和時(shí)序。7.2 資源取舍的原則入門階段時(shí)間有限不要什么都學(xué)。我的原則是先深后廣。選一個(gè)方向深挖挖到能獨(dú)立完成一個(gè)小項(xiàng)目然后再橫向擴(kuò)展。比如你先用攝像頭做一個(gè)車道線檢測從數(shù)據(jù)采集、標(biāo)注、訓(xùn)練、部署全流程走一遍這比你看十篇綜述都有用。開源資源很多但要篩選。優(yōu)先選有完整文檔和活躍社區(qū)的項(xiàng)目不要選那種只有論文沒有代碼的。代碼跑不起來你連門都入不了。7.3 我踩過的三個(gè)坑第一個(gè)坑過早追求端到端。端到端聽起來很酷但入門階段你連中間發(fā)生了什么都不知道出了問題根本沒法調(diào)。模塊化架構(gòu)雖然老土但每個(gè)模塊的輸入輸出清晰調(diào)試方便。第二個(gè)坑忽視數(shù)據(jù)質(zhì)量。我早期花大量時(shí)間調(diào)模型結(jié)構(gòu)后來發(fā)現(xiàn)瓶頸在數(shù)據(jù)標(biāo)注。標(biāo)注不規(guī)范模型再強(qiáng)也學(xué)不到正確的東西。后來我把精力轉(zhuǎn)到數(shù)據(jù)清洗和標(biāo)注規(guī)范上效果立竿見影。第三個(gè)坑不做回歸測試。每次改完代碼只測當(dāng)前場景不測之前通過的場景。結(jié)果改了A場景B場景掛了。后來我建了一個(gè)回歸測試集每次改動(dòng)都跑一遍雖然麻煩但省了很多返工。注意入門階段最大的敵人不是技術(shù)難度而是方向混亂。定好一個(gè)方向走通全流程比什么都重要。8. 從入門到能干活之間還差什么入門指南能幫你建立認(rèn)知框架但離能干活還有距離。這個(gè)距離不是知識(shí)量而是工程經(jīng)驗(yàn)。你知道卡爾曼濾波的公式但不知道過程噪聲怎么調(diào)你知道A*算法但不知道柵格分辨率設(shè)多少合適你知道PID但不知道積分飽和怎么處理。這些經(jīng)驗(yàn)只能在項(xiàng)目中積累。我的建議是找一個(gè)完整的開源項(xiàng)目從數(shù)據(jù)到部署全流程跑一遍。不要只跑推理要跑訓(xùn)練、要改代碼、要調(diào)參數(shù)。跑通之后試著改一個(gè)模塊看效果怎么變。這個(gè)過程會(huì)讓你把零散的知識(shí)點(diǎn)串成線。另外多和做不同模塊的人交流。做感知的人可能不知道規(guī)劃需要什么格式的輸出做規(guī)劃的人可能不知道控制對軌跡的平滑度有要求。交流能幫你理解上下游的約束這在入門階段特別有價(jià)值。最后分享一個(gè)我常用的學(xué)習(xí)方法畫數(shù)據(jù)流圖。把整個(gè)系統(tǒng)的數(shù)據(jù)流畫出來標(biāo)注每個(gè)節(jié)點(diǎn)的輸入輸出、坐標(biāo)系、時(shí)間戳、頻率。畫完之后你對系統(tǒng)的理解會(huì)清晰很多。這個(gè)方法我用了很多年每次接手新系統(tǒng)都先畫一遍屢試不爽。