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