航全鏈路解析:從3D語義建圖到Sim-to-Real域適應(yīng))
說句實在話具身導(dǎo)航Embodied Navigation這兩年幾乎是被“具身智能”四個字硬生生帶火的。很多人一上來就問我有沒有現(xiàn)成的仿真環(huán)境有沒有預(yù)訓(xùn)練權(quán)重能不能直接把模型部署到真機上這些問題看著具體但如果不先把基礎(chǔ)框架、3D語義建圖、路徑規(guī)劃和Sim-to-Real域適應(yīng)這四塊串成一條完整鏈路最后大概率會在真機跑通之前被各種細節(jié)擊穿。這篇博文想把這條完整課程鏈路拆開講清楚適合正在搭導(dǎo)航棧的學(xué)生、想從仿真轉(zhuǎn)真機的工程師也適合所有想用一套方案同時解決“我在哪、周圍是什么、怎么過去、過去之后能不能跑穩(wěn)”這四件事的人。我最初接觸具身導(dǎo)航時也犯過一個典型錯誤把精力全放在路徑規(guī)劃算法上結(jié)果建圖環(huán)節(jié)給不了語義信息規(guī)劃再漂亮也只能做到“能走”做不到“知道往哪里走”。后面陸陸續(xù)續(xù)把基礎(chǔ)框架、3D語義建圖、路徑規(guī)劃、Sim-to-Real四個環(huán)節(jié)全部打通才慢慢理解這門課本質(zhì)上不是教某個算法而是教你怎么搭一套能端到端落地的導(dǎo)航系統(tǒng)。這篇文章就把我踩過的坑和驗證過的做法按課程主線寫出來不是教科書是工程筆記。1. 具身導(dǎo)航的核心鏈路與基礎(chǔ)框架拆解1.1 一條完整的導(dǎo)航鏈路到底長什么樣先給沒有接觸過導(dǎo)航棧的朋友畫個輪廓一個具身導(dǎo)航系統(tǒng)無論你最后做的是掃地機器人、機械臂抓取還是雙足機器人底層邏輯都是同一套循環(huán)——感知、建圖、定位、規(guī)劃、控制。感知環(huán)節(jié)負責(zé)把傳感器數(shù)據(jù)變成可計算的信息比如RGB-D相機給出顏色和深度激光雷達給出稀疏但精確的距離點云建圖環(huán)節(jié)把這些信息組織成空間模型告訴機器人“哪里有墻、哪里有桌子、哪里是可通行區(qū)域”定位環(huán)節(jié)解決“我在哪”常見做法有AMCL、Cartographer、ORB-SLAM這類方案規(guī)劃環(huán)節(jié)根據(jù)地圖、當(dāng)前位置和目標(biāo)點計算出一條路徑控制環(huán)節(jié)再把路徑轉(zhuǎn)成輪子或關(guān)節(jié)的指令。聽起來很清晰但真正的復(fù)雜度在接口和時序上。傳感器頻率、地圖更新頻率、規(guī)劃器計算延遲、執(zhí)行器響應(yīng)延遲任何一個環(huán)節(jié)沒有對齊整個系統(tǒng)就會表現(xiàn)得很“飄”。這也是為什么標(biāo)題里把基礎(chǔ)框架放在最前面——沒有框架兜底后面每個算法都會變成孤島。1.2 基礎(chǔ)框架選型為什么推薦ROS 2 PyTorch 仿真器組合基礎(chǔ)框架沒有銀彈但三個核心工具幾乎是這條技術(shù)路線繞不開的ROS 2負責(zé)進程通信和模塊解耦PyTorch負責(zé)承載神經(jīng)網(wǎng)絡(luò)和訓(xùn)練邏輯仿真器負責(zé)提供可控的驗證環(huán)境。三者組合起來剛好覆蓋感知、決策、訓(xùn)練、測試全流程。ROS 2選它的原因很簡單節(jié)點通信、TF坐標(biāo)樹、bag錄制回放、launch文件統(tǒng)一啟動這些能力讓“換算法”變得低成本。我早期用過純Python手寫通信傳感器頻率一高就丟幀后來切到ROS 2節(jié)點之間的數(shù)據(jù)流用話題綁定調(diào)試時可視化工具直接拉出來看效率完全不是一個量級。PyTorch在這個鏈路里承擔(dān)的角色是語義感知和策略訓(xùn)練。用一個2D檢測模型輸出物體框再結(jié)合深度圖生成語義點云或者用一個策略網(wǎng)絡(luò)直接輸出導(dǎo)航動作。PyTorch生態(tài)在這塊最成熟ONNX導(dǎo)出后又能灌回C部署管線兼容性最省心。仿真器推薦至少掌握兩種Gazebo適合傳感器級仿真Isaac Sim或者MuJoCo適合做策略訓(xùn)練和批量隨機化實驗。選擇標(biāo)準很簡單——想驗證傳感器特性和機械結(jié)構(gòu)用Gazebo想做強化學(xué)習(xí)和Sim-to-Real遷移優(yōu)先Isaac Sim這類支持域隨機化和大批量并行環(huán)境的方案。這里有個容易被忽視的細節(jié)框架不是越多越好。很多人把ROS 2、PyTorch、Isaac Sim、MoveIt、Nav2全裝一遍最后光環(huán)境依賴就折騰半個月。我的建議是先用最小閉環(huán)跑通“仿真采集數(shù)據(jù) → 訓(xùn)練語義模型 → 部署到Nav2路徑規(guī)劃”等到確實需要某個功能時再引入對應(yīng)庫?;A(chǔ)框架的任務(wù)是降低試錯成本不是制造新問題。2. 3D語義建圖的原理與實操要點2.1 從2D柵格到3D語義體素為什么必須帶語義傳統(tǒng)機器人建圖輸出的是占據(jù)柵格地圖機器人只知道哪里能走、哪里是障礙物但不知道“那個白色長方體是冰箱”“那片平地是沙發(fā)腳下”。對只做避障的任務(wù)來說夠用但對具身導(dǎo)航來說遠遠不夠。舉個例子任務(wù)目標(biāo)是“去廚房拿杯子”如果地圖里沒有語義信息機器人只能靠手工設(shè)定的坐標(biāo)點湊數(shù)一旦環(huán)境挪動一張桌子目標(biāo)點就失效了。3D語義建圖要做的事情就是把幾何結(jié)構(gòu)和物體身份疊在同一個空間表示里。常用表示有三種語義八叉樹地圖、語義TSDF、語義神經(jīng)輻射場。三者的取舍很清楚八叉樹地圖內(nèi)存友好適合長走廊和室外場景TSDF在精度和完整性上更好適合機械臂操作和近距離重建神經(jīng)渲染類表示效果最細膩但訓(xùn)練和推理代價高目前還不到量產(chǎn)階段。我實際項目中用最多的是語義八叉樹。做法是把2D語義分割結(jié)果投影到3D點云再用貝葉斯更新方式累加到體素格子里。每個體素存一個概率向量比如“被占據(jù)的概率是0.8屬于桌子類別的概率是0.7”。這樣既保留了幾何邊界也保留了語義置信度后續(xù)規(guī)劃器還能根據(jù)語義做差異化處理。2.2 語義信息從哪來、怎么融合最穩(wěn)很多人以為3D語義建圖最大的難點在3D其實最大的坑在2D分割。2D模型跑出來的結(jié)果有噪聲、有漏檢、有錯檢直接投影到3D后會在空間上形成語義“臟點”。解決這個問題的核心思路是做時序融合和置信度累積而不是單幀決定。一個已驗證的融合策略分三步第一步用Mask R-CNN或YOLO系列模型對RGB圖做實例分割保留置信度大于0.5的目標(biāo)第二步將分割掩碼和深度圖對齊生成語義點云第三步把語義點云投影到八叉樹對應(yīng)體素并做貝葉斯更新——多幀持續(xù)確認的物體才會在體素里保持“高置信度占有高置信度語義”偶爾誤檢的一兩幀會被后續(xù)幀糾正掉。這里要特別提醒RGB和深度的對齊問題比想象中嚴重。就算標(biāo)稱已經(jīng)對齊的TOF深度相機在使用彩色分割結(jié)果做語義標(biāo)簽時邊緣處也會出現(xiàn)物體輪廓“暈開”的情況。應(yīng)對辦法是只保留深度置信度高的像素點同時通過TSDF的截斷距離過濾掉深度跳變劇烈的區(qū)域。2.3 實操中的注意點地圖精度、更新頻率和內(nèi)存3D語義建圖最常見的翻車點有三個坐標(biāo)漂移、動態(tài)物體污染、運行內(nèi)存爆炸。坐標(biāo)漂移主要來自傳感器位姿誤差。如果你用SLAM輸出位姿但SLAM軌跡本身漂了那后續(xù)所有語義點云都會“糊在墻上”。建議在建圖流程前先跑一遍純幾何重建檢查點云配準誤差是否小于5厘米再疊加語義層。動態(tài)物體污染也很頭疼。人在環(huán)境中走來走去如果分割模型沒識別出人這一類這些動態(tài)點就會變成占用區(qū)域?qū)е乱?guī)劃器認為路不通。我的解決方案是在語義類別里強制加入“person”和“未知動態(tài)物體”并在貝葉斯更新時對這兩類做更慢的置信度累積這樣就能避免動態(tài)點短時間內(nèi)鎖死地圖單元。內(nèi)存管理問題則要在設(shè)計時就考慮分辨率。八叉樹在1厘米分辨率下一個大房間可能吃掉幾個GB內(nèi)存建議在全局地圖用5-10厘米分辨率只在感興趣區(qū)域局部使用高分辨率。這個trade-off我在評論區(qū)看到有人質(zhì)疑過但實測下來導(dǎo)航規(guī)劃對3厘米和10厘米的分辨率并不敏感真正敏感的只有機器人自身的碰撞體積用膨脹層就能解決。3. 路徑規(guī)劃從經(jīng)典算法到學(xué)習(xí)式方案的落地選擇3.1 全局規(guī)劃A*和RRT類算法怎么選路徑規(guī)劃任務(wù)聽起來簡單就是從A點到B點找一條無碰撞路徑但實際約束條件多到嚇人車體寬度、轉(zhuǎn)彎半徑、運動學(xué)約束、地圖動態(tài)更新、任務(wù)優(yōu)先級。全局規(guī)劃器一般負責(zé)在靜態(tài)地圖上找粗粒度路徑局部規(guī)劃器負責(zé)在實時傳感器數(shù)據(jù)上繞開動態(tài)障礙。我絕大部分場景都先用A當(dāng)基準。A在柵格地圖上實現(xiàn)簡單、結(jié)果最優(yōu)按啟發(fā)式定義而且代碼量小出現(xiàn)問題容易排查。復(fù)雜環(huán)境里如果機器人是非完整約束比如阿克曼底盤或四輪差速A*出的一條路線可能無法直接執(zhí)行這時候就換RRT家族。RRT隨機采樣天然規(guī)避高維空間建模難題但路徑質(zhì)量通常不夠平滑需要加平滑后處理。一個更實際的問題是很多現(xiàn)成代碼庫里的A*實現(xiàn)只處理占用地形不會處理語義代價。如果你想“離墻遠一點”或者“別從地毯上走”就得自己擴展代價函數(shù)。我在實際項目中把地圖分成三層幾何代價層、語義代價層、歷史經(jīng)驗層最后綜合加權(quán)。這個想法不復(fù)雜但效果立竿見影機器人會主動選擇語義上更合理的路線。3.2 局部規(guī)劃與動態(tài)避障DWA和TEB的實際表現(xiàn)局部規(guī)劃器要解決的是“忽然冒出來一個人”這類動態(tài)場景。常用的DWA動態(tài)窗口法把速度空間離散化對每個速度組合做前向模擬再按朝向目標(biāo)、避障、速度分數(shù)加權(quán)選最優(yōu)。優(yōu)點是計算快、實現(xiàn)簡單缺點是容易陷入局部極值尤其在有大量動態(tài)障礙的環(huán)境。TEB時間彈性帶是另一個常用方案它的思路是把路徑當(dāng)作一條帶時間信息的彈性帶通過優(yōu)化讓整條帶子同時滿足運動學(xué)約束和避障約束。我實測下來TEB在走廊和室內(nèi)環(huán)境中的平滑度比DWA好不少但參數(shù)調(diào)起來也更折騰一個權(quán)重不對就會出現(xiàn)抖動。如果你對“避障同時完成語義引導(dǎo)”有要求需要自己改造代價函數(shù)。例如把語義分割出的“人”和“易碎物品”都標(biāo)記為高代價區(qū)域機器人就不會貼著人走也不會離玻璃展柜太近。這種局部語義避障我在多種機型上都驗證過比純幾何避障的體驗好太多。3.3 關(guān)于拓撲法、覆蓋路徑規(guī)劃和DQN路徑規(guī)劃的一點點澄清網(wǎng)上經(jīng)??吹较嚓P(guān)熱詞這里快速澄清幾個容易混淆的問題?!奥窂揭?guī)劃中的拓撲法是近似單元分解的方法嗎”——不是。拓撲法并不依賴柵格單元分解而是把環(huán)境抽象成由節(jié)點如房間、走廊交叉口和邊連接關(guān)系組成的拓撲圖在圖上做高層規(guī)劃。它和環(huán)境精確幾何尺寸無關(guān)更像是“路線選擇”層的簡化適合大規(guī)模環(huán)境中的粗規(guī)劃但不能直接輸出機器人的精細軌跡?!叭采w路徑規(guī)劃算法”則面向掃地機器人、無人機巡檢、噴漆路徑規(guī)劃這類需求經(jīng)典做法包括牛耕法Boustrophedon、螺旋覆蓋和基于子區(qū)域分解的方式。噴漆路徑規(guī)劃的特殊之處是噴槍距離、噴幅重疊率和姿態(tài)連續(xù)性都要進入代價函數(shù)屬于“覆蓋效率和執(zhí)行可行性”的聯(lián)合優(yōu)化問題?!癉QN路徑規(guī)劃”屬于學(xué)習(xí)式方案近年論文不少但實機部署遠沒有經(jīng)典算法成熟。DQN做軌跡規(guī)劃時狀態(tài)需要包含局部地圖和相對目標(biāo)位置動作空間通常是離散的轉(zhuǎn)向和速度檔位。它在仿真里能收斂遷移到真機時經(jīng)常因為傳感器噪聲分布不同而不穩(wěn)定。如果非要用建議只把DQN限制在局部避障決策層面全局層面仍用經(jīng)典規(guī)劃器兜底。3.4 在3D語義地圖上做規(guī)劃和2D規(guī)劃的本質(zhì)區(qū)別很多導(dǎo)航課程講到規(guī)劃就默認地圖是2D柵格這在具身導(dǎo)航里是一個天然盲區(qū)。有了3D語義地圖后路徑規(guī)劃多了一個“語義可達性”維度。比如機械臂抓取任務(wù)規(guī)劃器不僅要走到柜子前還要知道柜子的抽屜在哪個高度手要伸到哪個語義點雙足機器人在復(fù)雜地形上要根據(jù)腳的落點選擇“踩石頭”還是“繞路”。解決思路是把3D語義地圖壓成多層2D代價圖。最常用的做法是把八叉樹地圖在機器人高度區(qū)間做切片生成2D幾何代價圖再把不同語義類別對應(yīng)的高程、粗糙度、通行難度投影成2D語義代價圖最后按權(quán)重合并交給全局規(guī)劃器使用。這樣既規(guī)避了3D規(guī)劃的高計算量又保留了3D信息的優(yōu)勢。我自己的實踐里會把“桌子底下能否穿過”這類語義規(guī)則直接寫成邏輯判斷如果目標(biāo)語義類別為“椅子”且當(dāng)前高度低于椅子底部就允許通行如果類別是“柜子”即使有縫隙也默認禁止。這個做法比純端到端網(wǎng)絡(luò)穩(wěn)定得多也更容易在真機上調(diào)試。4. Sim-to-Real域適應(yīng)為什么仿真跑得通真機就失效4.1 域差距到底指什么Sim-to-Real的核心矛盾一句話就能說清仿真環(huán)境是用公式和模型逼真地近似物理世界但細節(jié)永遠有偏差。光照反射、材質(zhì)摩擦、傳感器噪聲、電機延遲、機械磨損這些偏差合在一起會讓一個在仿真里得分很高的策略到了真機上變得笨手笨腳。更微妙的是感知偏差和動力學(xué)偏差會疊加。仿真里訓(xùn)練好的語義分割模型搬到真實環(huán)境會因為色調(diào)、紋理、鏡頭畸變導(dǎo)致分割質(zhì)量下降仿真里調(diào)好的運動控制器搬到真實底盤會因為輪胎打滑導(dǎo)致軌跡偏移。最終結(jié)果是策略網(wǎng)絡(luò)看到的輸入分布變了執(zhí)行器響應(yīng)也變了全套崩潰。所以Sim-to-Real域適應(yīng)不是一個“要不要做”的問題而是“怎么做才能把遷移成本降到最低”的問題。4.2 三大主流方向域隨機化、域自適應(yīng)、系統(tǒng)辨識微調(diào)域隨機化Domain Randomization是先用仿真環(huán)境里大量隨機化顏色、光照、紋理、摩擦系數(shù)、質(zhì)量等參數(shù)讓策略學(xué)到“對任何外觀和動力學(xué)都要健壯”的通用策略。核心好處是簡單不需要目標(biāo)域真實數(shù)據(jù)代價是訓(xùn)練難度上升隨機化范圍太小時沒用太大時策略會偏向于“什么都不做最安全”。域自適應(yīng)Domain Adaptation需要少量甚至大量真實數(shù)據(jù)把仿真特征空間和真實特征空間對齊。常用手段包括GAN風(fēng)格遷移、深度特征對齊、CycleGAN等。這個方向的瓶頸在于數(shù)據(jù)采集和對齊模型的額外訓(xùn)練成本但它對感知模型的遷移效果通常比純隨機化更好。系統(tǒng)辨識微調(diào)是工程上最“渣但有用”的方案。先在仿真里把機器人實測的電機響應(yīng)、延遲、摩擦力等關(guān)鍵參數(shù)標(biāo)出來讓仿真盡可能接近真機再在真機上采集少量軌跡數(shù)據(jù)做策略微調(diào)最后用經(jīng)典規(guī)劃器或安全濾波做兜底。整套流程不追求理論漂亮但真機成功率最高。我個人的習(xí)慣是三種方法混合使用。感知部分用域自適應(yīng)讓分割模型能適應(yīng)真實光照策略/控制部分用域隨機化加系統(tǒng)辨識真機部署時再做小數(shù)據(jù)量的微調(diào)和硬約束安全過濾。這種分層處理比“一門心思用端到端RL解決所有問題”靠譜得多。4.3 一套可落地的Sim-to-Real遷移流程以下是我在多臺機器人上驗證過的遷移流程可以直接當(dāng)作作業(yè)抄。第一步仿真建模時先收集真實傳感器的靜態(tài)數(shù)據(jù)。讓真機原地旋轉(zhuǎn)錄制一段bag同時采集仿真器里同樣運動狀態(tài)下的數(shù)據(jù)對比兩者的噪聲分布、點云密度、延遲曲線。這一步能讓仿真器參數(shù)標(biāo)定減少一半工作量。第二步在仿真里做域隨機化訓(xùn)練。隨機化范圍建議從核心物理參數(shù)開始比如摩擦0.2-0.8、質(zhì)量加減20%、電機延遲0-50ms、光照色溫2500K-6500K。每輪訓(xùn)練都要記錄獎勵曲線和成功率曲線如果波動太大就縮小隨機化范圍。第三步把訓(xùn)練好的策略導(dǎo)成ONNX或者TorchScript部署到真機同時保留一個保守的經(jīng)典導(dǎo)航控制器作為安全兜底。真機測試時先用低速、小范圍任務(wù)驗證比如原地轉(zhuǎn)向、直線行走3米再逐步過渡到跨房間導(dǎo)航。第四步記錄真機和仿真中的軌跡、速度、傳感器輸入差異分析哪個維度偏差最大。通常會在摩擦系數(shù)和感知噪聲上差距最大針對性地繼續(xù)迭代仿真參數(shù)。這套流程的核心不是算法本身而是“快速失敗—定位偏差—修仿真—再試”的循環(huán)。Sim-to-Real不是一次訓(xùn)練就能搞定的事它是一個持續(xù)逼近的過程。5. 常見問題排查與實操心得5.1 導(dǎo)航系統(tǒng)癥狀速查表下面是幾個我在實際項目中反復(fù)遇到的問題整理成一個速查表基本覆蓋了新手到中級工程師遇到的大部分狀況?,F(xiàn)象可能原因排查手段機器人建圖后地圖漂移SLAM位姿誤差過大、IMU未標(biāo)定錄制bag檢查軌跡校準IMU降低建圖速度語義物體在移動后仍殘留動態(tài)物體未被過濾、貝葉斯更新參數(shù)不合理加入person類、降低動態(tài)類別置信度累積速度規(guī)劃路徑貼著墻走代價地圖未加膨脹層、語義代價權(quán)重過低在costmap中配置inflation_layer增大語義代價仿真能繞過障礙真機撞上去傳感器噪聲分布差異、控制延遲未建模增加域隨機化范圍真實場景微調(diào)控制參數(shù)算力消耗過大建圖卡頓八叉樹分辨率過高、模型推理未加速降低全局分辨率使用TensorRT/ONNX加速局部規(guī)劃器抖動嚴重TEB參數(shù)沖突、傳感器刷新率不足降低優(yōu)化頻率增加障礙物代價平滑權(quán)重5.2 三個讓工程體驗質(zhì)變的小技巧技巧一一定要保留bag回放和可視化日志。很多問題發(fā)生一次就消失了比如偶發(fā)檢測錯幀、局部規(guī)劃器一次性跳變。如果沒有bag你只能靠猜有了bag你可以在仿真里無限回放、標(biāo)記時間戳、對比每幀輸入輸出。這是我調(diào)試導(dǎo)航系統(tǒng)最依賴的手段。技巧二用語義地圖做“主動感知”。傳統(tǒng)導(dǎo)航是“建一次圖以后都用這張圖”。具身導(dǎo)航完全可以做到機器人先快速建一張低分辨率的幾何圖走到目標(biāo)附近時再啟動3D語義重建和高分辨率局部建圖。這樣既能省算力又能獲得足夠的任務(wù)相關(guān)信息。技巧三給規(guī)劃器加一個“語義規(guī)則過濾器”。不要指望一個端到端網(wǎng)絡(luò)同時理解“這個區(qū)域是床不能穿過去”“這個區(qū)域是廚房可以去”。把這類規(guī)則寫在系統(tǒng)層面比如按語義類別給代價地圖加永久掩膜比讓模型自己學(xué)要穩(wěn)定得多。尤其在真機上規(guī)則過濾是防止策略失控的廉價保險。5.3 關(guān)于算力和部署選型的心得部署場景決定硬件選型。如果只做仿真研究一塊主流顯卡足夠PyTorch直接跑不用碰推理引擎。但一旦要上真機建議把語義分割模型導(dǎo)出成TensorRT或ONNX Runtime格式用專門的推理引擎跑延遲能下降一半以上同時把占有率高的3D建圖模塊挪到獨立進程避免阻塞規(guī)劃主循環(huán)。CPU內(nèi)存和GPU內(nèi)存也要分開規(guī)劃。3D語義地圖和中間結(jié)果存在CPU內(nèi)存語義分割和策略網(wǎng)絡(luò)推理的中間張量存在GPU內(nèi)存。我給自己的約束是CPU占用不超過80%GPU占用不超過70%超出就降低地圖分辨率或輸入圖片分辨率不要讓系統(tǒng)在滿負荷邊緣工作否則一旦遇到突發(fā)事件導(dǎo)航棧根本來不及響應(yīng)。6. 最后再分享一點我的個人體會在具身導(dǎo)航這條路上我最大的體會是最難的從來不是某個算法模型而是把感知、建圖、規(guī)劃、控制、仿真遷移這五個環(huán)節(jié)的接口全部打通。很多人被論文里的漂亮指標(biāo)誤導(dǎo)花大量時間調(diào)一個局部算法卻沒有從系統(tǒng)層面發(fā)現(xiàn)瓶頸可能在傳感器標(biāo)定或者在仿真參數(shù)設(shè)置上。如果你正準備學(xué)這門課我的建議很簡單先耐著性子把ROS 2和PyTorch的基礎(chǔ)框架搭穩(wěn)用公開數(shù)據(jù)集或仿真環(huán)境跑一個最小導(dǎo)航閉環(huán)然后給這個閉環(huán)加上一層語義標(biāo)簽讓機器人能回答“那個物體是什么”再逐步加入路徑規(guī)劃和Sim-to-Real域適應(yīng)。這個順序看起來不夠“炫”但它是目前我驗證過的最少踩坑、最快落地的路徑。如果你已經(jīng)在具身導(dǎo)航的路上我的經(jīng)驗是多準備幾套失敗方案。仿真里成功一次不代表真機成功真機成功一次也不代表換一個環(huán)境還能成功。把每次失敗的原因記錄清楚尤其是傳感器數(shù)據(jù)分布、動力學(xué)參數(shù)、環(huán)境光照這些“不起眼”的因素它們才是Sim-to-Real遷移中真正的主宰者。