iT邦幫忙

2026 iThome 鐵人賽

DAY 26
0
AI Engineering

Physical AI 驗證工程:30 天把機器人模擬變成可檢查的證據系列 第 26 篇

Day 26|數位孿生:箱子成功吸起來,為什麼還可能撞到鄰居?

  • 分享至 

  • xImage
  •  

案例 F07:遮擋與載重偏移下的拆棧板

先講清楚邊界:本篇沒有相機或點雲,遮擋是宣告的幾何規則再加 10% 漏失率;吸取則是彈簧—阻尼耦合,沒有真空、洩漏、接觸面積、紙箱變形或吸盤滑移。

拆棧板不只要看得到,也要拿得穩

自動拆棧板常遇到兩個問題:

  1. 上層箱子遮住下層箱子,系統不一定看得到所有候選目標。
  2. 箱內物品分布不均,重心可能偏離箱子幾何中心。

第二個問題很容易被忽略。吸盤貼住頂面中心後,箱子雖然被提起,偏心重力仍會產生力矩,使箱子在吸盤下方傾斜。

箱子傾斜不一定會掉落,卻可能先用下緣掃到旁邊的箱子。因此,本篇不只記錄是否提起,也記錄:

  • 箱子的平衡傾角與峰值傾角。
  • 與側向鄰居的最小間隙。
  • 是否發生鄰箱擦碰。
  • 其餘箱子是否被帶動位移。

本篇刻意不回答「整座棧板會不會倒」

Day 25 驗證的質心判準只處理單一直立柱。真正的棧板常是一個箱子同時壓在多個箱子上,支撐面要由多個接觸區域共同形成。

這是新的幾何問題,不能因為 Day 25 通過就直接套用。

所以本篇把問題縮小成一個目前可以驗證的問題:

被吸起的單一箱子因重心偏移而傾斜時,是否會撞到側向鄰居?

這種縮小不是逃避,而是避免用尚未驗證的判準產生看似完整的結論。

先用力矩平衡預測傾角

假設吸盤貼在箱子頂面中心,箱子的重心水平偏移 d,質量為 m,吸取機構的等效角剛度為 kr。

最簡單的一階估算是:

θ ≈ m × g × d / kr

但箱子傾斜後,重力的有效槓桿臂會縮短。加入箱體半高 h 後,平衡式為:

m × g × (d × cosθ − h × sinθ) = kr × θ

本案例箱體半高為 75 mm。當重心偏移 60 mm 時,修正式預測平衡傾角約 5.05°,約為一階估算 5.62° 的 0.89 倍。

這個解析預測非常重要,因為它讓我們在跑模擬前就知道傾角應該落在哪個量級。若模擬結果永遠是 0°,不應立刻解讀成吸盤非常穩,而要先懷疑力矩是否真的被施加。

第一個無聲錯誤:力施加在質心,偏心卻沒有力矩

第一次先導的所有傾角都是 0.00°。

原因是 PhysxForceAPI 的力施加在質心,重力也通過質心。兩個力的作用線經過同一點,自然不會產生使箱子傾斜的力矩。

真實吸盤貼在頂面中心,不是在質心。程式必須明確算出吸附點到質心的偏移向量,再加入 r × F 的力矩。

這個錯誤不會讓程式中止,畫面也非常平穩。如果沒有事前推導,0° 很容易被誤認為成功結果。

第二個無聲錯誤:矩陣裡混著縮放,不是純旋轉

補上力矩後,傾角終於出現,卻只有預測值的約四分之一,而且比例隨姿態改變。

問題出在世界轉換矩陣的左上角並不是純旋轉 R,而是旋轉與縮放的乘積 R × S。若直接把它送進旋轉角計算,量到的角度會被箱體縮放扭曲;角彈簧的回復力矩也跟著算錯。

將每一欄正規化、先移除縮放後,預測與實測傾角的相關係數提高到 +0.9998,實測與預測的比值落在 0.870–0.938,與槓桿臂修正預期的約 0.89 一致。

這是很實用的 3D 工程提醒:從 4×4 轉換矩陣取旋轉前,要先確認矩陣中是否還混著縮放或剪切。

第三個無聲錯誤:2 mm 間隙等於不准箱子傾斜

機構修正後,最初設定 2 mm 名目間隙,八個先導 seed 全部發生碰撞。

箱體半高為 75 mm。當箱子傾斜 θ 時,下緣向外伸出的距離約為:

外伸距離 ≈ 75 mm × sinθ

如果峰值傾角接近 9.8°,下緣外伸約 12.8 mm。2 mm 間隙當然不夠。

