上視覺校正

, ,

上視覺  通常是指在機械手臂的末端,額外掛載一台工業相機,就像手臂的眼睛一樣,讓影像拍到目標物的位置後,手臂末端夾具可以準確地移動過去取物,在自動化中是一個很常見的整合應用。但是相機中心與手臂末端並不是在同一個Z軸上,那麼中間的距離該如何精準地計算出來,這就是上視覺校正的目的。而在校正之前,必須要先取得一些參數:

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

角度:影像座標系與手臂座標系(世界座標)相差的夾角。大部分的情況,工業相機是額外掛載在手臂上面,因此影像座標系與手臂座標系之間一定有角度誤差,透過移動後特徵點與移動前特徵點相減算出 與 ,再使用atan2函數將 計算出來即可(如下圖所示)。

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

接下來,把相機以手臂末端為中心旋轉180度(小心不要撞到),平移手臂讓相機拍的到特徵點,並重複上一段的作法使得特徵點移至影像中心,再紀錄手臂位置。這時你所記錄的兩個手臂位置,是以特徵點為中心,手臂末端各在兩側,如右側示意圖。再來只要將兩個手臂位置的x與y分別相加除以2,即可得知影像中心與手臂末端的距離。