吳 玉, 董超群, 陳嘉杰, 董俊杰, 溫 浩, 段星光
(1.中廣核研究院有限公司, 深圳 518000; 2.北京理工大學機電學院, 北京 100081)
近年來機器人在核電行業的應用越來越多,尤其是利用密閉蒸汽發生器進行堵板操作,如利用人工進行堵板操作,其成本高,效率低,且工人的生命安全難以得到保障。
機器視覺在各行業都有著廣泛的應用。王陽等[1-2]根據核桃不同視圖,利用矩陣乘積方式將待測核桃樣本與兩個模型分別進行對比,以此對核桃進行分類。他們還采用R分量占比統計法、橢圓近似法、橢圓切割法對蝦體生命狀態、尺寸及殘缺度進行檢測。鄭永榮等[3]采用檢測偏移距離的算法來定位目標。馬向華等[4]基于機器人操作系統(ROS),結合手眼的七軸機械臂目標抓取方法,在ROS框架下利用協作機器人FRANKA PANDA結合RGBD攝像頭進行目標抓取。王娟等[5]提出采用最小外接矩形擬合法求解芯片各個焊點和引線框架實際位置,實時校正在芯片引線鍵合工藝中由于貼片和裝夾產生的位置誤差。朱永豐等[6]提出了一種魯棒性強、定位精度高、速度更快的視覺定位算法。程金等[7]采用視覺系統無接觸測量的方法,簡便、可靠、高效的定位活塞環槽位置。羅鈳[8]分析了幾種邊緣檢測算子,其中Canny算子是目前比較流行的算法,它可由高斯函數的一階導數獲得,計算簡單,可靠性非常的高,錯誤率低,可精準捕獲邊緣,噪聲的干擾不會產生假邊緣。邱明勇等[9]提出一種基于視覺識別的工件定位方法,在相機標定后,通過對識別特征建模,計算出加工區域特征點相對機床零點的位置。譚佳祺等[10]提出一種無人機充電平臺的精準降落視覺定位方案。
針對蒸汽發生器的特殊核輻射環境,現如今還沒有一種有效的視覺定位算法,為此,基于特定蒸汽發生器的環境,提出一種基于Halcon的定位識別算法的螺栓定位算法,利用灰度值進行圖像閾值分割,利用圓形曲線算法得到圓幾何中心,通過螺栓實驗和精度實驗驗證了圖像識別和螺栓緊固的過程,以期降低螺栓緊固的定位誤差實現智能化無人操作。
整個螺栓定位算法的流程如圖1所示。首先分割出螺栓所在區域,然后在螺栓所在區域找到螺栓。目標定位過程的核心是決策算法的研究。

圖1 螺栓定位算法流程圖Fig.1 The mechanical dimensions
圖像采集與處理系統的目標是獲取圖像并提取螺栓圓心的坐標值。由于擰螺栓裝置的特殊性,識別圓形比識別六角更有效。因為圓形的識別精度高于別的圖形。由于核輻射的工作環境復雜,在使用相機獲取實時螺栓圖像時,光照、曝光不均等因素會給圖像帶來噪聲。如果不去除噪聲,不進行圖像分割、圖像增強、圖像分析和判斷都會受到影響。因此采用以下過程來實現圖像識別,得到中心坐標值:
(1)通過CCD相機采集原始圖像,放大圖像,將螺栓位置設置為感興趣區域。
(2)將感興趣區域轉換成灰度圖。進行圖像識別。
(3)通過高斯濾波,上下采樣濾除圖像噪聲。
(4)基于圖像灰度圖,設置感興趣區域的閾值,自動進行閾值分割。
(5)對進行閾值分割后的區域,進形平滑填充,使圓更加圓滑完整。
(6)利用CANNY算法對進形平滑填充后的區域進形輪廓的提取。
(7)通過對圓形的幾何計算,得到圓形的中心值。
圖像識別的目的是獲取螺栓的中心坐標值。通過以上步驟,可以得到中心值。
圖2展示了整個自主定位算法的詳細步驟;采集到圖像后,預處理操作就是對圖像進行灰度化,圖像灰度化是自主定位算法的基礎;灰度化以后圖像自身的噪聲會對自主定位精度產生極大影響,所以需要對圖像進行濾波去噪,最多的噪聲為高斯噪聲,所以選擇高斯函數進行圖像濾波;接著結合灰度圖,進行圖像的閾值分割,閾值分割的目的就是將螺栓上表面與背景分離;分離后進行提高精度的處理,也就是平滑填充,填充的目的就是將螺栓上表面盡可能完整地分離出來;最后利用算法得到輪廓并定位圓心。