因此,本案例不是先隨意挑一個間隙,再看能不能過,而是從傾角預算反推:

所需間隙 ≥ 箱體半高 × sin(峰值傾角)

最後採用 20 mm 名目間隙。這不是實測棧板標準,而是本模型依傾角上界導出的設計值。

第四個無聲錯誤:正下方的支撐箱不是側向碰撞

間隙放大後,程式仍記錄許多擦碰,甚至傾角只有 1° 的案例也失敗。

追查後發現,碰撞統計把目標箱正下方、原本支撐它的箱子也算成鄰居。剛開始提起時兩者接觸距離當然是 0,因此每個 seed 都至少被記一次碰撞。

修正方式是用水平距離區分:正下方支撐箱與目標箱位於同一格;側向鄰居則至少相隔一個棧板節距。

這個案例再次說明,量測定義本身也是系統的一部分。程式忠實回報「距離為零」,不代表我們問的是正確問題。

正式結果:30/30 通過,但通過的是一條設計規則

指標 正式結果 鎖定門檻 判定
拆棧成功率 1.000(30/30) ≥ 0.90 通過
鄰箱擦碰事件 0 ≤ 0 通過
其餘堆疊最大位移 0.000177 mm ≤ 20 mm 通過
平衡傾角 最大 6.2° ≤ 15° 通過
峰值傾角 最大 9.6° 僅記錄 —
側向鄰居最小間隙 8.49 mm 僅記錄 —
最小提起高度 約 50.0 mm 僅記錄 —
重複試驗 30/30 — 通過
數值收斂 通過 — 通過

30 個 seed 全部完成提起,沒有鄰箱擦碰。平衡傾角介於 0.90–6.20°,峰值介於 2.10–9.60°;閉式預測與平衡傾角的相關係數為 +0.9998。

但這個結果不應寫成「拆棧板很安全」。更準確的說法是:

在剛體箱、等效吸附機構與依傾角預算導出的 20 mm 間隙下,重心偏移與宣告的遮擋規則沒有造成本組 30 個 seed 失敗。

如果把間隙改回 2 mm,先導試驗立即變成 0/8。本篇真正驗到的是「先估傾角,再決定間隙」這條設計規則,不是一個可以外推到所有棧板的成功率。

遮擋在這裡只是選擇規則,不是感知驗證

場景共有 12 個箱子,包含上層、可見、遮擋與隨機漏失的候選物件。遮擋由幾何規則宣告,再加入 10% 漏失率,沒有相機、點雲、反光、透明包膜或感測器雜訊模型。

因此,本篇只能檢查:在感知結果已由規則給定後,選擇與提起流程如何運作。

它不能支持「視覺系統能在遮擋下正確辨識箱子」,也不能用 30/30 當成實體拆棧良率。

這篇可以支持到哪裡?

可以支持的結論:在指定剛體箱、等效角剛度、重心偏移與 20 mm 名目間隙下,解析力矩模型能高度預測平衡傾角;30 個 seed 沒有鄰箱擦碰,且主要門檻通過。

不能支持的結論:

  • 沒有相機與點雲,不能驗證遮擋下的感知能力。
  • 沒有真空、洩漏、接觸面積與滑移,不能回答箱子是否真的吸得住。
  • 箱子不會變形,無法模擬紙箱凹陷造成的漏氣與姿態改變。
  • 20 mm 間隙是由模型傾角預算導出,不是實測棧板規格。
  • 每個 seed 只取一個箱子,沒有連續拆完整座棧板。
  • 不涵蓋多支撐穩定性,不能回答拿走一個後整座棧板是否會倒。
  • 本結果不構成實體設備節拍、良率或安全性的保證。

今天帶走三件事

  1. 箱子被吸起來,不代表它不會因重心偏移而傾斜。
  2. 安全間隙應從峰值傾角與箱體尺寸反推,不應先憑直覺指定。
  3. 力作用點、轉換矩陣與碰撞對象定義錯誤,都可能產生合理但錯誤的數字。

若系列後續延伸,可接到雙機械臂零件交接:單臂成功到達交接點還不夠,兩支手臂進入共用空間後,還要同時處理工具間隙、到達順序與交接失敗時的退回策略。


上一篇
Day 25|數位孿生:質心落在支撐範圍內,箱子就一定不會倒嗎?
下一篇
Day 27|數位孿生:兩支手臂交接,為什麼終點不可能是同一個點?
系列文
Physical AI 驗證工程:30 天把機器人模擬變成可檢查的證據 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言