學習 / 實作

MuJoCo控制調參:最優候選不等於驗證通過

具身智慧 / 探索 · 工程案例

54個開發回合選擇參數,36個留出回合復核位置誤差與穩定完成契約。

進階 · 10 分鐘 · 更新於 2026-10-11 · 步驟 20 / 22

這篇之後,已經有了哪些結果?

保留本文發表時的結論與下一步構想;以下是已發布的後續內容,不代表所有侷限皆已解決。

繼續探索

繼續探索

  1. 工程案例

    MuJoCo失聯策略:零力不等於停止

    27回合比較舊觀測控制、超時置零與衰減,展示觀測超時和物理制動的差別。

    10 分鐘已發布

瀏覽統計暫不可用

本文目錄 6
跳至正文 ↓
從乾淨環境重現 · 本篇固定版本

以下為 Windows PowerShell,Python 3.12。使用新目錄;不要在有未儲存改動的工程裡切換版本。每篇固定提交不同,首篇的舊提交不包含後續實驗。

git clone https://github.com/VirtualSelect/hohoo-embodied-agent.git hohoo-embodied-agent-study
cd hohoo-embodied-agent-study
git checkout 1d1faab57e20b352761e9abc736c6d277b505e6b
python -m venv .venv
$py = '.\.venv\Scripts\python.exe'
& $py -m pip install -r requirements-lock.txt
& $py experiments/planar_reliability/run.py --out outputs/my-run
& $py experiments/planar_reliability/audit.py outputs/my-run

預期得到原始軌跡、摘要與稽核結果。請使用新的輸出目錄,避免覆蓋舊結果;不同實驗對既有目錄的處理並不相同。E8–E10 共用一組實驗入口。以上指令不呼叫模型;先執行數值部分,影片回放依正文單獨執行。

排錯:找不到實驗目錄先核對提交;匯入失敗檢查解譯器與安裝環境;OpenGL 錯誤僅影響需要渲染的步驟。Linux/macOS 將解譯器替換為 .venv/bin/python,尚未在這些平台複測。

查看本篇固定程式碼 ↗

固定程式碼 · 原始證據 · 實驗檔案

上一輪發現EMA能降低位置差分的噪聲,卻可能放大延遲閉環的擺動。直接宣布“濾波不好”並不充分:濾波器改變了動態響應,而控制增益還沿用舊值。本篇把濾波時間常數和PD增益一起掃描,再用沒有參與選擇的種子和條件檢查結果。

這是二維力控執行器的 MuJoCo實際模擬。沒有機械臂、相機、ROS2或真機。位置觀測參與控制,速度真值只用於離線驗收。

為什么不能只找一條漂亮曲線

控制律仍是 F = kp*(目標-觀測位置) - kd*估計速度,每軸限制在±5N。降低kp可能減小過沖,但也可能變慢;改變kd會改變阻尼,也會改變估計噪聲轉成力的幅度;增大EMA時間常數能平滑,卻引入更多滯後。

如果看完所有結果後挑一組成功軌跡展示,讀者不知道這個參數是不是只對那一條噪聲有效。因此協議先凍結選擇規則:只按開發集最後300ms的位置RMS均值選最小者,平分時按kp/kd/tau順序。選擇指標與最終成功條件是兩件事。

18組參數 × 3個開發種子 → 固定選擇規則 → 選中一組
                                       ↓
                     3個新種子 × 6種條件,與舊基線比較

開發集上選中了什么

kp取20/40/80,kd取8/18,tau取20/60/120ms,共18組。開發條件固定80ms觀測延遲、3mm位置噪聲,種子7/19/41,每回合4秒;物理步長2ms、控制周期20ms。

選中結果為 kp=20、kd=8、tau=20ms。原基線是80、18、60ms。這裡是降低增益、縮短平滑的組合結果,不能把全部改善單獨歸功於某一個參數。

更值得保留的是:54個開發回合沒有一個通過完整尾段契約。選擇規則仍能挑出位置RMS更低的候選,但“最佳候選”並不等於“已經成功”。我們沒有因此調整驗收閾值。

留出檢查確實更好,卻仍有邊界

留出種子為73/97/131;條件擴展為0/80ms延遲與0/3/10mm噪聲。每組參數18回合,兩組共36回合。

參數來源 留出回合通過數 尾段位置RMS的跨回合均值
上輪固定基線 3/18 54.70mm
本輪開發集選中參數 7/18 3.61mm

開發參數掃描與留出條件中的位置誤差

