TCP 是工具尖端相對機器人法蘭(Tool0)的偏移向量;Pivot 是這顆尖端在世界坐標系中的實體空間位置。 4 點校正法利用「尖端始終頂在同一固定點」的幾何約束,在完全不知道兩者座標的情況下,同時將兩者精確解算出來!
1. TCP 是什麼、為什麼一定要校正?
很多剛接觸六軸機器人的工程師常問:機器人出廠時第六軸法蘭中心點(tool0)的運動學已經很準了,為什麼我們裝上夾爪、焊槍或點膠針頭後,一定要大費周章做工具中心點(TCP, Tool Center Point)校正?
答案很簡單:控制器只知道法蘭在哪裡,但現場真正跟工件接觸的是你的工具尖端。
如果你在 RAPID 程式裡宣告 tooldata 為零偏移(即預設 tool0),當機器人保持固定姿態做純平移移動時,你看起來一切正常;但只要手臂一旦旋轉姿態(例如傾斜 45° 去焊一個斜角、或是視覺鏡頭轉換角度取像):
- 有設準 TCP:機器人會以「工具尖端」為球心原地自轉,尖端位置絲毫不動。
- 沒設 TCP(誤用法蘭):機器人會以「法蘭中心」為球心自轉,導致懸在 200 mm 外的工具尖端在空間中劃出一個巨大的圓弧,直接撞壞工件或治具!
換句話說:姿態一換,位置誤差就跟著被槓桿放大。 校正 TCP 的目的,就是找出工具尖端相對於第六軸法蘭的 3D 偏移向量 t = [tx, ty, tz]ᵀ。
2. Pivot 支點是什麼?幾何直覺
想像你手裡握著一枝原子筆,把筆尖頂在桌面上的一顆小凹洞上。這時你的手腕可以往左偏、往右仰、抬高、壓低,做出各種角度的旋轉與傾斜,但**筆尖始終死死頂在同一個點上**。
這個桌面上固定不動的小點,在機器人學中就叫做 Pivot(支點)。
在校正過程中,我們在工作台上放置一個尖錐固定不動(Pivot 點 c)。操作者手動微動機器人,以 4 個截然不同、朝向各異的手臂姿態,讓工具尖端精確頂在同一個尖錐頂點上:
▲ 圖 1:4 姿態 Pivot 支點校正幾何原理。四個姿態的法蘭位置(p₁~p₄)與旋轉矩陣(R₁~R₄)各自不同,但經由未知工具向量 t 延伸後,全部在空間中交會於同一個未知的 Pivot 點 c。
3. 核心數學推導:為什麼同時解出兩個未知?
很多人的第一反應是:「如果我不知道桌上的 Pivot 尖錐在哪裡(c 未知),又不知道工具長度(t 未知),兩個都不知道怎麼可能解得出來?」
這正是線性代數最美妙的地方。讓我們看第 i 個姿態的空間幾何關係:
數學式: p_i + R_i · t = c
白話解釋這條式子:「從機器人基座出發,走到第 i 號法蘭位置(p_i),再依照法蘭目前的朝向(R_i)沿著工具本體走向量 t,抵達的終點必然就是桌面上的尖錐點(c)。」
我們將未知數移到同一側,已知數移到另一側:
改寫成分塊矩陣形式:
[ I | -R_i ] · [ c ] = p_i
[ t ]
其中 I 是 3×3 單位矩陣,R_i 是 3×3 旋轉矩陣,c 是 3×1 支點座標,t 是 3×1 TCP 偏移向量。
未知數與方程式數量分析:
- 未知數共有 6 個:
c = [cx, cy, cz]ᵀ(3 個)+t = [tx, ty, tz]ᵀ(3 個)。 - 每個姿態提供 3 條方程式(X、Y、Z 三軸分量)。
- 教 1 個姿態:3 條方程解 6 個未知數 ➔ 無限多組解(解不出來)。
- 教 2 個姿態:6 條方程解 6 個未知數 ➔ 理論可解,但無冗餘容錯能力。
- 教 4 個姿態:12 條方程式解 6 個未知數 ➔ 構成超定方程組(Overdetermined System)!
將 4 個姿態垂直堆疊起來,形成 12×6 的大型矩陣方程:
┌ I -R_1 ┐ ┌ p_1 ┐
│ I -R_2 │ ┌ c ┐ │ p_2 │
│ I -R_3 │ │ │ =│ p_3 │
└ I -R_4 ┘ └ t ┘ └ p_4 ┘
(12×6) (6×1) (12×1)
透過最小平方法(Least Squares Method)的正規方程(Normal Equation):
一瞬間,向量 x 裡的 c(世界座標支點)與 t(TCP 偏移量)就同時被精確解算出來了! 這就是為什麼你根本不需要量具量測尖錐的絕對座標。
4. 姿態張角與條件數(Condition Number)
既然數學上 4 個姿態就能解,那隨便教 4 個點都可以嗎?絕對不行!
如果你的 4 個姿態彼此長得很像(例如工具都朝下,只微微偏轉了 2 度),在幾何上這 4 條射線的交角極小,矩陣 A 裡的行向量高度線性相關,(AᵀA) 的行列式將極度接近 0。
在數值分析中,這會造成條件數(Condition Number)暴增:
條件數代表「輸入雜訊被放大的倍率」。若條件數是
10,教點時手抖的 0.05 mm 誤差只會放大成 0.5 mm;但若條件數高達 1,000,000,手抖 0.01 mm 就會被放大成 10 公尺的荒謬 TCP!
為了確保校正結果在工業現場絕對穩定,解算演算法必須內建嚴格的 5 道檢查門檻:
| 診斷檢查項目 | 系統門檻標準 | 未達標代表的物理問題 |
|---|---|---|
| 1. 姿態數量 | ≥ 4 組 |
點數不足,無足夠自由度進行最小平方殘差收斂與容錯。 |
| 2. 姿態最大夾角 | ≥ 10°(建議 ≥ 45°) |
姿態過於單一,射線交角太小,Z 軸方向深度無法約束。 |
| 3. 條件數 (Condition Number) | ≤ 1 × 10⁶ |
矩陣接近奇異,數值求解將極度放大手動示教雜訊。 |
| 4. 平均殘差 (Mean Residual) | ≤ 2.0 mm |
教點時尖端未確實對準同一實體尖錐,幾何未封閉。 |
| 5. 單點最大殘差 (Max Residual) | ≤ 5.0 mm |
其中某個教點發生嚴重人為失誤或記錄錯誤。 |
5. 實測數據怎麼讀?真實案例解析
以下為本專案在實機環境中,對同一顆視覺治具工具進行兩次獨立 4 點 Pivot 校正的真實診斷數據:
| 評估項目 | 第 1 次校正結果 | 第 2 次校正結果 |
|---|---|---|
| 解算狀態 | ✅ 4/4 姿態成功收斂 | ✅ 4/4 姿態成功收斂 |
| 計算出的 TCP (mm) | (-13.341, -29.793, 187.157) |
(-13.347, -29.781, 187.107) |
| 計算出的 Pivot (mm) | (628.555, -235.572, 316.210) |
(628.550, -235.566, 316.233) |
| 平均殘差 / 最大殘差 | 0.071 mm / 0.107 mm | 0.084 mm / 0.112 mm |
| 姿態分佈診斷 | 姿態最大夾角 81.332°,條件數 4.612(幾何張角極佳) | |
數據深度剖析:
- 極佳的幾何姿態(Angle = 81.332°, Condition Number = 4.612):姿態夾角超過 80°,條件數只有 4.6 左右,代表 4 個姿態在空間中展開得非常漂亮,矩陣體質極度健康。
- 極高的重複性(Repeatability):
- 兩次 TCP 向量相差:
ΔX = 0.006 mm、ΔY = 0.012 mm、ΔZ = 0.050 mm,綜合空間重合度小於 0.05 mm! - 兩次 Pivot 空間支點相差不到 0.03 mm!
- 兩次 TCP 向量相差:
- 殘差極低(0.071 ~ 0.084 mm):遠低於 2.0 mm 的管制上限,證明手動對點的物理重合度極高。
6. 實務陷阱一:輸入必須是法蘭位置(50050 警報事件)
這是自動化整合中最經典、也最隱蔽的「世紀大坑」。
在雙相機視覺與 ABB 機器人通訊架構中,上位機透過 PC SDK 讀取機器人位置時呼叫了
ActiveMechanicalUnit.GetPosition()。工程師誤以為這個 API 回傳的是「法蘭(tool0)」座標,但實際上它回傳的是「控制器目前作用中工具」的尖端座標!
當時機器人控制器裡正掛著一組先前的移動用工具,其內部被誤寫入了一筆長達約 1 公尺的 TCP:(998.99, 0.18, 123.25)。
引發的連鎖災難反應:
- 教點時存下的 4 個位置
p_i,全部都是這支「1 公尺假工具」的尖端座標,而不是真正的第六軸法蘭。 - 演算法帶入計算後,解算出來的不是真正的 TCP,而是「真 TCP − 目前假工具」的差值向量:
(-1012.358, -29.720, 64.123)。 - 程式將這個錯誤結果寫回機器人工具檔後,當控制器執行下一動指令將工具尖端送到待命點(Standby),控制器為了把這支「負 1 米」的畸形工具送到位,被迫將手臂法蘭一路往外伸展到距離基座 2550 mm(原本僅需 1565 mm)!
- 機器人第 2 軸與第 3 軸瞬間觸碰硬體極限,控制櫃直接跳出 ABB 50050「位置超出範圍 (Position outside reach)」致命報警停機!
事後我們用數學將差值回算:(-1012.358 + 998.99, -29.720 + 0.18, 64.123 + 123.25) = (-13.368, -29.540, 187.373),與真正修正後的實機結果 (-13.34, -29.79, 187.16) 完全吻合。
- 工具歸零分離:執行 TCP 校正時,機器人端的作用中工具必須強制固定為
tool0(即[0, 0, 0])。 - 資料獨立儲存:校正解算出的新 TCP 必須寫入專用的結果變數(如
VisionToolResult),不與移動工具共用。 - 上位機強制防呆檢查:解算程式在啟動前先檢查讀回的工具參數,若非
[0, 0, 0]則直接拒絕執行校正!
7. 實務陷阱二:殘差小不等於準(繞尖錐重定位驗證)
很多工程師看到殘差只有 0.07 mm 就高高興興簽收結案,這是一個非常危險的觀念盲區。
「殘差小」只代表數學擬合度高(這 4 個點彼此吻合);「兩次校正結果一致」只代表重複性好。這兩者都「不等於 TCP 真的準確對在真實刀尖上」!
舉例來說:如果視覺系統在校正取像時,雙相機的 Z 軸存在約 2 mm 的系統性分歧,或是操作者每次示教都因為視差偏移了同一個方向,那麼數學解算出來的殘差依然會漂亮得像教科書一樣,但實際的 TCP 卻整體偏差了數毫米!
🛠️ 現場唯一真實驗證法:繞尖錐重定位測試 5 步驟
- 選定工具:在 FlexPendant 示教器上選擇剛校正完成的待驗證工具(如
VisionToolResult)。 - 設定微動模式:微動動作選擇「重定位 (Reorient)」,坐標系選擇「工具 (Tool)」。
- 對準尖錐頂點:先用線性微動,將工具尖端精確貼在工作台固定尖錐頂點上。
- 大角度純姿態旋轉:推動搖桿,只旋轉姿態不作平移,旋轉幅度由 ±10° 逐漸加大到 ±45° 以上。
- 肉眼與量表判斷:
- TCP 準確:不論手臂如何大角度扭轉,工具尖端會像被磁鐵吸住一樣,死死釘在尖錐頂點上原地自轉(偏差 ≤ 自訂允收公差,如 0.2 mm 或 0.5 mm)。
- TCP 錯誤:手臂一轉動,尖端立刻偏離尖錐並在空中劃出弧線。
撰文時本專案之「繞尖錐重定位驗證 SOP」與軟體架構已全數就緒,但尚未在產線實機環境跑出千分錶量化的重定位偏移數據。因此,本文前述兩次校正結果已完全證明了「高度重複性與優異的數值擬合度」,但尚未完成絕對精度的最終量化閉環。待實機量測數據出爐後,將再發布一篇實測報告與大家分享。
8. 核心重點快速對照表
| 專業名詞 | 一句話白話定義 | 所屬坐標系 | 如何正確取得 |
|---|---|---|---|
| Tool0(法蘭) | 機器人第六軸安裝法蘭中心點 | 機器人底座 / Base | 手臂出廠幾何原生內建 |
| TCP (t) | 工具尖端相對於法蘭的 3D 偏移向量 | 工具坐標系(相對法蘭) | 4 點 Pivot 最小平方法解算 |
| Pivot (c) | 校正時桌面尖錐頂點的空間實體位置 | 大地坐標系 (World/Base) | 解算 TCP 時由矩陣聯立求出 |
| 條件數 | 矩陣抗雜訊能力的健康指標 | 無因次純量 (Ratio) | 由姿態矩陣奇異值分解計算 |
| 殘差 (Residual) | 各姿態尖端延伸後與 Pivot 的幾何擬合誤差 | 長度單位 (mm) | 方程式幾何回代計算範數 |
9. 常見問題解答 (FAQ)
3 個姿態剛好產生 9 條線性方程式來解 6 個未知數(TCP 3 個分量 + Pivot 3 個分量),屬於剛好有冗餘。但若只有 3 點,只要其中 1 點有手動對位微小雜訊,就沒有多餘的自由度進行最小平方殘差統計與可靠度驗證;第 4 點提供了超定方程組關鍵的容錯與殘差評估依據。
因為矩陣 A 中的旋轉矩陣差值 (I - R_i) 太接近零,造成矩陣的條件數(Condition Number)暴增到數十萬甚至數百萬,矩陣接近奇異。此時現場手動對點的 0.1 mm 微小視覺或機械雜訊,會在數值反矩陣計算中被放大幾千倍,算出幾百公分荒謬的 TCP。
不一定。殘差小只代表這 4 個教導點彼此在幾何球面上擬合得很漂亮(內部一致性良好)。若教點時尖端根本沒有真正頂在同一實體點(例如視覺視差導致系統性偏移 2 mm),殘差依然可以非常小,但算出來的 TCP 是帶有系統誤差的,必須透過實機繞尖錐重定位測試驗證。