學習 / 實作

具身智能實踐(八):檢測到掉落以後,夾爪應該做什麼?

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

15回合固定場景對照保持、鬆爪、鬆爪後退:報警相同,退出動作不同,最終放置也不同。

進階 · 9 分鐘 · 更新於 2026-10-03 · 步驟 8 / 22

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

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

繼續探索

繼續探索

  1. 工程案例

    具身智能實踐(九):鬆爪命令成功,不等於放置完成

    五條真實軌跡同時檢查單幀與持續窗口:錯誤觀測、延遲鬆爪和完成後的外力揭示驗收範圍。

    9 分鐘已發布

瀏覽統計暫不可用

本文目錄 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。審計核對控制目標、取樣投影、狀態坐標、接觸與最終驗收;沒有獨立重算接觸力。

下一篇將“發出鬆爪命令”與“已經完成放置”分開,給釋放後的觀察建立判據。

同方向繼續閱讀

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

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

下一篇已發布內容:具身智能實踐(九):鬆爪命令成功,不等於放置完成 →

目前學習位置

探索 / 具身智能

  1. ○ 具身智能實踐(七):搬運規則,為什麼會誤停正常下降?
  2. ○ 具身智能實踐(八):檢測到掉落以後,夾爪應該做什麼?
  3. ○ 具身智能實踐(九):鬆爪命令成功,不等於放置完成

繼續探索

繼續探索

  1. 實驗 / 016

    E8 / 報警後的退出動作

    15回合固定場景對照保持、鬆爪、鬆爪後退:報警相同,退出動作不同,最終放置也不同。

    已完成
  2. 專案 / 003

    Hohoo 具身實驗

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

    實驗中
  3. 工程案例

    具身智能實踐(十):恢復次數受控了,為什麼任務反而沒完成?

    12回合對照無限恢復、兩次預算與400ms冷卻:分別記錄啟停、驗收窗口、終止原因和最終任務結果。

    9 分鐘已發布
  4. 工程案例

    具身智能實踐(九):鬆爪命令成功,不等於放置完成

    五條真實軌跡同時檢查單幀與持續窗口:錯誤觀測、延遲鬆爪和完成後的外力揭示驗收範圍。

    9 分鐘已發布

接下來,走哪條路?

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

← 全部文章