圖2 定位算法的流程Fig.2 The flow of the positioning algorithm
在蒸發器環境中圖像噪聲多為高斯噪聲,基于此選擇離散高斯函數來平滑圖像,離散逼近的一維高斯函數為
(1)
式(1)中:σ為函數的標準方差;x為尖峰中心的坐標值。
圖像濾波效果如圖3所示。如圖3(b)所示,在經過高斯濾波處理后的圖像,邊緣平滑,很好地避免了輸出圖像的灰度劇烈變化處產生的震蕩,也就是振鈴現象,且處理后的圖像信噪比比未處理前提高了。

圖3 原始圖與濾波圖Fig.3 Original diagram and filter diagram
考慮到蒸發器的特殊環境,光照嚴重不足,輻射劑量大等特點,采用最大類間方差法(OTSU)來進行圖像的閾值分割。算法如式(2)~式(5)所示。
u=w0u0+w1u1
(2)
f=w0(a0-a)2+w1(a1-a)2
(3)
聯立式(2)和式(3)得:
f=w0w1(a0-a1)2
(4)
或
(5)
式中:u0、u1為前景和背景圖像分別占原始圖像的比例;w0、w1為前景圖像和背景圖像灰度值各自占全部圖像的比例;a0、a1為前景圖像和背景圖像灰度值的均值;a為整副圖像灰度值的平均值;f為前景和背景圖像灰度值的方差。
通過上述閾值分割方法,可以得到如圖4的閾值分割結果。通過圖4(b)可以觀察到最大類間方差法可以很好地將螺栓上表面同背景分離,并且該算法計算簡單快速,不受圖像亮度和對比度的影響,當目標與背景的面積相差不大時,能夠有效地對圖像進行分割。

圖4 螺栓原始圖與閾值分割圖Fig.4 Original bolt and threshold segmentation
最基本的算法是種子填充。設有完全封閉圖像上的一點,在邊界內,只要在該點領域內的所有點都上色。可以用不同顏色來區分是否邊界。這個算法簡單容易理解,但存在一些問題。首先效率不高,因為需要計算所有領域的點。然后,該算法在編程時非常占用資源,對于計算機的要求很高。為了解決上述問題,現用填充線段來替代填充點,即用線將領域填滿。選中一個點,設定方向,按照一定順序進行線填充。計算方法為
Xk=(Xk-1⊕B)∩Ac,k=1,2,3,…
(6)

圖5 閾值分割與平滑填充Fig.5 Threshold segmentation and smooth filling
填充效果如圖5所示。如圖5(a)所示在經過閾值分割以后,還是有一些邊緣沒有分離到的地方,需要將這些地方進行填充,方便進行下一步輪廓提取,如果不進行填充,那么將會對下一步輪廓提取及圓心定位的精度產生影響。最后的實驗結果顯示該圖像填充算法精度滿足自動定位要求。
通過對實驗數據的分析,Canny算子可以獲得最佳的邊緣檢測效率。Canny算法的優點是信噪比高、定位性能好、單邊響應單一。Canny算法的基本原理是計算高斯濾波器脈沖響應的梯度大小和方向。
假設梯度向量為
(7)
邊界強度為
(8)
梯度的方向角θ為
(9)
通過Canny算子在圖像上準確地提取到了螺栓上表面的輪廓,也就是得到曲線上所有像素點的坐標,這樣就可以求出圓心點像素坐標和圓半徑。螺栓輪廓提取完成后,圓心值(x0,y0)可由式(10)得到:
(xi-x0)2+(yi-y0)2=r2
(10)
式(10)中:xi表示第i個點的x坐標值;yi表示第i個點的y坐標值,通過在輪廓上任意選取三個點組成一個三元二次方程組,即可求得圓心x0、y0和半徑r。
圓心像素點提取如圖6所示。圖6中的箭頭交匯點即為在提取輪廓之后定位的圓心點。通過Canny擬合出了螺栓上表面的圓,也就是得到了圓上所有點的坐標,然后利用圓上的三點計算出圓心,得到圓心坐標后,會在實驗部分對圓心坐標的精度進行驗證分析。

