丘海斌,陳 丹,王孝順
(福州大學(xué) 電氣工程與自動(dòng)化學(xué)院,福州 350108)
水表廣泛用于日常生活與工業(yè)當(dāng)中,水表作為計(jì)量收費(fèi)的依據(jù)屬于國家強(qiáng)制檢定的工作器具,必須經(jīng)過嚴(yán)格的檢定并檢定合格才能投入使用.所以生產(chǎn)水表的企業(yè)或計(jì)量部門需要對(duì)水表的示值誤差按照相關(guān)部門制定的規(guī)程進(jìn)行性能檢定.傳統(tǒng)的水表檢定,主要依靠人工來對(duì)水表進(jìn)行裝夾、校驗(yàn)、計(jì)算記錄和卸表工作,通過人工檢定的方式不可避免的存在著工作量大,操作過程中存在較大的人為誤差,效率低等問題.隨著工業(yè)的發(fā)展,各種生產(chǎn)線自動(dòng)化水平的不斷提高,為滿足生產(chǎn)與市場需要,提高生產(chǎn)效率,降低勞動(dòng)強(qiáng)度,將傳統(tǒng)的人工水表檢定線改造成自動(dòng)化流水線式檢定線已成為一種必然趨勢(shì).針對(duì)水表檢定線的自動(dòng)化改造,有許多學(xué)者進(jìn)行了相關(guān)的研究,在水表自動(dòng)讀數(shù)方面,現(xiàn)主要有基于水表梅花針轉(zhuǎn)過的齒數(shù)計(jì)數(shù)[1,2]和指針識(shí)別獲取水表讀數(shù)[3,4],都有不錯(cuò)的效果,在自動(dòng)水表檢定裝置方面,周兵等[5]提出了一種靜態(tài)容積法水表自動(dòng)檢定裝置,詹志杰等[6]提出一種基于流量時(shí)間法、活塞為標(biāo)準(zhǔn)器的家用冷水水表示值誤差動(dòng)態(tài)全自動(dòng)檢定方法.但這些研究主要集中在水表的流量檢定和校驗(yàn)上,而在水表的上料,裝夾以及卸表工作鮮有研究.
目前,整個(gè)水表檢定過程中還存在著許多需要人力的重復(fù)操作如水表的上料、裝夾和分揀等,在這些階段采用工業(yè)機(jī)器人代替人工進(jìn)行工作可以有效減少人力需求,提高工作效率,并進(jìn)一步增加檢定線的自動(dòng)化程度,實(shí)現(xiàn)水表檢定真正意義上的全自動(dòng)檢定.當(dāng)前,國內(nèi)已有了全自動(dòng)電表檢定線,能實(shí)現(xiàn)機(jī)器人的自動(dòng)掛(摘)表[7].然而,此類的檢定線并不能簡單地應(yīng)用于水表檢定線上,原因有多方面:一是電表具有統(tǒng)一的國家標(biāo)準(zhǔn),且形狀是規(guī)則的立方體,而水表沒有統(tǒng)一的國家標(biāo)準(zhǔn),且形狀也不規(guī)則;二是在水表檢定過程中,流經(jīng)水表的水流是有向的,并且多個(gè)水表需要串聯(lián)連接檢定,這要求機(jī)器人在抓取過程中要能準(zhǔn)確判斷水表的方向和姿態(tài);三是在水表檢定流程上需要抓取的環(huán)節(jié)有多個(gè),背景不一且較為復(fù)雜.由于檢定線上需要檢定的水表型號(hào)通常有多種,每種水表的參數(shù)又有所差別同時(shí)后續(xù)的檢定也需要進(jìn)行型號(hào)的區(qū)分以放置到對(duì)應(yīng)的檢定裝置中,因此需要對(duì)水表進(jìn)行分類抓取.然而,水表之間有差別的同時(shí)又具有較大的相似性,這對(duì)于基于人工設(shè)計(jì)特征的模式識(shí)別方法是比較困難的問題.針對(duì)上述問題,本文設(shè)計(jì)了一個(gè)基于深度學(xué)習(xí)網(wǎng)絡(luò)YOLOv3[8]的水表抓取系統(tǒng),該系統(tǒng)通過YOLOv3 網(wǎng)絡(luò)進(jìn)行目標(biāo)水表檢測,獲得水表的類型和相應(yīng)水表位置,再進(jìn)行水表的位姿檢測獲取水表抓取點(diǎn)的像素坐標(biāo)和姿態(tài)角,最后驅(qū)動(dòng)機(jī)器人進(jìn)行抓取、調(diào)整姿態(tài)并放置.本文的水表抓取系統(tǒng)在進(jìn)行抓取時(shí)不需要使用特定的托盤裝載水表,可以實(shí)現(xiàn)機(jī)器人在不同背景下對(duì)流水線上不同型號(hào)水和不同姿態(tài)水表進(jìn)行分類抓取與位姿調(diào)整,抓取成功率較高,在一定條件下受外部環(huán)境影響小,可靠性高.
水表抓取系統(tǒng)的框圖如圖1 所示,整個(gè)系統(tǒng)分為3 個(gè)部分即視覺檢測識(shí)別部分、機(jī)器人定位部分和機(jī)器人控制部分.視覺檢測識(shí)別部分使用CCD 攝像頭獲取檢定流水線上的圖像,為減少檢測時(shí)間,將原圖分辨率改為416×416 輸入到訓(xùn)練好的YOLOv3 的網(wǎng)絡(luò)模型獲取水表區(qū)域坐標(biāo)與示數(shù)區(qū)域坐標(biāo),根據(jù)得到的坐標(biāo)將相關(guān)區(qū)域分割出來,其中水表區(qū)域用來計(jì)算抓取點(diǎn)即水表表盤圓心的坐標(biāo),示數(shù)區(qū)用于檢測其長邊所在的直線,根據(jù)示數(shù)區(qū)位于出水口方向且與水表橫向垂直的特性,結(jié)合得到直線再結(jié)合表盤圓心坐標(biāo)就可以確定水表的位姿.機(jī)器人定位部分則通過手眼標(biāo)定得到相機(jī)和機(jī)器人坐標(biāo)系的旋轉(zhuǎn)矩陣和平移矩陣,進(jìn)而將圓心的像素坐標(biāo)和角轉(zhuǎn)化為機(jī)器人坐標(biāo)系下的坐標(biāo)與姿態(tài).機(jī)器人控制部分負(fù)責(zé)驅(qū)動(dòng)機(jī)器人移動(dòng)并進(jìn)行水表的抓取,并根據(jù)水表需要放置的位置控制機(jī)器人移動(dòng)到指定位置進(jìn)行放置.
YOLOv3 為YOLO[9]算法的第3 個(gè)版本,屬于One-Stage 檢測算法,這類算法將檢測問題轉(zhuǎn)換為回歸問題,將物體的定位和分類放在一個(gè)步驟完成,直接在輸出層回歸邊界框的位置及其所屬的類別,因此在檢測速度上獲得了較大的提升.YOLOv3 在YOLOv2 的基礎(chǔ)上進(jìn)行了改進(jìn),YOLOv3 網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示,在特征提取方面,Y O L O v 3 提出了新的特征提取網(wǎng)絡(luò)Darknet-53,整個(gè)特征提取網(wǎng)絡(luò)完全由卷積層組成,沒有用到池化操作,同時(shí)借鑒了ResNet[10]的思想添加許多的殘差模塊防止訓(xùn)練時(shí)梯度爆炸或消失以減少訓(xùn)練難度.在預(yù)測方面,YOLOv3 中抽取了3 個(gè)不同尺度的圖像特征進(jìn)行多尺度的預(yù)測,分別對(duì)特征圖大小為13×13、26×26、52×52 的3 個(gè)尺度進(jìn)行二倍的上采樣融合并在每個(gè)尺度的特征圖上獨(dú)立做檢測,YOLOv3 中將圖片按特征圖的大小劃分為N×N個(gè)單元格,每個(gè)單元格需要預(yù)測3 個(gè)邊界框(bounding box),最后每個(gè)尺度輸出的張量為N×N×[3×(4+1+C)],包括4 個(gè)邊界框的信息,一個(gè)置信度得分,C個(gè)預(yù)測的類別數(shù).
圖2 YOLOv3 的網(wǎng)絡(luò)結(jié)構(gòu)
YOLOv3 在檢測過程中沿用了YOLOv2 中使用的anchor box,anchor box 的初始參數(shù)會(huì)直接影響網(wǎng)絡(luò)的學(xué)習(xí)速度和檢測精度,需要根據(jù)自己的數(shù)據(jù)集重新聚類分析.在聚類算法中,K-means 具備簡潔快速,易于實(shí)現(xiàn)的優(yōu)點(diǎn)[11],因此本文使用K-means 對(duì)數(shù)據(jù)集重新進(jìn)行聚類得到適合的anchor box.
本文采用真空吸盤作為水表的抓取工具,為使抓取時(shí)可以容許最大誤差,因此以水表表盤的圓心做為抓取點(diǎn),計(jì)算圓心像素坐標(biāo)的檢測流程如圖4 所示,相應(yīng)圖片處理結(jié)果如圖5 所示.
圖4 圓心檢測的算法流程圖
圖5 水表圖片處理結(jié)果圖
3.1.1 水表區(qū)域提取與灰度化
經(jīng)過YOLOv3 檢測后可以得到水表區(qū)域的坐標(biāo),經(jīng)過轉(zhuǎn)換可以將水表區(qū)域從原圖提取出來處理,避免多余背景的干擾,提取后進(jìn)行灰度化處理.式(1)的灰度化算法是采用根據(jù)人眼對(duì)光譜適應(yīng)能力得到的一組灰度化系數(shù)[12],如下:
3.1.2 中值濾波
由于原始圖像中存在較多的噪聲,需要對(duì)圖片進(jìn)行濾波處理.中值濾波采用像素點(diǎn)鄰域灰度值的中值來代替該像素點(diǎn)的灰度值,相比于其他濾波算法在去除噪聲的同時(shí)可以保留圖像的邊緣細(xì)節(jié),能夠避免噪聲對(duì)邊緣檢測造成較大的影響,因此在本文中采用中值濾波對(duì)圖片進(jìn)行降噪處理.
3.1.3 自適應(yīng)閾值
在圖像處理應(yīng)用中閾值化操作是一個(gè)很常用的處理方式,本文中采用的閾值方法是局部自適應(yīng)閾值,每個(gè)像素點(diǎn)的閾值根據(jù)點(diǎn)(x,y)局部鄰域塊的高斯加權(quán)和來確定二值化的閾值T(x,y),確定閾值后根據(jù)式(2)進(jìn)行二值化,d(x,y)為閾值化后點(diǎn)的像素值,src(x,y)為閾值化之前對(duì)應(yīng)點(diǎn)的像素值.
(2)學(xué)校應(yīng)加強(qiáng)校園安全管理,注重欺凌行為的預(yù)防。一方面,學(xué)校要加強(qiáng)宣傳工作,讓學(xué)生了解相應(yīng)法律及欺凌行為的危害,從思想上降低學(xué)生實(shí)施欺凌行為的沖動(dòng)。學(xué)??梢圆扇《鄻踊男麄鞣绞剑ㄟ^圖片、視頻、戲劇化表演等方式增強(qiáng)教育的趣味性,使學(xué)生切實(shí)感受到欺凌的危害性;另一方面,學(xué)校也要不斷尋求新的管理方式,消滅校園監(jiān)控管理盲區(qū),加強(qiáng)對(duì)校園的安全巡視工作,課間時(shí)段要鼓勵(lì)班主任或任課教師走進(jìn)教室及走廊,及時(shí)了解學(xué)生及班級(jí)情況。
3.1.4 連通小區(qū)域的去除
經(jīng)過閾值化后存在有許多連通小區(qū)域,為避免對(duì)之后圖片處理造成干擾需要去除多余的黑色的小連通區(qū)域,本文通過指針訪問像素,對(duì)圖像中各個(gè)連通區(qū)域進(jìn)行標(biāo)記,統(tǒng)計(jì)各個(gè)連通區(qū)域的像素總數(shù)并與給定閾值相比,小于閾值則將此連通域像素值全部變?yōu)?55,大于閾值連通域像素值不變化.
3.1.5 橢圓擬合
由于水表在不同位置會(huì)導(dǎo)致圖像中水表表盤不為標(biāo)準(zhǔn)圓形,所以本文使用橢圓擬合尋找表盤圓心,橢圓的表達(dá)公式如式(3)所示,算法中通過式(4)~式(8)轉(zhuǎn)化為用圓心(x0,y0),長短軸a,b,旋轉(zhuǎn)角α及長短軸比ρ等5 個(gè)參數(shù)唯一表示.
從圖5 中第5 張圖片中可以看出經(jīng)過連通小區(qū)域的去除后表盤圓形輪廓保存的比較完整,因此本文利用輪廓的點(diǎn)集進(jìn)行擬合得到表盤所在的圓,但在某些情況下輪廓會(huì)發(fā)生斷裂不連貫,一個(gè)輪廓被分為多個(gè)點(diǎn)集以致擬合不出所需要的圓如圖6(a)所示,因此本文對(duì)其進(jìn)行了改進(jìn),改進(jìn)后橢圓擬合的結(jié)果如圖6(b)所示,橢圓檢測使用的具體過程如算法1.
?
圖6 直接擬合和改進(jìn)后的擬合效果對(duì)比圖
本文利用水表示數(shù)區(qū)所在一側(cè)為出水口方向且示數(shù)區(qū)的橫向與水表整體位姿基本是垂直的特性來判斷水表的姿態(tài),具體流程如圖7 所示.
圖7 水表姿態(tài)判斷流程圖
3.2.1 邊緣檢測
通過邊緣檢測可以更好的將圖像中的邊緣信息表示在圖片中,更方便于下一步的直線檢測,系統(tǒng)中采用Canny 算子進(jìn)行邊緣檢測,先使用式(9)的高斯函數(shù)進(jìn)行圖像的去噪、平滑,再使用一對(duì)卷積陣列計(jì)算水平和垂直方向的梯度分量Gx和Gy并用式(10)與式(11)計(jì)算梯度的幅值G和方向θ,最后使用非極大值抑制排除非像素邊緣保留候選邊緣,并根據(jù)雙閾值從候選邊緣點(diǎn)中尋找最終的邊緣點(diǎn),Canny 算子使用了兩個(gè)滯后閾值其中低閾值用于邊緣連接,高閾值用于控制邊緣初始段,Canny 算子的高低閾值比一般在2:1~3:1 之間.
3.2.2 直線檢測與篩選
本文采用累計(jì)概率霍夫變換對(duì)直線進(jìn)行檢測,霍夫變換中選擇使用極坐標(biāo)系來表示直線,將圖像上的點(diǎn)映射到極坐標(biāo)系通過式(12)表示,因此可以通過檢測交于一點(diǎn)的曲線數(shù)量是否超過閾值來判斷是否檢測到了直線,累計(jì)概率霍夫變換是對(duì)霍夫變換的改進(jìn),不需要對(duì)每個(gè)點(diǎn)都進(jìn)行追蹤,在一定范圍內(nèi)進(jìn)行霍夫變換,對(duì)于隨機(jī)的前景點(diǎn),當(dāng)曲線滿足最小閾值時(shí)將直線找出并將直線上的點(diǎn)刪除,記錄起始點(diǎn)和中點(diǎn)判斷是否滿足最小長度,若滿足記錄下對(duì)應(yīng)參數(shù).累計(jì)概率霍夫變換得到的參數(shù)為檢測到線段的端點(diǎn)坐標(biāo),為便于直線篩選姿態(tài)角的判斷,本文將其轉(zhuǎn)化為y=kx+b直線方程來表示所在的直線.檢測出來的直線通常不止一條,算法中根據(jù)示數(shù)區(qū)擬合的兩條邊緣直線平行進(jìn)行篩選,并從中選取一條得到最后所需直線.
3.2.3 姿態(tài)角的計(jì)算
經(jīng)過上述的檢測后,可以得到水表的表盤圓心(x0,y0)與示數(shù)區(qū)直線方程,如圖8 所示,uov表示像素坐標(biāo)系,箭頭垂直指向直線位置,L表示實(shí)驗(yàn)時(shí)圖像姿態(tài)角為0°時(shí)示數(shù)區(qū)直線的所在的位置,L1和L2表示兩種不同姿態(tài)時(shí)檢測直線所在的位置,此時(shí)水表的姿態(tài)方向?yàn)閳D中箭頭所指方向,結(jié)合機(jī)械臂第六軸的旋轉(zhuǎn)方向,將角度θ范圍限制在0°到180°,以0°姿態(tài)角為標(biāo)準(zhǔn)線,左邊為負(fù)角度,右邊為正角度,設(shè)在圖8 中當(dāng)水表兩種姿態(tài)與標(biāo)準(zhǔn)線的夾角分別為θ1和θ2,則水表的姿態(tài)角分別為θ1和-θ2.所以在求取角度θ時(shí)只需要聯(lián)立圓心與直線方程就可以計(jì)算出姿態(tài)角θ.
圖8 像素坐標(biāo)系下的旋轉(zhuǎn)角度示意圖
由橢圓擬合后可以得到抓取點(diǎn)的像素坐標(biāo),還需要通過標(biāo)定將其轉(zhuǎn)化為機(jī)器人坐標(biāo)系下的坐標(biāo)以實(shí)現(xiàn)機(jī)器人對(duì)目標(biāo)的抓取.其中像素坐標(biāo)和相機(jī)坐標(biāo)系關(guān)系可由式(13)表示,式中(u,v)為像素坐標(biāo)系中的坐標(biāo),Xc,Yc,Zc表示相機(jī)坐標(biāo)系下的坐標(biāo),其中K為相機(jī)內(nèi)參,本文中利用文獻(xiàn)[13]標(biāo)定法對(duì)相機(jī)進(jìn)行標(biāo)定.實(shí)驗(yàn)中相機(jī)以眼在手外的方式固定,因?yàn)闄C(jī)器人和相機(jī)均固定,所以由相機(jī)坐標(biāo)系到基座標(biāo)系的變換矩陣T可以唯一確定.相機(jī)坐標(biāo)系到基座標(biāo)系的坐標(biāo)轉(zhuǎn)換關(guān)系可以用式(14)表示,其中R為旋轉(zhuǎn)矩陣,t為平移矩陣,Xb,Yb,Zb為機(jī)器人基座標(biāo)系下的坐標(biāo).本文利用最小二乘法來計(jì)算兩個(gè)坐標(biāo)系的變換矩陣,在圖像中選取系列的點(diǎn),計(jì)算這些點(diǎn)在相機(jī)坐標(biāo)系下的坐標(biāo)pi,并控制機(jī)器人末端移動(dòng)到指定的點(diǎn)獲得一一對(duì)應(yīng)的基座標(biāo)qi,將其建模為式(15)的形式,再利用文獻(xiàn)[14]介紹的SVD(Singular Value Decomposition)求解方法對(duì)式(15)進(jìn)行求解得到相機(jī)到基座標(biāo)的旋轉(zhuǎn)矩陣R和平移矩陣t.得到變換矩陣后就可以計(jì)算出在機(jī)器人基坐標(biāo)系下抓取點(diǎn)的坐標(biāo),通過正運(yùn)動(dòng)學(xué)可以求解出末端手爪要到達(dá)的位置,再由逆運(yùn)動(dòng)學(xué)求解6 個(gè)關(guān)節(jié)角并驅(qū)動(dòng)機(jī)器人進(jìn)行抓取.
實(shí)驗(yàn)平臺(tái)如圖9(a)所示,硬件部分包括一臺(tái)ABB1200 型六自由度機(jī)器人,一臺(tái)500 萬像素的CCD 工業(yè)相機(jī),其拍攝的圖片尺寸為2588×1940,一臺(tái)通用計(jì)算機(jī),其使用的CPU 為i7-8700,GPU 為1080Ti,機(jī)器人實(shí)際抓取圖像如圖9(b)所示.軟件開發(fā)環(huán)境為Visual Studio 2013,并配置有CUDA 庫、cuDNN 庫和OpenCV 圖像處理庫.
圖9 實(shí)驗(yàn)平臺(tái)和水表抓取圖像
將水表擺放在相機(jī)視野內(nèi),使用YOLOv3 模型可以準(zhǔn)確檢測出每個(gè)水表的類別以及水表、示數(shù)區(qū)的位置,檢測結(jié)果如圖10(a)所示,其中框?yàn)樗淼奈恢脜^(qū)域,框的左上方為物體的類別和置信度,水表的位姿檢測結(jié)果如圖10(b)所示.
為驗(yàn)證YOLOv3 在水表抓取系統(tǒng)中的有效性,實(shí)驗(yàn)中與兩種比較典型的深度學(xué)習(xí)網(wǎng)絡(luò)Faster RCNN[15]和SSD(Single Shot multibox Detector)[16]進(jìn)行比較,依次對(duì)3 種水表進(jìn)行抓取,每種水表抓取20 次,以將水表抓取到指定位置并且將水表方向旋轉(zhuǎn)到姿態(tài)角為0 的狀態(tài)視為成功抓取,其他情況則視為抓取失敗,抓取結(jié)果如表1 所示.
從表1 中可以看出使用Faster RCNN 和YOLOv3網(wǎng)絡(luò)的抓取效果相對(duì)較好,但Faster RCNN 的檢測時(shí)間要明顯要長于YOLOv3.使用SSD 網(wǎng)絡(luò)的抓取成功率比較低,通過分析SSD 檢測的結(jié)果發(fā)現(xiàn)SSD 對(duì)于水表示數(shù)區(qū)域識(shí)別效果比較差,會(huì)出現(xiàn)識(shí)別不全、錯(cuò)誤的情況導(dǎo)致姿態(tài)角計(jì)算錯(cuò)誤出現(xiàn)抓取失敗的情況.綜合抓取效果和檢測時(shí)間YOLOv3 比較適用于本文的抓取系統(tǒng)中.為進(jìn)一步驗(yàn)證水表抓取系統(tǒng)的可靠性,本文分別在一般亮度環(huán)境下、偏暗環(huán)境、偏亮環(huán)境和兩種不同背景中對(duì)3 類水表分別進(jìn)行抓取實(shí)驗(yàn),實(shí)驗(yàn)環(huán)境如圖11 所示,每類水表單獨(dú)連續(xù)抓取20 次,并在有其他水表干擾的情況下連續(xù)抓取10 次,判定抓取成功條件與上述實(shí)驗(yàn)相同,抓取的結(jié)果如表2 所示.
圖10 檢測結(jié)果圖
表1 使用不同網(wǎng)絡(luò)進(jìn)行水表抓取的結(jié)果
從表2 中的實(shí)驗(yàn)數(shù)據(jù)可以看出,系統(tǒng)可以實(shí)現(xiàn)在不同的背景下進(jìn)行水表抓取,同時(shí)在光照范圍一定的條件下,受到環(huán)境光的影響小.但過暗和過亮也會(huì)影響系統(tǒng)的檢測,系統(tǒng)識(shí)別率會(huì)降低無法正常工作.實(shí)驗(yàn)數(shù)據(jù)中水表3 的抓取成功率更低,主要原因是因?yàn)樗肀肀P相比其他兩個(gè)水表較小有個(gè)突出的部分,抓取時(shí)吸盤碰到突出部分閉合不緊導(dǎo)致抓取失敗.在實(shí)際的水表檢定線上,檢定環(huán)節(jié)需要檢定水表的最大流量、分界流量與最小流量等,所需要的時(shí)間較長,所以對(duì)于其他環(huán)節(jié)執(zhí)行速度上要求不高,本文的水表抓取系統(tǒng)能夠以較快的速度識(shí)別水表并進(jìn)行抓取,能夠滿足實(shí)際水表檢定線上的水表抓取需求.
圖11 不同的抓取環(huán)境圖
表2 不同環(huán)境下水表抓取結(jié)果
本文設(shè)計(jì)了一個(gè)基于機(jī)器視覺的水表抓取系統(tǒng),利用該系統(tǒng)可以實(shí)現(xiàn)對(duì)檢定線上的水表進(jìn)行型號(hào)識(shí)別并準(zhǔn)確抓取.系統(tǒng)通過YOLOv3 網(wǎng)絡(luò)模型能準(zhǔn)確的實(shí)現(xiàn)水表型號(hào)的識(shí)別以及位置的檢測,得到水表型號(hào)后可以防止誤抓也能夠使系統(tǒng)可以根據(jù)不同型號(hào)設(shè)置相應(yīng)的參數(shù)減少誤差提高抓取的成功率.實(shí)驗(yàn)結(jié)果表明,本文的設(shè)計(jì)的抓取系統(tǒng)受到背景和光照的影響小,3 類水表都有較高的抓取成功率,能夠有效可靠的完成自動(dòng)化檢定線上水表的抓取.