器人視覺(jué)傳感器:從SLAM到手勢(shì)識(shí)別的完整技術(shù)鏈路)
具身智能機(jī)器人要真正動(dòng)起來(lái)視覺(jué)傳感器是第一道門(mén)檻。這里說(shuō)的“視覺(jué)”不只是拍照或做目標(biāo)檢測(cè)而是把 SLAM、雙目相機(jī)、人體與手勢(shì)檢測(cè)、AR/VR 交互、仿生視覺(jué)這些技術(shù)串成一條完整的感知鏈路。這篇文章適合正在做機(jī)器人視覺(jué)項(xiàng)目、準(zhǔn)備畢業(yè)設(shè)計(jì)、或者想從單一視覺(jué)算法轉(zhuǎn)向整機(jī)系統(tǒng)的開(kāi)發(fā)者。很多初學(xué)者最容易犯的錯(cuò)誤是盯著某一個(gè)算法研究得很深卻不知道傳感器選型、標(biāo)定、數(shù)據(jù)格式、系統(tǒng)集成這些前置問(wèn)題才是真正決定項(xiàng)目能不能落地的關(guān)鍵。下面按我實(shí)際踩坑的順序把這些內(nèi)容重新拆一遍。你會(huì)發(fā)現(xiàn)它們不是五個(gè)孤立方向而是一棵樹(shù)的五根枝丫根是同一個(gè)。1. SLAM 不是單一算法而是一條完整流水線1.1 視覺(jué) SLAM 和激光 SLAM 到底怎么選SLAM 的全稱(chēng)是 Simultaneous Localization and Mapping同步定位與建圖。用一句話概括機(jī)器人在未知環(huán)境里移動(dòng)既要知道自己在哪里又要記錄周?chē)h(huán)境長(zhǎng)什么樣。這兩個(gè)問(wèn)題互相依賴(lài)所以必須放在一起解不能先做其中一個(gè)再做另一個(gè)。激光 SLAM 和視覺(jué) SLAM 是兩條主流路線。激光雷達(dá)直接輸出精確的距離點(diǎn)云測(cè)距穩(wěn)定受光照影響小現(xiàn)在很多室內(nèi)倉(cāng)儲(chǔ)機(jī)器人和 AGV 用的都是激光方案。它的缺點(diǎn)是成本高點(diǎn)云缺乏語(yǔ)義信息。激光知道“這里有墻”但不知道墻上貼著什么、前方是人還是貨架。視覺(jué) SLAM 用相機(jī)做輸入成本低、信息密度高。一張圖像里既有幾何結(jié)構(gòu)又有紋理、文字、人和物體后續(xù)可以接語(yǔ)義分割、目標(biāo)檢測(cè)、三維重建。這對(duì)具身智能機(jī)器人理解場(chǎng)景很有幫助。代價(jià)是對(duì)光照和紋理敏感算法更復(fù)雜對(duì)算力要求更苛刻。也可以把 SLAM 建圖理解為在線三維重建的一種形式兩者共享很多基礎(chǔ)技術(shù)。選型時(shí)我一般這樣判斷室內(nèi)、結(jié)構(gòu)化、預(yù)算夠、只做移動(dòng)和避障激光方案更穩(wěn)。需要識(shí)別物體、人、語(yǔ)義信息或者成本敏感優(yōu)先考慮視覺(jué)。室外光照變化大別用純視覺(jué)單目?jī)?yōu)先雙目或 RGB-D更穩(wěn)妥的是視覺(jué)加 IMU 融合。復(fù)雜環(huán)境里激光加相機(jī)融合是常見(jiàn)做法不是二選一。1.2 從十四講到 ORB-SLAM 的工程落地很多初學(xué)者一上來(lái)就搜“視覺(jué)slam十四講 pdf”。這本書(shū)適合搭理論基礎(chǔ)但你會(huì)發(fā)現(xiàn)書(shū)中代碼和實(shí)際工程項(xiàng)目之間還有不小距離。更務(wù)實(shí)的路線是先跑通一個(gè)完整開(kāi)源項(xiàng)目再回頭補(bǔ)理論。ORB-SLAM2 是很多人第一個(gè)跑通的視覺(jué) SLAM支持單目、雙目、RGB-D。ORB-SLAM3 進(jìn)一步支持了 IMU 融合和多地圖系統(tǒng)。在 Ubuntu 20.04 下安裝運(yùn)行 ORB-SLAM2 是經(jīng)典操作依賴(lài)主要有 OpenCV、Eigen、Pangolin、g2o、DBoW2編譯時(shí)容易卡在版本匹配上。我的建議是按官方 README 的依賴(lài)順序安裝不要自己“優(yōu)化”版本報(bào)錯(cuò)先看是缺庫(kù)還是版本沖突再針對(duì)性改。第一次跑通后先別急著換自己的數(shù)據(jù)。用官方數(shù)據(jù)集比如 TUM、EuRoC跑一遍確認(rèn)程序能穩(wěn)定輸出軌跡再去接真實(shí)攝像頭。ORB-SLAM 運(yùn)行時(shí)會(huì)彈出 Pangolin 可視化窗口你可以旋轉(zhuǎn)視角跟隨焦點(diǎn)自由移動(dòng)觀察關(guān)鍵幀和地圖點(diǎn)這是理解建圖過(guò)程最直觀的方式。注意換真實(shí)攝像頭時(shí)第一步先確認(rèn)驅(qū)動(dòng)、設(shè)備號(hào)和畫(huà)面格式。很多人卡在 SLAM 程序沒(méi)報(bào)錯(cuò)但一直沒(méi)圖像其實(shí)就是攝像頭沒(méi)被正確打開(kāi)。1.3 evo 和 Kalibr評(píng)估和標(biāo)定不能省搜“evo slam評(píng)估工具下載”的人多半已經(jīng)跑通了 SLAM開(kāi)始關(guān)心結(jié)果準(zhǔn)不準(zhǔn)。這是好事也是很多人跳過(guò)的一步。evo 是一個(gè)軌跡評(píng)估工具可以把算法輸出的位姿軌跡和真值軌跡對(duì)齊計(jì)算絕對(duì)軌跡誤差 ATE 和相對(duì)位姿誤差 RPE。判斷一個(gè) SLAM 系統(tǒng)跑得好不好不能只看可視化窗口里地圖多漂亮要拿 evo 出的數(shù)字說(shuō)話。同一段數(shù)據(jù)不同參數(shù)跑出來(lái)的結(jié)果可能差很多用 evo 對(duì)比才有依據(jù)。evo 可以 pip 安裝也可以從 GitHub 倉(cāng)庫(kù)拉下來(lái)用。使用時(shí)要先統(tǒng)一軌跡格式一般轉(zhuǎn)成 TUM 格式最省事。Kalibr 是相機(jī)和相機(jī)-IMU 標(biāo)定工具箱很多 SLAM 項(xiàng)目里的內(nèi)參、外參都是拿它標(biāo)的。流程大致是打印標(biāo)定板常用 Aprilgrid 或 checkerboard錄制一段包含多角度、多距離運(yùn)動(dòng)的圖像或 bag 數(shù)據(jù)運(yùn)行標(biāo)定檢查重投影誤差。標(biāo)定常見(jiàn)的坑有三個(gè)。一是標(biāo)定板不平整軟紙板折一下就廢了建議貼到硬板上。二是環(huán)境光線太暗或太亮標(biāo)定板反光。三是錄制時(shí)運(yùn)動(dòng)太快導(dǎo)致圖像模糊標(biāo)定結(jié)果會(huì)明顯變差。這些細(xì)節(jié)決定了 SLAM 后面能不能收斂。1.4 ROS 建圖導(dǎo)航和 twist 的含義如果你的目標(biāo)是“讓機(jī)器人自己走起來(lái)”建圖只是前半段后面還要接導(dǎo)航。搜“ros slam建圖和自主導(dǎo)航”的人最后一般會(huì)用到 gmapping 或 cartographer 做建圖再用 move_base 做路徑規(guī)劃。move_base 里包含全局代價(jià)地圖、局部代價(jià)地圖、全局規(guī)劃器和局部規(guī)劃器參數(shù)很多。但最影響效果的往往不是規(guī)劃算法本身而是地圖質(zhì)量。這里最容易忽略的是 TF 坐標(biāo)樹(shù)。底盤(pán)、激光雷達(dá)、相機(jī)、IMU 之間的坐標(biāo)變換必須正確否則地圖會(huì)變形導(dǎo)航時(shí)機(jī)器人會(huì)“撞墻”。遇到導(dǎo)航亂走的問(wèn)題先看 TF tree而不是先調(diào)規(guī)劃參數(shù)。順帶回答一個(gè)常被搜到的問(wèn)題slam 里面的 twist 中文怎么翻譯。在 SLAM 理論里twist 出現(xiàn)在李群李代數(shù)部分中文常譯作“扭量”或“旋量”表示剛體速度的旋量表達(dá)。在 ROS 工程里Twist 是速度消息類(lèi)型包含 linear 線速度和 angular 角速度。機(jī)器人底層運(yùn)動(dòng)控制訂閱的 /cmd_vel 話題內(nèi)容就是一個(gè) Twist。同一個(gè)詞出現(xiàn)在兩個(gè)層面理論層關(guān)心數(shù)學(xué)表示工程層關(guān)心“讓機(jī)器人走多快、轉(zhuǎn)多快”。2. 雙目相機(jī)標(biāo)定、測(cè)距和資源邊界2.1 雙目測(cè)距的原理一句話就能講清雙目相機(jī)靠視差測(cè)距。兩個(gè)相機(jī)相當(dāng)于兩只眼睛從不同角度觀察同一個(gè)點(diǎn)這個(gè)點(diǎn)在左右圖像上的像素位置會(huì)有水平偏移這個(gè)偏移就是視差。物體越近視差越大物體越遠(yuǎn)視差越小。知道了視差、基線長(zhǎng)度和相機(jī)焦距就能通過(guò)三角關(guān)系算出深度。原理不復(fù)雜但工程落地全是細(xì)節(jié)?;€的選擇直接影響測(cè)距范圍?;€越長(zhǎng)遠(yuǎn)處測(cè)距精度越高但近處會(huì)有一段公共視野盲區(qū)基線越短近距離好使遠(yuǎn)距離誤差變大。市面上常見(jiàn)的入門(mén)級(jí)雙目相機(jī)基線在 6 到 12 厘米左右適合室內(nèi)機(jī)器人近中距離感知。選型前先想清楚你的機(jī)器人在什么距離范圍內(nèi)需要可靠深度信息而不是先看分辨率。2.2 雙目標(biāo)定流程和常見(jiàn)坑雙目標(biāo)定比單目標(biāo)定多一步立體校正。完整流程大致是拍攝 20 到 30 對(duì)標(biāo)定板圖像覆蓋不同角度、不同距離。用 OpenCV 或 Kalibr 做單目標(biāo)定拿到左右相機(jī)各自的內(nèi)參和畸變系數(shù)。做雙目標(biāo)定計(jì)算兩個(gè)相機(jī)之間的相對(duì)位姿也就是外參。做立體校正讓左右圖像的極線對(duì)齊后續(xù)才能高效計(jì)算視差。保存校正映射參數(shù)之后每幀圖像都要走同一套映射。這個(gè)過(guò)程最容易出問(wèn)題的是左右目畫(huà)面內(nèi)容不一致、亮度差異大、標(biāo)定板沒(méi)有完整出現(xiàn)在同一幀里。還有一個(gè)隱藏坑標(biāo)定后如果改了圖像分辨率或裁剪區(qū)域之前的標(biāo)定參數(shù)基本作廢需要重新標(biāo)定。2.3 低配置電腦能不能跑雙目的判斷標(biāo)準(zhǔn)經(jīng)常有人問(wèn)我的筆記本沒(méi)有獨(dú)立顯卡能不能跑雙目測(cè)距能跑但要降預(yù)期。640x480 分辨率的視差計(jì)算純 CPU 也能勉強(qiáng)跑實(shí)時(shí)性會(huì)打折扣幀率可能只有十幾幀。一旦上到 1280x720 或更高CPU 算 SGBM 這類(lèi)立體匹配算法會(huì)明顯吃力推薦用帶 GPU 的環(huán)境顯存 4GB 以上更舒服。判斷你的配置能不能跑不要只看能不能出圖要看三點(diǎn)幀率能不能滿(mǎn)足需求導(dǎo)航避障一般至少 15 到 30 幀。CPU 或 GPU 占用率是否長(zhǎng)期在 90% 以上如果是后續(xù)再接檢測(cè)算法一定會(huì)掉幀。視差圖質(zhì)量是否穩(wěn)定動(dòng)態(tài)場(chǎng)景下有沒(méi)有大面積空洞或橫條紋噪聲。如果只是學(xué)習(xí)先用小分辨率把流程跑通。如果要落地再考慮 GPU或者換更輕量的立體匹配方案。3. 人體與手勢(shì)檢測(cè)從檢測(cè)到理解再到控制3.1 先分清 2D 檢測(cè)、3D 關(guān)鍵點(diǎn)和手勢(shì)識(shí)別人體與手勢(shì)檢測(cè)在具身智能場(chǎng)景里的價(jià)值是讓機(jī)器人知道“人在哪”“人在做什么”從而提供更好的交互。但這里至少有三個(gè)層級(jí)很多需求文檔把它們混為一談。第一層是人體框檢測(cè)。YOLO 系列是這一層的代表輸出的是圖像里哪里有人速度很快CPU 也能跑。第二層是關(guān)鍵點(diǎn)檢測(cè)OpenPose、MediaPipe 都屬于這一類(lèi)輸出人的骨骼點(diǎn)坐標(biāo)可以判斷姿態(tài)。第三層是手勢(shì)識(shí)別需要先定位到手再對(duì)手部關(guān)鍵點(diǎn)或整個(gè)手部圖像做分類(lèi)或回歸輸出這是握拳、比 OK、還是揮手。這三層能力可以疊加但每加一層模型復(fù)雜度、計(jì)算量、延遲都會(huì)增加。做機(jī)器人交互項(xiàng)目時(shí)先想清楚你到底需要哪一層。不要一上來(lái)就上最復(fù)雜的全套模型很多需求到第二層就已經(jīng)夠用了。3.2 手勢(shì)識(shí)別在真實(shí)環(huán)境里的邊界手勢(shì)識(shí)別在實(shí)驗(yàn)室 demo 里效果往往很好一放到真實(shí)環(huán)境就翻車(chē)。原因不一定是模型不行而是輸入條件變了。常見(jiàn)影響因素包括背景復(fù)雜手和背景顏色紋理接近檢測(cè)不到或誤檢。手部遮擋另一只手擋了一半或者手在身體后面??焖僖苿?dòng)產(chǎn)生運(yùn)動(dòng)模糊關(guān)鍵點(diǎn)抖動(dòng)明顯。光照太暗或逆光手部細(xì)節(jié)丟失。CPU 實(shí)時(shí)推理時(shí)幀率不足動(dòng)作被跳幀識(shí)別結(jié)果滯后。所以做手勢(shì)控制機(jī)器人時(shí)不要只盯著識(shí)別準(zhǔn)確率要把整個(gè)鏈路看成系統(tǒng)檢測(cè)幀率、跟蹤穩(wěn)定性、控制指令平滑度都要一起測(cè)。我一般會(huì)先用一段固定手勢(shì)錄數(shù)據(jù)連續(xù)測(cè)幾十次統(tǒng)計(jì)成功率和響應(yīng)延遲再?zèng)Q定是調(diào)模型還是調(diào)交互邏輯。注意如果機(jī)器人動(dòng)作執(zhí)行本身有延遲手勢(shì)識(shí)別再準(zhǔn)也會(huì)顯得“反應(yīng)慢”。排查時(shí)先算總延遲從手勢(shì)輸入到機(jī)器人動(dòng)作響應(yīng)中間每一步都要計(jì)時(shí)。3.3 手勢(shì)控制機(jī)器人的最小閉環(huán)怎么搭做手勢(shì)控制機(jī)器人不需要一開(kāi)始就實(shí)現(xiàn)復(fù)雜的意圖理解??梢詮淖詈?jiǎn)單的閉環(huán)開(kāi)始手勢(shì)識(shí)別輸出一個(gè)類(lèi)別映射成一條控制指令機(jī)器人執(zhí)行對(duì)應(yīng)動(dòng)作。比如“握拳”表示停止“揮手”表示前進(jìn)“比 OK”表示抓取。規(guī)則寫(xiě)死先讓鏈路跑通再逐步加容錯(cuò)和指令平滑。這個(gè)最小閉環(huán)里最容易被忽視的是指令平滑。手勢(shì)識(shí)別是逐幀的分類(lèi)結(jié)果可能有抖動(dòng)直接把每一幀的類(lèi)別發(fā)到電機(jī)機(jī)器人動(dòng)作會(huì)抽風(fēng)。常見(jiàn)做法是加一個(gè)判穩(wěn)窗口連續(xù) N 幀識(shí)別結(jié)果相同才發(fā)送指令或者對(duì)置信度做濾波。這個(gè)經(jīng)驗(yàn)很多人要踩過(guò)坑才明白。4. AR/VR 和仿生視覺(jué)同一套技術(shù)的另外兩個(gè)出口4.1 AR/VR 里真正干活的是 SLAM提到 AR/VR很多人想到的是顯示設(shè)備和游戲畫(huà)面。但一個(gè) AR 設(shè)備要穩(wěn)定工作核心前提是實(shí)時(shí)知道自己頭戴設(shè)備在三維空間里的位置和朝向。這個(gè)能力就是 SLAM或者更準(zhǔn)確地說(shuō)是視覺(jué)慣性里程計(jì)這類(lèi)緊耦合方案。打個(gè)比方你戴著頭顯眼前有一個(gè)虛擬杯子放在桌面上。設(shè)備必須每一幀都知道你的眼睛在什么位置稍微偏一點(diǎn)杯子繪制的位置就要跟著校正否則虛擬物體就會(huì)“飄”。這套技術(shù)和機(jī)器人 SLAM 在數(shù)學(xué)上高度同源只是交互對(duì)象從機(jī)械臂變成了顯示畫(huà)面。所以把機(jī)器人視覺(jué) SLAM 學(xué)扎實(shí)了轉(zhuǎn)向 AR/VR 的追蹤模塊是有共同基礎(chǔ)的。反過(guò)來(lái)想學(xué) AR/VR 追蹤的人去啃機(jī)器人 SLAM 資料也不會(huì)走彎路。很多招聘崗位寫(xiě)著 AR/VR 算法工程師實(shí)際面試考的仍然是多視圖幾何、狀態(tài)估計(jì)、優(yōu)化這些老底子。4.2 仿生視覺(jué)不只是“模仿人眼”仿生視覺(jué)是另一個(gè)容易被低估的方向。最直接的理解是模仿人眼雙目視差造出能測(cè)距的雙目相機(jī)這部分跟前面講的原理相通。但仿生視覺(jué)還有一條更前沿的路線事件相機(jī)也叫動(dòng)態(tài)視覺(jué)傳感器。事件相機(jī)和普通相機(jī)的本質(zhì)區(qū)別在輸出方式。普通相機(jī)按固定幀率輸出整幅圖像事件相機(jī)只在像素亮度發(fā)生變化時(shí)輸出一個(gè)“事件”包含位置、時(shí)間、亮度變化方向。這種設(shè)計(jì)帶來(lái)兩個(gè)特點(diǎn)時(shí)間分辨率極高可以達(dá)到微秒級(jí)數(shù)據(jù)量在靜態(tài)場(chǎng)景下非常小。適合高速運(yùn)動(dòng)、高動(dòng)態(tài)范圍場(chǎng)景比如無(wú)人機(jī)避障、高速抓取。但它也有明顯短板。輸出不是傳統(tǒng)圖像幀現(xiàn)有算法和工具鏈不能直接復(fù)用學(xué)習(xí)和調(diào)試成本高。選型時(shí)要非常清醒不要因?yàn)椤胺律甭?tīng)起來(lái)高級(jí)就無(wú)腦上先看你的場(chǎng)景是否真的需要微秒級(jí)響應(yīng)。如果只是普通室內(nèi)移動(dòng)傳統(tǒng)雙目或 RGB-D 往往更實(shí)際。5. 硬件選型、學(xué)習(xí)路線和排錯(cuò)順序5.1 從哪款硬件開(kāi)始比較合適給新手一個(gè)不花錢(qián)走彎路的建議第一個(gè)項(xiàng)目不要追求貴硬件。先用手頭的普通 USB 攝像頭跑通單目視覺(jué) SLAM 或 AprilTag 定位理解成像、內(nèi)參、外參、坐標(biāo)系這些基礎(chǔ)概念。跑通之后再考慮雙目相機(jī)和 RGB-D 相機(jī)。選雙目或 RGB-D 時(shí)看四個(gè)指標(biāo)基線或深度范圍是否覆蓋你的使用距離、輸出分辨率和幀率、是否有官方 SDK 和 ROS 驅(qū)動(dòng)、標(biāo)定工具和文檔是否完整。冷門(mén)硬件便宜但資料少排查問(wèn)題非常痛苦。硬件買(mǎi)回來(lái)先做標(biāo)定和基礎(chǔ)測(cè)試不要直接上算法不然出了問(wèn)題分不清是硬件還是軟件。5.2 學(xué)習(xí)順序五個(gè)方向不要同時(shí)抓SLAM、雙目測(cè)距、人體手勢(shì)檢測(cè)、AR/VR、仿生視覺(jué)這五個(gè)方向不是五個(gè)平行科目而是有依賴(lài)關(guān)系的一條線先學(xué)相機(jī)成像、坐標(biāo)系、內(nèi)參外參這是所有方向的地基。跑通一個(gè)視覺(jué) SLAM 項(xiàng)目理解位姿估計(jì)和建圖。學(xué)習(xí)標(biāo)定和軌跡評(píng)估evo 和 Kalibr 至少會(huì)用。再做人體框和手勢(shì)檢測(cè)體會(huì)感知與交互的鏈路。最后看 AR/VR 追蹤和仿生視覺(jué)這時(shí)候你會(huì)發(fā)現(xiàn)很多東西你已經(jīng)會(huì)了。一個(gè)做 SLAM 機(jī)器人的核心技術(shù)?;揪褪?ROS 加 C 或 Python配上 OpenCV再選擇一個(gè) SLAM 庫(kù)比如 ORB-SLAM、VINS-Fusion 或 cartographer再加上標(biāo)定工具和 evo 評(píng)估。很多項(xiàng)目失敗是因?yàn)橐淮涡源蜷_(kāi)五個(gè)教程每個(gè)都只看了開(kāi)頭。我更建議把第一個(gè)項(xiàng)目做得足夠小、足夠完整比“看過(guò)五個(gè)方向”有用得多。5.3 常見(jiàn)問(wèn)題排查順序做這類(lèi)項(xiàng)目報(bào)錯(cuò)是常態(tài)。遇到問(wèn)題先不要懷疑模型或算法能力不行按下面順序排查程序啟動(dòng)就崩潰先查依賴(lài)版本、OpenCV、CUDA、Eigen 是否匹配再看路徑里有沒(méi)有中文或空格。打開(kāi)相機(jī)沒(méi)畫(huà)面查設(shè)備號(hào)對(duì)不對(duì)、驅(qū)動(dòng)裝沒(méi)裝、當(dāng)前用戶(hù)有沒(méi)有攝像頭權(quán)限。SLAM 建圖漂移查標(biāo)定參數(shù)、IMU 外參、運(yùn)動(dòng)速度是否過(guò)快最后再看算法參數(shù)。手勢(shì)識(shí)別卡頓查分辨率、推理框架、是否同時(shí)開(kāi)了多個(gè)模型不要一上來(lái)就調(diào)模型結(jié)構(gòu)。視差圖出現(xiàn)空洞或噪聲查雙目標(biāo)定是否準(zhǔn)確、左右目曝光是否一致、場(chǎng)景紋理是否太弱。每個(gè)問(wèn)題都要先確認(rèn)現(xiàn)象到底出現(xiàn)在哪一層是輸入層、標(biāo)定層、算法層還是控制層。大部分項(xiàng)目拖時(shí)間不是算法難而是問(wèn)題邊界沒(méi)找準(zhǔn)。6. 關(guān)于視覺(jué)傳感器的幾句實(shí)在經(jīng)驗(yàn)這一類(lèi)項(xiàng)目做多了之后有幾個(gè)經(jīng)驗(yàn)想留在這里。第一技術(shù)棧要成串。SLAM、雙目、手勢(shì)檢測(cè)、AR/VR、仿生視覺(jué)表面上知識(shí)點(diǎn)很多但底層都是“相機(jī)成像加標(biāo)定加位姿或深度估計(jì)加后端優(yōu)化”。很多問(wèn)題在底層是同一個(gè)問(wèn)題。把坐標(biāo)系、內(nèi)參外參、數(shù)據(jù)流這些地基打牢后面換方向只是換應(yīng)用場(chǎng)景不需要全部重學(xué)。第二評(píng)估比跑通重要。很多項(xiàng)目跑通 demo 就算完成真正交付時(shí)才發(fā)現(xiàn)精度、穩(wěn)定性、延遲都不達(dá)標(biāo)。建議從第一天就配一個(gè)量化評(píng)估手段。SLAM 用 evo 看軌跡誤差雙目看視差圖和深度誤差分布手勢(shì)識(shí)別統(tǒng)計(jì)連續(xù)測(cè)試成功率。每個(gè)方向都要有“可測(cè)量的好”而不是“看起來(lái)沒(méi)飄”。第三先軟后硬先小后大。不要一開(kāi)始就買(mǎi)一堆傳感器和開(kāi)發(fā)板。用現(xiàn)有設(shè)備把單鏈路跑通確認(rèn)你的場(chǎng)景真正需要什么數(shù)據(jù)再針對(duì)性補(bǔ)硬件。很多硬件買(mǎi)回來(lái)吃灰是因?yàn)樾枨鬀](méi)有先驗(yàn)證。第四日志要順手寫(xiě)。項(xiàng)目初期就建立記錄習(xí)慣記下每次運(yùn)行的環(huán)境、參數(shù)、結(jié)果截圖和報(bào)錯(cuò)。后期調(diào)參時(shí)這些記錄比記憶可靠得多。特別是 SLAM 這類(lèi)結(jié)果容易波動(dòng)的項(xiàng)目沒(méi)有記錄調(diào)了兩周都可能找不到是哪一步改變了結(jié)果。踩過(guò)幾次之后我發(fā)現(xiàn)很多問(wèn)題不是工具能力不夠而是前置環(huán)境和輸入材料沒(méi)有處理干凈。傳感器標(biāo)定沒(méi)做好、坐標(biāo)系沒(méi)理清、數(shù)據(jù)格式不統(tǒng)一后面所有算法都白費(fèi)。這些活看起來(lái)瑣碎恰恰是最值得花時(shí)間的部分。如果這個(gè)領(lǐng)域剛?cè)腴T(mén)不用焦慮自己還有多少?zèng)]學(xué)。視覺(jué)傳感器的技術(shù)樹(shù)確實(shí)很寬但主線很清晰先把一只眼睛的參數(shù)搞清楚再把定位和建圖跑通剩下的都是這條主線上長(zhǎng)出來(lái)的枝葉。