圖6 提取圓心Fig.6 Extract the center of the circle
機器人坐標轉換的目的就是要讓機器人知道目標點在機器人坐標系下的位置。標定采用基于同源點的最小二乘法求解轉換矩陣。各坐標系轉換關系如圖7所示。圖7中W是世界坐標系,E是末端工具坐標系,C是相機坐標系,G是標定板坐標系。

圖7 坐標系轉換關系Fig.7 Transformation relation of coordinate system
標定算法如下:
要尋求如下形式的變換關系,以將相機坐標系中的pC,i變換為工具坐標系中的pT,i:
pT=sRpC+p0
(11)
式(11)中:s為縮放參數;p0為平移量;R為旋轉矩陣。
除非同源點的坐標是精確的,否則不可能找到合適的s、p0、R精確滿足每一個同源點,而不留下一個殘差ei:
ei=pT,i-sRpC,i-p0
(12)

1.6.1 求平移量p0
同源點在兩個坐標系中的中心分別為
(13)
(14)
求出每個同源點相對于中心的坐標為
(15)
(16)
則殘差為
(17)
(18)
平移量p0等于同源點在工具坐標系中的中心與其在相機坐標系中的中心經比例和旋轉變換后的值之差。因此,要求p0,必須要先求出縮放參數s和旋轉矩陣R。
1.6.2 求縮放參數s

(19)
(20)
式中:n為選擇點的個數;ST、D、SC分別為
(21)
(22)
(23)
因為s只在首項中出現,故當首項為0時,殘差平方和最小,即
(24)
這樣就求出了縮放參數s。
1.6.3 求旋轉矩陣R
由式(24)可知,當D最大時,殘差平方和最小,據此可求得旋轉矩陣R。

(25)

(1)計算矩陣M。
(26)
(2)計算矩陣N。
(27)
(3)計算4次方程det(N-λI)=0的各個系數C0、C1、C2、C3。

c0=[(ab-e2)(cd-g2)+(eh-af)(fd-gi)+
(ai-ej)(fg-cj)+(ef-bh)(hd-gi)+
(aj-ei)(hg-cj)+(hi-fj)2
(27)
c1=[-b(cd-g2)+f(df-gi)-i(fg-ci)-a(cd-g2)+h(dh-gi)-j(gh-cj)-a(bd-i2)+e(de-ij)-j(ei-bj)-
a(bc-f2)+e(ce-fh)-h(ef-bh)
(28)
c2=(ac-h2)+(bc-f2)+(ad-j2)+
(bd-i2)+(cd-g2)+(ab-e2)
(29)
c3=a+b+c+d
(30)
求解最大的特征值與特征向量,就是

對應的正交旋轉矩陣R為
(31)
這樣就得到了轉換矩陣T:
定位實驗的目的是對圖像采集與處理算法進行驗證,確定螺栓定位算法的準確性。
由于在圖像識別過程中,相機很難停在螺栓的正上方,所以需要對不同相機拍攝位置下的算法精度進行驗證,確定定位算法的精度,使機器人能夠完成對螺栓的定位。定位精度實驗過程如下:
(1)固定相機,在相機有效拍攝范圍內對螺栓進行多組圖像采集。
(2)對多組圖像進行螺栓定位,得到圓心的計算值。
(3)實際測量,得到多組位置下圓心的實際值,并進行誤差統計。
通過在有效范圍內對不同位置的螺栓上表面進行圓形定位,結果如圖8所示,將螺栓擺在如圖所示a、b、c三個位置上,三個位置在x方向上分別相差40 mm和10 mm,在y方向上相差60 mm,結果表明在有效范圍內都能準確定位圓心。
定位實驗結果如圖9所示。圖9表明,針對堵板機器人螺栓定位問題采用的基于閾值分割的定位算法共進行了10次實驗,定位準確率為100%,定位最大誤差為1.10 mm,最小誤差為0.92 mm,滿足堵板機器人螺栓自主定位的精度要求。

圖8 不同位置的定位Fig.8 Positioning of different positions

圖9 定位算法誤差Fig.9 Positioning algorithm error
提出了一種在核電環境下基于halcon的視覺螺栓定位方法,特別對于在強輻射的環境下,對螺栓進行無接觸的定位極為重要。采用基于灰度值的圖像閾值分割,利用圓形曲線算法得到圓后,定位螺栓。測試結果如下。
(1)克服了視覺識別對核電環境適應性差、識別效果不好的問題。
(2)得到了比較準確的螺栓的輪廓和圓心。
(3)有效減少了核環境下的工作時間。
通過自動定位實驗,驗證了該圖像采集與處理系統的有效性。