為什麼相機看得準,手臂還是可能放不準?
第一次接觸機器視覺補正的時候,我心裡就有個好奇:「相機畫面如果要和機器手臂的座標對上,那相機畫面與手臂的空間尺寸不就要超級準確?那如果萬一相機又那麼一點不平行,又或是工作距離改變呢?」
在實際工作中盡可能把相機架設好了、光源也穩定了,但是當相機軟體真的把座標丟給手臂時,卻發現某些位置老是抓不準,而這個些微的偏差,還經常總是偏同一個位置?
很多時候,個情況不是相機抓的不夠準,而是「相機的座標」和「機械手臂實際移動的座標」沒有匹配起來
這個偏差如果只是 Demo 時出現,調一調就好。但如果到了量產才發現校正有問題,整條產線都在等你除錯,這時候你如果不知道偏差是從哪一層來的,就只能一個一個環節猜。
上一篇我們談了相機要怎麼看得清楚,這篇我們要開始解決手必要動的準確。

霓可
等等,所以相機明明已經找到產品中心了,手臂還是有可能放不準?
這聽起來有點不合理耶。畫面上不是已經有 X、Y 座標了嗎?難道不能直接把那個座標丟給機械手臂?
還是說……相機看到的世界,跟機械手臂正在用的世界,其實根本不是同一個座標系?
上一篇只解決了「看得清楚」,還沒解決「座標對得起來」
上一篇談的是視覺成像的物理基礎:
- 相機解析度決定每個像素對應的物理尺寸
- 鏡頭的類型會影響成像變形與視野
- 光源會影響邊緣辨識是否穩定
- 軟體補償可以在穩定成像的基礎上提升定位能力
這些只是讓相機「看得清楚」
讓相機看的清楚之後,要讓手臂與能走到正確位置,
下一步要做的就是讓相機座標與手臂座標匹配:

手眼校正真正要解決的,是兩個座標系之間的翻譯問題
相機拍攝出照片後,照片會得到許多可以被 X 與 Y 軸座標分類的像素,如果將每一個像素匹配到真實世界的尺寸,例如一個像素代表 0.1 mm,那這些像素就可以對應到真實世界尺寸與位置。
而手眼校正要做的事情,就是將相機的座標與機械手臂自身的座標匹配,達成一種「相機看到什麼說哪裡,手臂知道去哪裡」的狀態。

霓可
好,這樣我大概懂了。相機看到的是它自己的畫面,機械手臂移動的是它自己的座標。

可是我還是要問清楚一點,手眼校正到底是讓相機知道機械手臂在哪裡,還是讓機械手臂知道相機看到的東西在哪裡?
這兩種講法聽起來很像,但如果現場要除錯,差一點點可能就會害工程師查錯方向吧?
ETHAN
嗯…手眼校正比較接近讓機械手臂知道相機看到的位置在哪裡。反過來說,也有應用是「讓相機追蹤手臂位置」的情境,例如手臂引導相機做多角度拍攝。但在自動化組裝的場景裡,絕大多數的手眼校正都是「相機告訴手臂:東西在哪裡」這個方向。
妳可以想像:
相機在在畫面上標記一個座標 A 點;手臂也移動到該標記並且記錄這個座標叫做A點,這個A點的位置描述很具體,也很容易判斷相機和手臂是不是正確在A點。
而手眼校正要解決的具體問題更像是:
如果相機拍攝後定位 A 點的座標是(x5,y0),於是命令手臂從原點(x5,y0)處走到 A 點,機械手臂知道他需要將 x 軸+5mm,但走到之後真的會是相機認定的(x5,y0)座標嗎?
也因此,手眼校正大多會用類似下列的方法來確保「機械手臂真的是走到 A 點」:
- 機械手臂上固定一個標靶,例如一個十字線或者圓(目的是讓相機能夠保持看見)
- 相機在畫面上記錄標靶目前的位置
- 相機軟體命令機械手臂移動複數指定距離(例如 5 mm)
- 相機在畫面上記錄標靶初始位置與移動後位置座標
- 藉由上述的座標,相機透過機械手臂的移動來取得真實世界的”比例尺”。
上面的流程我會將他稱作九點或者多點校正。
* 補充: 除了上述的方法,也有一種校正方式是只使用相機,然後相機拍攝尺寸精密且固定的”棋盤格”,然後藉由棋盤格固定間格尺寸的特性推算出相機畫面與真實世界的”比例尺”。
九點校正不是按個鈕就好—它解決的是平面座標匹配問題
我們用一個實際的設定畫面來說明九點校正究竟是怎麼一回事,下面是 Keyence CV-X 系列產品機械手臂視覺的校正過程:

( Keyence CV-X 視覺系統的九點校正引導頁面-1 )
在 1 的位置就是整個九點校正的正中心,也就是標靶,其餘 2~9 的位置左上到右下的 8 個校正參考點,九點校正的過程會從 1 出發,以蚊香形狀以固定的間距移動 8 點,並且在每個停留點紀錄當下機械手臂的座標。

( Keyence CV-X 視覺系統的九點校正引導頁面-2 )
Keyence CV-X 的視覺系統經過九點校正後,會如畫面上顯示標靶的移動後結果與座標,而相機的角度、與真實世界的比例尺關係,就會在此時與機械手臂的座標綁定。
九點校正完成後,我在再補充一個”旋轉中心”計算,當相機拍攝標靶進行九點校正時,這個過程是不知道手臂本身旋轉的中心位置的,而旋轉中心計算就是透過R軸旋轉至少三個角度,來計算出R軸圓心的具體位置。