這是同一目標族、少量固定種子的對照,不是機器人泛化成功率。即使均值降至3.61mm,也仍有11個回合不滿足完整條件。驗收要求最後300ms每一個物理步同時滿足距離<15mm和速度<0.04m/s,不能用平均位置誤差代替。

控制沒有偷看真值速度,EMA使用觀測的捕獲時間差;延遲佇列只有已到達的樣本能更新控制。獨立審計從CSV重新計算估計速度、控制力和驗收,並在這個無接觸、無阻尼場景下驗證 Δv=F*Δt/m。

這次比較支援什么解釋

結果支援“舊控制器與濾波/延遲組合需要重新匹配”,不支援“kp越小越好”或“20ms適用於任何機器人”。kp/kd/tau是聯合變化,本輪沒有用單變量消融給它們分配貢獻。開發和留出都來自同一個模擬模型,尚未覆蓋質量、執行器誤差、摩擦和更復雜目標。

後兩篇分別改變通信與質量,觀察這組參數的邊界。不會把新條件再次用於選擇後,仍稱它們為“未見條件”。

一個能自己驗證的練習

從 selection.json 找出選中參數,再從 results.json 只篩選 section=tuning 重算18組均值。不得混入holdout結果。接著選一個位置RMS很小卻 success=false 的回合,檢查最後300ms的最大速度;它會教你為什么平均誤差和到達後穩定性不是同一個指標。

若結果不同,先確認鎖定MuJoCo/NumPy版本、2ms物理步長和20ms取樣間隔,再檢查分組與種子。不要先放寬閾值。原始 csv.gz 為無損壓縮,每個物理步都保留,不用平滑後的展示曲線替代驗收。

最小重現與排錯

從干凈檢出目錄運行以下PowerShell命令。輸出目錄必須尚不存在。同組的三篇文章共用一份凍結協議,只需運行一次,再按各篇的證據分組查看。

git clone https://github.com/VirtualSelect/hohoo-embodied-agent.git hohoo-embodied-agent-study
cd hohoo-embodied-agent-study
git checkout 1d1faab57e20b352761e9abc736c6d277b505e6b
python -m venv .venv
$py = '.\.venv\Scripts\python.exe'
& $py -m pip install -r requirements-lock.txt
& $py -m unittest discover -s experiments/planar_reliability -p "test_*.py"
& $py experiments/planar_reliability/run.py --out outputs/reliability-my-run
& $py experiments/planar_reliability/audit.py outputs/reliability-my-run

本機Windows已驗證:Python 3.12.14 + MuJoCo 3.3.7 + NumPy 2.2.6;3項單測、153回合、306000行;獨立審計預期輸出 PASS。其他操作系統未復測。若只想核驗歸檔,不重新實驗,可將審計參數換為 evidence/planar-reliability-20261011。原始碼哈希統一LF,證據哈希按原位元組;不要改寫manifest掩蓋差異。

若導入失敗,先檢查安裝與運行是否使用同一個 $py。失敗輸出保留,重跑時換新目錄。數值按協議容差復核,耗時是本機觀察,不要求重現相同速度。

程式碼與文章由AI輔助整理,結論以歸檔且可審計的實際運行記錄為限。本輪沒有新增付費模型請求,也不代表作者已親手重現或完成人工審校。

寫給未來的自己合上文章前,留下一點自己的理解。

你的私人學習便箋,只存在目前瀏覽器,不會上傳或公開。清理瀏覽器資料會遺失,請匯出留存。三種語言共用這篇文章的便箋。

下一篇已發布內容:MuJoCo失聯策略:零力不等於停止 →

目前學習位置

探索 / 具身智能

  1. ○ MuJoCo 速度估計:濾掉噪聲,也可能讓控制更差
  2. ○ MuJoCo控制調參:最優候選不等於驗證通過
  3. ○ MuJoCo失聯策略:零力不等於停止

繼續探索

繼續探索

  1. 實驗 / 044

    二維控制的調參、失聯與遷移

    153回合、306000物理步;留出集選中控制器7/18通過,失聯置零仍滑行,質量縮放降低均值卻未通過速度契約。

    已完成
  2. 專案 / 003

    Hohoo 具身實驗

    MuJoCo 抓取放置與二維力控兩個教學場景,記錄階段契約、調參、繞障和延遲反饋的實際結果與失敗。

    實驗中

接下來,走哪條路?

依據文章關聯與同主題已發布內容整理,不使用隨機推薦。

← 全部文章