學習 / 實作
具身智能實踐(八):檢測到掉落以後,夾爪應該做什麼?
具身智慧 / 探索 · 工程案例
15回合固定場景對照保持、鬆爪、鬆爪後退:報警相同,退出動作不同,最終放置也不同。
這篇之後,已經有了哪些結果?
保留本文發表時的結論與下一步構想;以下是已發布的後續內容,不代表所有侷限皆已解決。
繼續探索
繼續探索
瀏覽統計暫不可用
本文目錄 7
從乾淨環境重現 · 本篇固定版本
以下為 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 497d0df30c1f66de50fb38b930f0c6ea069d9634
python -m venv .venv
$py = '.\.venv\Scripts\python.exe'
& $py -m pip install -r requirements-lock.txt
& $py experiments/vl01_exit_release_budget/run.py --out outputs/my-run
& $py experiments/vl01_exit_release_budget/audit.py outputs/my-run預期得到原始軌跡、摘要與稽核結果。請使用新的輸出目錄,避免覆蓋舊結果;不同實驗對既有目錄的處理並不相同。E8–E10 共用一組實驗入口。以上指令不呼叫模型;先執行數值部分,影片回放依正文單獨執行。
排錯:找不到實驗目錄先核對提交;匯入失敗檢查解譯器與安裝環境;OpenGL 錯誤僅影響需要渲染的步驟。Linux/macOS 將解譯器替換為 .venv/bin/python,尚未在這些平台複測。
查看本篇固定程式碼 ↗階段契約實驗已經解決了“正常下降被高度規則誤停”的問題,但留下了更實際的失敗:晚下降時正確報警,方塊最後仍同時接觸托盤和兩側手指,沒通過放置驗收。
繼續給監測器加條件無法直接解決它。本輪固定報警規則,只換報警之後的致動器目標,觀察控制鏈路真正發生什麼。
1. 為什麼保持目標不等於靜止或安全
本場景使用位置致動器,控制量是夾爪位置與手指閉合目標。保存最後一個目標,並不意味著關閉物理模擬、清零速度或移除驅動力。
在晚下降鬆爪故障中,故障結束後,保持策略又恢復到報警時保存的閉合目標。手指於是繼續向該目標運動,最後仍碰著方塊。不能把這個結果描述為有意識的重新抓取,更不能稱為硬件急停。
MuJoCo每一步根據模型與控制輸入推進動力學;本輪沒有通過修改 qpos把物體傳送到期望位置。相關介面背景見 MuJoCo模擬文檔。
2. 只改變退出動作
報警仍使用E7的分階段規則:搬運要求雙指接觸、方塊高度大於12cm、夾持距離小於5cm;下降去掉高度要求。異常取樣跨越40ms,或最新觀測年齡達到60ms,鎖存停止。
| 策略 | 報警後下一控制步 | 後續 |
|---|---|---|
hold |
保持所有目標 | 不恢復 |
open |
保持XYZ,手指目標置0 | 保持張開 |
open-retreat |
與open相同 | 200ms後,用600ms平滑將Z目標提高100mm |
三個策略沿用相同初態、2ms物理步長、20ms取樣和故障時刻。五種條件各跑一次,共15回合;運行到12秒,最後0.5秒按位置、高度、速度與無手指接觸驗收。它不是隨機樣本的成功率估計。
3. 完整結果,而不是只挑改善的兩行
| 條件 | 首次報警 | 保持 | 鬆爪 | 鬆爪後退 |
|---|---|---|---|---|
| 無擾動 | 無 | 通過 | 通過 | 通過 |
| 搬運鬆爪4.8–5.04s | 4.842s | 失敗 | 失敗 | 失敗 |
| 早下降鬆爪5.6–5.84s | 5.642s | 通過 | 通過 | 通過 |
| 晚下降鬆爪6.2–6.44s | 6.242s | 失敗 | 通過 | 通過 |
| 下降丟包5.6–5.84s | 5.642s | 失敗 | 通過 | 通過 |
同條件的三策略在報警前物理狀態一致;獨立審計核對了15組策略對。這樣可以把後續差異與退出動作聯系起來,而不是比較三條一開始就不同的軌跡。
4. 兩類“通過”要分別解釋
晚下降保持策略最終接觸集合是 bin_floor|left_pad|right_pad;兩個鬆爪策略只剩 bin_floor,因此通過了無手指接觸這一項。保持時中心高度約25.920mm,鬆爪後約25.980mm;這點高度差本身不是驗收差異的主要依據,接觸分離才是。
下降丟包時,物體在托盤上方,鬆爪讓它落入托盤,終點檢查也通過。這不證明在觀測不可靠時鬆爪是通用安全動作。本場景地形已知,下面恰好有托盤,且沒有易碎物品、人員或夾持力約束。
搬運途中掉落的三個策略全部失敗,方塊落到地面;它們沒有重新抓取、沒有尋找方塊,也沒有把它送回托盤。這個反例限制了結論:改變退出動作可以消除某些殘留接觸,但並沒有解決整個恢復任務。
早下降三者都通過,來自物體掉入托盤;同樣不能將最終落點等同於正確執行了計畫釋放流程。
5. 後退動作有沒有額外收益?
在這五個固定條件中,open和open-retreat的最終驗收相同。不能為了說明更復雜控制器的價值,就稱後退“進一步提升成功率”。它確實改變了夾爪路徑,但是否改善碰撞余量、接觸力或後續任務便利,需要另外的測量。
本輪只在共同報警後比較指定動作,沒有疊加恢復門控或視覺重抓取,也沒有測接觸力峰值。完整任務的退出策略通常需要考慮當前空間位置和可用支撐面,不能只由一個報警布爾值決定。
6. 重現與原始過程
python -m unittest discover -s experiments/vl01_exit_release_budget -p "test_*.py"
python experiments/vl01_exit_release_budget/run.py --out evidence/my-exit-series
python experiments/vl01_exit_release_budget/audit.py evidence/my-exit-series運行命令會執行E8–E10完整32回合。每回合保存壓縮的2ms控制記錄、20ms狀態快照與摘要。環境為Python3.12.14、MuJoCo3.3.7、NumPy2.2.6。審計核對控制目標、取樣投影、狀態坐標、接觸與最終驗收;沒有獨立重算接觸力。
下一篇將“發出鬆爪命令”與“已經完成放置”分開,給釋放後的觀察建立判據。
同方向繼續閱讀
寫給未來的自己合上文章前,留下一點自己的理解。
你的私人學習便箋,只存在目前瀏覽器,不會上傳或公開。清理瀏覽器資料會遺失,請匯出留存。三種語言共用這篇文章的便箋。
下一篇已發布內容:具身智能實踐(九):鬆爪命令成功,不等於放置完成 →
目前學習位置
探索 / 具身智能
- ○ 具身智能實踐(七):搬運規則,為什麼會誤停正常下降?
- ○ 具身智能實踐(八):檢測到掉落以後,夾爪應該做什麼?
- ○ 具身智能實踐(九):鬆爪命令成功,不等於放置完成
繼續探索
繼續探索
接下來,走哪條路?
- 具身智能實踐(七):搬運規則,為什麼會誤停正常下降? →
21回合MuJoCo對照:下降需要自己的抓取契約。用正常誤停、舊包報警與晚下降殘留接觸,拆開監測範圍、停止動作和最終放置。
- 具身智能實踐(十):恢復次數受控了,為什麼任務反而沒完成? →
12回合對照無限恢復、兩次預算與400ms冷卻:分別記錄啟停、驗收窗口、終止原因和最終任務結果。
- 具身智能實踐(九):鬆爪命令成功,不等於放置完成 →
五條真實軌跡同時檢查單幀與持續窗口:錯誤觀測、延遲鬆爪和完成後的外力揭示驗收範圍。
依據文章關聯與同主題已發布內容整理,不使用隨機推薦。