( Keyence CV-X 視覺系統的旋轉中心計算頁面 )

霓可
這個我就有感了。很多 Demo 都是在畫面中間做給你看,產品也放得很漂亮,可是現場真的跑起來,產品不一定每次都乖乖出現在中間,有些還會跑到視野邊緣。

所以九點校正不是因為九這個數字有什麼魔法,而是因為你需要在工作平面上建立足夠多的參考點。
那我是不是可以這樣理解:點位越能代表實際工作範圍,校正結果越有參考價值
ETHAN
九點校正在涵蓋工作範圍的情況下,已經可以校正大部分變形的情況,例如縮放比例不同、座標軸有旋轉或傾斜等,但如果鏡頭本身不均勻的畸變,導致畫面邊緣和中心的變形程度不一致,就建議用更多校正點,若以 Keyence CV-X 作為例子,他的額外選項就是二十五點校正。
一個常見誤解:手眼校正不等於吸嘴中心校正
九點校正談完後,可不代表機械手臂就可以輕鬆抓取目標了。
因為九點校正解決的是”相機座標→手臂座標”的對應,但手臂座標指的是手臂法蘭面的中心(R軸中心),不是你實際用來接觸產品的那個吸嘴或夾爪的尖端中心。
因此,接下來要談談手臂的工具中心點 TCP( Tool Center Point)。
工具中心點 TCP 指的是機械手臂用來抓取目標物的工具中心,白話來說就是機械手臂的吸嘴、夾爪、檢查相機等等工具的位置,之所以有這個特別的坐標點有兩個原因,一是有些情境下機械手臂會有多個工具或是工具,二是工具可能因設計或者加工、組裝誤差,抓取得中心與手臂R軸非同圓心。
所以呢,做完九點校正後,還是得加入一個工具中心點 TCP 的位置進去才可以囉!
補充一點,通常來說在工具中心點的設定上,各家的軟體會有整合好的設定頁面,除了方便進行設定以外,也可以再程式上做快速的切換。


( YAMAHA Robot 的工具中心設定精靈 )
霓可對話

霓可
等等,這裡很重要,我要確認一下。
手眼校正是讓相機座標跟手臂座標對起來;可是吸嘴中心、夾爪中心、旋轉中心,是工具端自己的問題。

所以如果吸嘴裝歪了,或者吸嘴中心跟手臂程式裡設定的工具中心不一樣,就算相機和手臂座標對得很漂亮,實際吸下去還是可能偏?
……好,這就難怪有些設備看起來校正都做了,結果現場還是會吵起來。
校正不是單一動作,而是一串座標關係
總結我們的整個機器視覺校正,可以重新歸納整理成下列的層級關係:
第一層:相機清楚呈現出看到的像素(單位像素與現實的尺寸)
第二層:透過標靶或校正片將像素位置匹配機械手臂動作位置
第三層:將機械手臂工具中心位置正確匹配到工作位置
這三個層級有一步錯了,那校正的位置都會產生偏差,而不同的層級出錯要檢查的方向也不一樣。

霓可
也就是說,校正不是一個按鈕,而是一條路徑。相機先看到像素,接著換算成實際尺寸,再轉成手臂座標,最後還要落到吸嘴或夾爪真正碰到產品的位置。
這條路只要中間有一段翻譯錯,最後看起來就像『視覺對位不準』。但實際上,錯的可能根本不是相機。
校正過程互動模擬
SCARA 手臂九點校正流程模擬
依序操作:拍照 → 九點校正 → 旋轉定位 → 定位抓取。空閒時可拖曳畫面移動手臂。
在廠商要校正前後,可以先留意哪幾件事?
讀到這裡相信你對機器視覺校正原理,也已經有一定程度的了解了,所以我們可以透過下列這些問題,確認校正的過程有沒有忽略到的事情:
校正前
- 外部的光源,在實際生產時會不會受到影響變化?
- 樣品建立的母檔,外觀與尺寸和實際生產時相同嗎?
- 工作平台和實際生產的高度一致嗎?
- 夾爪或吸嘴工具,和實際生產使用相同嗎?
校正後
- 機器視覺和機械手臂校正後產生的配方檔案,是否有留下紀錄保存?
- 校正完成後,是否有在工作範圍的中心和四個角落各取放測試,確認精度一致?
如果你是負責驗收的人,這份清單也可以幫你在廠驗時確認校正有沒有做到位。

霓可
好,所以我下次不能只問『你們有沒有做校正』,這樣問太籠統了。我應該問的是:你在哪個高度校正?校正點有沒有覆蓋工作範圍?有沒有驗證非校正點?
這樣聽起來比較像是在確認條件,不是在找人麻煩。嗯……這種問法我可以接受。
結尾:校正的目的不是讓設備看起來能動,而是讓誤差有地方可以追
好的,回到開頭我們的問題:
「為什麼相機看得準,手臂還是可能放不準?」
因為視覺對位不是只有影像辨識,而是在影像品質穩定後,經過了一整串的座標轉換過程得到的結果。
相機看得清楚,只代表第一步穩定;手臂動得準,還需要相機座標、手臂座標、工具中心都符合條件。
最後一個小小的提醒: 把校正的過程拆解,最重要的目的是將誤差來源分類成可以追蹤的足跡,這樣後續當位置產生偏差,才知道要從哪裡開始檢查起囉!
下一篇,我再來談談如果手眼校正做完了,但位置還是不準,那該判斷是校正錯、機構飄、光源不穩,還是工具中心本來就不對?


