視覺系統找到一朵香菇,回報「以相機為基準,位於 (12, −40, 380) mm」。機器人要前往該處,就必須把這個值轉換成以機器人基座為基準的座標。求出這個轉換的作業,就是 Hand-Eye 校正。這個值若差 1 mm,所有夾取都會偏差 1 mm。
四個座標系與轉換
轉換以同時包含位置(3 個)與旋轉(3 個)的 4×4 矩陣表示。三個轉換中有兩個是已知的。
- 基座 → 末端:機器人控制器依關節角度計算,並即時回報。
- 相機 → 物體:由視覺量測。
- 末端 → 相機(X):取決於相機的安裝方式,沒有人知道。求出這個值就是校正。
eye-in-hand 與 eye-to-hand
- eye-in-hand — 相機裝在機器人末端,隨之一起移動。可在多個位置近距離拍攝,有利於大範圍與精細的檢測。要求出的值為末端 → 相機。
- eye-to-hand — 相機固定在工作台上方。機器人移動期間也能持續拍攝。要求出的值為基座 → 相機。
RoboVision 兩種架構皆支援。
AX = XB:為什麼需要多個姿態
將校正板(棋盤格等)固定好,讓機器人以多個姿態移動並拍攝校正板。設兩個姿態之間機器人末端的移動量為 A,同一期間相機所看到校正板的移動為 B,由於兩者是以不同座標觀察同一個剛體運動,因此 AX = XB 成立。未知數 X 具有 6 個自由度,僅靠一組姿態無法求解,需要多個旋轉軸彼此不同的姿態。
求解這個方程式的方法有很多種。RoboVision 提供 OpenCV 全部五種解法(Tsai, Park, Horaud, Andreff, Daniilidis),可用相同資料比較結果。將旋轉與平移分開求解的方法(Tsai、Park)與一次求解的方法(Daniilidis 的對偶四元數等),對雜訊的特性略有不同。
不使用校正板的校正
在現場有時很難放置校正板。fineAi 也使用其他方法。
- 夾爪式校正 — 不用校正板,而是以相機拍攝夾爪本身來校正。在 RoboVision 中得到了 RMS 0.50 mm。
- TCP 點匹配 — 在 eye-to-hand 中,將機器人末端移到多個位置,並以 3D 相機拍攝這些位置,再以 Kabsch 演算法求出讓兩組點集合重疊得最好的旋轉・平移。在末端裝上球體並對準球心,精度會更高。Digital Twin Pick&Place 採用這個方式。
提高精度的訣竅
- 旋轉要大且多樣 — 各姿態之間的旋轉軸必須彼此差異很大。若只做平移,X 的旋轉成分無法妥善決定。
- 姿態要足夠 — 拍攝數量要比最低需求多(10~20 個),以平均掉雜訊。
- 使用整個視野 — 若校正板只拍在畫面中央,鏡頭畸變較大的邊緣誤差就會被隱藏。
- 先做相機內部校正 — 鏡頭畸變與焦距(內部參數)若有誤,Hand-Eye 也會跟著錯。
- 以殘差驗證 — 用結果 X 重新計算各姿態下的校正板位置,查看殘差(RMS)。若只有特定姿態大幅偏離,就去掉該姿態再重新求解。
- 機構變動就重做 — 若碰過相機支架或發生過碰撞,就重新校正。運作期間也會使用自我校正,收集預測位置與實測位置的差異,更新小幅的修正值。