R&D
CENTER

Hand-Eye 校正:讓機器人前往相機所看到位置的方法

相機用自己的座標說「在這裡」,而機器人只依自己的座標移動。本篇說明求出兩者之間轉換的 Hand-Eye 校正的概念、程序,以及提高精度的訣竅。

進階5 分鐘0 瀏覽
本課重點
  1. 座標系要區分為機器人基座、機器人末端(法蘭/TCP)、相機、物體四個。
  2. 相機裝在機器人上稱為 eye-in-hand,固定在外部稱為 eye-to-hand,兩者要求出的轉換不同。
  3. 在多個姿態下拍攝基準物,求解 AX = XB 問題以得到轉換 X。解法有 Tsai、Park 等多種。
  4. 讓各姿態之間的旋轉差異夠大,並以殘差(RMS)驗證結果,是精度的關鍵。

視覺系統找到一朵香菇,回報「以相機為基準,位於 (12, −40, 380) mm」。機器人要前往該處,就必須把這個值轉換成以機器人基座為基準的座標。求出這個轉換的作業,就是 Hand-Eye 校正。這個值若差 1 mm,所有夾取都會偏差 1 mm。

四個座標系與轉換

Base機器人基座 Flange機器人末端 Camera相機 Object物體 T_base←flange由機器人提供 X = T_flange←cam由校正求得 T_cam←obj由視覺量測 T_base←obj = T_base←flange · X · T_cam←obj
相機裝在機器人末端的 eye-in-hand 架構。只要知道連接機器人姿態與視覺量測值的 X,就能得到物體的機器人座標。

轉換以同時包含位置(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 採用這個方式。

提高精度的訣竅

  1. 旋轉要大且多樣 — 各姿態之間的旋轉軸必須彼此差異很大。若只做平移,X 的旋轉成分無法妥善決定。
  2. 姿態要足夠 — 拍攝數量要比最低需求多(10~20 個),以平均掉雜訊。
  3. 使用整個視野 — 若校正板只拍在畫面中央,鏡頭畸變較大的邊緣誤差就會被隱藏。
  4. 先做相機內部校正 — 鏡頭畸變與焦距(內部參數)若有誤,Hand-Eye 也會跟著錯。
  5. 以殘差驗證 — 用結果 X 重新計算各姿態下的校正板位置,查看殘差(RMS)。若只有特定姿態大幅偏離,就去掉該姿態再重新求解。
  6. 機構變動就重做 — 若碰過相機支架或發生過碰撞,就重新校正。運作期間也會使用自我校正,收集預測位置與實測位置的差異,更新小幅的修正值。