下視覺校正

2.jpg

下視覺 通常是裝設在手臂外部附近,且固定不動的工業相機。當手臂夾取目標物後,移置下視覺作定位,取得目標物在手臂上的正確位置,再精準擺放到想要的地方。而在定位時,大多是以影像中心做為參考點,因此校正目的是要取得下視覺影像中心在手臂座標(世界座標)的位置,而在校正之前,必須要先取得一些參數:

Scale:影像像素與實際距離的轉換。也就是影像中的每一個像素在真實世界中所佔的距離。計算的方法非常簡單,先用手臂夾取一個校正點,移動至下視覺畫面內並記錄此點座標,接著單獨移動手臂x軸或y軸(只能移動一軸),再紀錄移動後特徵點的影像座標,接著 (手臂移動的距離) / (兩個座標的直線距離) = Scale。換句話說,假如計算出的Scale為0.1,手臂移動單位為mm,那麼之後影像中的兩個物件座標如果相差100個像素,乘上Scale就可得知兩個物件實際上相差了10mm。

角度:影像座標系與手臂座標系(世界座標)相差的夾角。下視覺大部分是額外裝在手臂附近,因此影像座標系與手臂座標系之間一定有角度誤差,透過移動後特徵點與移動前特徵點相減算出∆X與∆Y,再使用atan2函數將θ計算出來即可(如下圖所示)。

1.png


有了上述兩個參數後,就可以開始進行下視覺校正的工作了。首先,將影像裡的特徵點座標(x ,y )減掉影像中心座標 (如果是2590*1942的工業相機,影像中心座標為1295, 971,以此類推),再乘上Scale,計算結果就是特徵點與下視覺影像中心的真實距離。但是這個計算結果是位於影像坐標系上,而影像座標系與手臂座標系之間有角度差,因此算出的真實距離必須再乘上旋轉矩陣公式,才是手臂真正該移動的真實距離。如果到這邊計算沒有錯誤的話,用手臂移動剛剛計算出的距離後擷取影像,就會發現特徵點會在影像的正中心,再把當下手臂的位置記錄下來。

接下來,將手臂U軸旋轉180度,再拍一次特徵點,並重複上一段的作法使得特徵點移至影像中心,再紀錄手臂位置。這時你所記錄的兩個手臂位置,是以特徵點為中心,手臂末端各在兩側。再來只要將兩個手臂位置的x與y分別相加除以2,即可得知影像中心在世界座標的位置。