田志彬 謝小輝
(蘇州大學(xué)機(jī)電工程學(xué)院, 江蘇 蘇州 215100)
機(jī)器視覺取代人眼對環(huán)境進(jìn)行感知,通過對目標(biāo)工件形狀、姿態(tài)及位置識別與定位目標(biāo),使工業(yè)生產(chǎn)線更加靈活、智能,解決傳統(tǒng)工業(yè)離不開人工檢測的問題[1]。在工業(yè)生產(chǎn)中,效率是一個(gè)重要的評價(jià)指標(biāo),飛拍定位是在動態(tài)過程中解決糾偏問題的方法,可以顯著提高效率,所以飛拍在工業(yè)上的應(yīng)用具有良好的發(fā)展前景。咸浩等人[2]基于機(jī)器視覺設(shè)計(jì)圓角袋單切系統(tǒng),采用飛拍模式的視覺系統(tǒng)圖像處理速度快,有效解決傳統(tǒng)生產(chǎn)圓角袋時(shí)出現(xiàn)的效率低、廢料多、機(jī)械磨損快等問題。黎揚(yáng)進(jìn)等人[3]提出一種卡爾曼—粒子濾波算法,有效提高了焊縫的跟蹤精度。在移動對象軌跡預(yù)測高精度要求的應(yīng)用領(lǐng)域中,基于軌跡擬合的傳統(tǒng)預(yù)測算法已無法精準(zhǔn)地預(yù)測出運(yùn)動行為動態(tài)變化的移動對象的軌跡位置[4]。
本文擬針對對動態(tài)抓取的工件進(jìn)行飛拍定位糾偏的場景,設(shè)計(jì)了視控一體化系統(tǒng),改進(jìn)卡爾曼濾波精準(zhǔn)預(yù)測相機(jī)觸發(fā)時(shí)機(jī)器人位置,設(shè)計(jì)ResNet50為基本框架的神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)快速的圖像處理,最終實(shí)現(xiàn)高精度、高效率的飛拍定位。
傳統(tǒng)的基于視覺的機(jī)器人控制系統(tǒng),視覺與控制模塊分離大都采用分離方案,相互之間通過TCP/IP協(xié)議實(shí)現(xiàn)數(shù)據(jù)通訊,實(shí)時(shí)性差;并且控制柜占用較大空間,視覺系統(tǒng)不輕便。結(jié)合現(xiàn)有機(jī)器人基于視覺的控制系統(tǒng)的不足,設(shè)計(jì)一種實(shí)時(shí)性、硬件系統(tǒng)簡捷的視覺控制一體化系統(tǒng),系統(tǒng)組成如圖1。
在嵌入式工控機(jī)Windows系統(tǒng)上植入Codesys RTE,使工控機(jī)變?yōu)閷?shí)時(shí)的控制系統(tǒng),控制機(jī)器人的運(yùn)動。同時(shí)在工控機(jī)上設(shè)計(jì)視覺系統(tǒng),通過共享內(nèi)存的快速交互方式獲取機(jī)器人實(shí)時(shí)信息。通過Ethercat的通訊方式實(shí)現(xiàn)對機(jī)器人的運(yùn)動控制,在一個(gè)通訊周期過程中,從站對數(shù)據(jù)幀的處理完全由硬件實(shí)現(xiàn),所以延時(shí)很短,約為100~500 ns,這極大程度上保證了實(shí)時(shí)性。系統(tǒng)可以實(shí)現(xiàn)對物件的動態(tài)抓取以及飛拍定位。
植入Codesys RTE的實(shí)時(shí)系統(tǒng)實(shí)現(xiàn)機(jī)器人的運(yùn)動控制,每隔Tms讀取機(jī)器人的位置,并將位置信息通過共享內(nèi)存的通訊方式傳送到視覺控制端。由于時(shí)間間隔滿足不了位置觸發(fā)精度,所以通過改進(jìn)卡爾曼預(yù)測算法精準(zhǔn)預(yù)測下一個(gè)Tms時(shí)間點(diǎn)的位置,提前鎖定觸發(fā)位置所在的時(shí)間段,通過實(shí)時(shí)更新的運(yùn)動方程對時(shí)間段進(jìn)行分割,得到觸發(fā)位置的時(shí)間點(diǎn)。通過C++庫chrono實(shí)現(xiàn)對程序段的微秒級高精度計(jì)時(shí)和高精度延時(shí),從而實(shí)現(xiàn)精準(zhǔn)觸發(fā)??柭惴ㄊ疽鈭D如圖2。
卡爾曼濾波[5]是一種利用線性系統(tǒng)狀態(tài)方程,通過系統(tǒng)的輸入輸出觀測數(shù)據(jù),對系統(tǒng)狀態(tài)進(jìn)行最優(yōu)估計(jì)的算法。將卡爾曼濾波算法應(yīng)用于移動對象動態(tài)軌跡預(yù)測具有實(shí)時(shí)性高的優(yōu)勢,對頻繁變換運(yùn)動狀態(tài)的移動對象具有較高的自適應(yīng)性,是一種普適的機(jī)器學(xué)習(xí)方法[6]。
卡爾曼濾波動態(tài)軌跡預(yù)測系統(tǒng)的狀態(tài)方程和觀測方程,如下所示:
系統(tǒng)的狀態(tài)方程(預(yù)測方程):
xk=Ak×xk-1+Bk×uk+wk
(1)
觀測方程:
zk=Hk×xk+vk
(2)
式中:xk是狀態(tài)向量;Ak是狀態(tài)轉(zhuǎn)移矩陣;Bk是控制變量的矩陣;uk是狀態(tài)控制向量。
由于傳統(tǒng)的卡爾曼預(yù)測應(yīng)用此場景時(shí)有較大位置預(yù)測誤差,所以對傳統(tǒng)的卡爾曼濾波進(jìn)行改進(jìn)。前幾次迭代中還是應(yīng)用傳統(tǒng)的時(shí)間更新公式:
(3)
(4)
誤差穩(wěn)定之后,引入反饋向量sss=[ss0],ss為前一時(shí)刻先驗(yàn)估計(jì)位置預(yù)測誤差。
(5)
(6)
對于變加速運(yùn)動,在測量更新中實(shí)時(shí)更新每段間隔的加速度,利用上一時(shí)間段的加速度,更新下一時(shí)間段的位移和速度。觀測更新方程如下:
(7)
(8)
(9)
前幾次迭代中,引入較小的加速度,穩(wěn)定位置和速度:
(10)
誤差穩(wěn)定并且引入反饋向量sss之后,更換加速度更新方程:
(11)
深度學(xué)習(xí)目標(biāo)檢測算法可以從功能上分為兩部分,其一是提取語義信息的骨架特征提取網(wǎng)絡(luò),其二是對提取到的語義信息進(jìn)行運(yùn)算、得出最終結(jié)果的結(jié)果預(yù)測網(wǎng)絡(luò)。為了提高模型目標(biāo)檢測的準(zhǔn)確性,考慮選擇合適的骨架網(wǎng)絡(luò)和預(yù)測網(wǎng)絡(luò)進(jìn)行合理組合與優(yōu)化,并且建立合適的損失函數(shù),結(jié)合動量法優(yōu)化網(wǎng)絡(luò)。圖3為改進(jìn)的網(wǎng)絡(luò)結(jié)構(gòu)模型。
(1)部分是ResNet50骨架網(wǎng)絡(luò),ResNet50是具有殘差結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)。在解決梯度的過程中往往伴隨深度加深[7],該網(wǎng)絡(luò)能有效防止在反向傳播過程中梯度彌散問題[8],進(jìn)而解決梯度變化時(shí)深度加深問題[9]。(2)部分是特征金字塔網(wǎng)絡(luò),它是一種多尺度特征融合網(wǎng)絡(luò),通過特征金字塔網(wǎng)絡(luò)融合高層特征和底層特征的優(yōu)點(diǎn),進(jìn)行更準(zhǔn)確的檢測。(3)部分對特征圖進(jìn)行學(xué)習(xí),通過優(yōu)化函數(shù)調(diào)整過程參數(shù)較小損失函數(shù)值,對潛在目標(biāo)進(jìn)行定位和分類,通過置信度分析減少重疊的預(yù)測邊界框。
為了解決Hessian矩陣病態(tài)條件問題,引入動量優(yōu)化算法,它能夠引導(dǎo)迭代方向朝著正確的方向進(jìn)行。如果前一刻的梯度與當(dāng)前的梯度方向差別很大,不加處理的話該時(shí)刻會有大幅徘徊的梯度。由于動量積攢了歷史的梯度,把歷史梯度疊加到當(dāng)前時(shí)刻梯度上,從而使得當(dāng)前時(shí)刻的梯度幅度減小。
更新公式:
vt=γ×vt-1+α?
(12)
θnew=θ-vt
(13)
公式(12)為動量更新公式,vt-1為之前所有步驟所累積的動量和,γ為動量參數(shù),α為學(xué)習(xí)率,?為梯度,θ為待更新參數(shù)。
脫離傳感器觸發(fā)的飛拍糾偏定位主要包括以下兩個(gè)過程:
(1)示教:設(shè)定一個(gè)相機(jī)觸發(fā)位置,通過改進(jìn)的卡爾曼算法精準(zhǔn)觸發(fā)相機(jī)拍照,通過深度學(xué)習(xí)識別圖像的ROI區(qū)域,對ROI區(qū)域圖像進(jìn)行邊緣檢測及相關(guān)處理,得到精確的圖像位姿信息。最后示教機(jī)器人精確裝配工件,記錄機(jī)器人在裝配的位姿信息。得到的圖像和機(jī)器人位姿作為飛拍糾偏的模板信息。
(2)飛拍糾偏:確保在同一位置得到工件的圖像坐標(biāo),通過深度學(xué)習(xí)快速識別圖像的位姿信息,與模板信息進(jìn)行偏差計(jì)算,得到的偏差就是工件的偏移信息。通過手眼標(biāo)定,將工件的偏差轉(zhuǎn)換到機(jī)器人坐標(biāo)下。在機(jī)器人下一節(jié)拍前,將偏差疊加到模板信息中生成新的機(jī)器人目標(biāo)位置,實(shí)現(xiàn)對工件的高精度裝配。
卡爾曼濾波器的觀測量可以少于動態(tài)系統(tǒng)中狀態(tài)向量所包含的元素個(gè)數(shù)。所以測量向量只有一個(gè)位移變量,為一維向量。采樣時(shí)間為4 ms,把每隔4 ms實(shí)時(shí)采集的機(jī)器人Y軸位置作為測量向量zk的主要部分,創(chuàng)建狀態(tài)向量x=[sv],Ak=[1,ΔT;0,1],Bk=[ΔT2/2;ΔT],Hk=[1,0],測量噪聲為±0.000 5,測量噪聲協(xié)方差R為0.000 5,過程噪聲協(xié)方差Q=[0,0;0,1]。取第一個(gè)數(shù)據(jù)點(diǎn)為0時(shí)刻,從第9個(gè)點(diǎn)開始迭代,預(yù)測結(jié)果圖見圖4。
由圖5可以看出,傳統(tǒng)的卡爾曼預(yù)測誤差達(dá)到穩(wěn)定后波動較大,1.2 s后,最大誤差值達(dá)到0.059 7 mm,標(biāo)準(zhǔn)差為0.024 5 mm。如圖6,1.2 s以后,用上一時(shí)刻先驗(yàn)估計(jì)誤差進(jìn)行反饋,位置預(yù)測誤差明顯減小,誤差基本位于±0.02 mm內(nèi),并且最大誤差降低到0.037 6 mm,標(biāo)準(zhǔn)差為0.013 4 mm。與傳統(tǒng)方法相比,預(yù)測精度得到了明顯提高。
速度變化比較平穩(wěn),加速度雖然波動較大,但是加速度疊加在ΔT2=0.000 016上面,對于預(yù)測精度影響不大。因此前面可以利用較小的加速度穩(wěn)定卡爾曼濾波的過程參數(shù),后面更正加速度表達(dá)式,進(jìn)行精準(zhǔn)預(yù)測。
當(dāng)改進(jìn)的卡爾曼濾波算法預(yù)測到下一時(shí)間點(diǎn)的位置大于觸發(fā)的位置時(shí),算法停止迭代。利用上一時(shí)間點(diǎn)的速度和預(yù)測速度,對上一時(shí)間點(diǎn)和預(yù)測時(shí)間點(diǎn)的這一時(shí)間段進(jìn)行分割,找到觸發(fā)位置的時(shí)間點(diǎn)。由于時(shí)間段足夠短,加速度對位移基本沒有影響,分割過程可以按照機(jī)器人勻速運(yùn)動處理。
時(shí)間段的分割公式:
(14)
利用chrono庫中system_clock::now()函數(shù),設(shè)計(jì)微秒級計(jì)時(shí)和延時(shí)程序,用于對預(yù)測算法進(jìn)行耗時(shí)計(jì)算和延時(shí)觸發(fā)。通過測試改進(jìn)的卡爾曼濾波迭代一次的時(shí)間Tl不超過8 μs。所以精準(zhǔn)延時(shí)時(shí)間為Te=T-Tl。
SCARA機(jī)器人空載,機(jī)器人運(yùn)行最大速度設(shè)為150 mm/s,對改進(jìn)的卡爾曼濾波進(jìn)行精度驗(yàn)證。由于機(jī)器人末端固定,并且采用左手系運(yùn)動,其末端的圓心位置與機(jī)器人空間位置一一對應(yīng),即驗(yàn)證每一幀圖像的中心位置坐標(biāo)差值即可。
通過改進(jìn)的卡爾曼濾波觸發(fā)相機(jī)采集圖像,進(jìn)行200次實(shí)驗(yàn),機(jī)器人末端中心的Y軸圖像坐標(biāo)如圖9所示。
由上述實(shí)驗(yàn)數(shù)據(jù)得出,均方差為0.827 px,最大偏差為2.781 px。即均方差為0.017 378 mm,最大偏差為0.058 4 mm,觸發(fā)重復(fù)度滿足后續(xù)飛拍實(shí)驗(yàn)的要求。
搭建網(wǎng)絡(luò)后對1 500張工件進(jìn)行訓(xùn)練,將70%作為訓(xùn)練集,15%作為驗(yàn)證集,15%作為測試集。最大訓(xùn)練步數(shù)設(shè)置為200,學(xué)習(xí)率參數(shù)為0.000 5,動量參數(shù)為0.9。準(zhǔn)確率最終穩(wěn)定在95%左右,損失函數(shù)小于0.05,生成best.hdl文件,后面調(diào)用訓(xùn)練好的網(wǎng)絡(luò)文件即可獲取訓(xùn)練框的大小和方向?;贕PU型號為GeForece GTX1050ti的應(yīng)用識別時(shí)間在50 ms以內(nèi),基于CPU應(yīng)用時(shí)間在90 ms以內(nèi)。由于在線實(shí)驗(yàn)時(shí)工控機(jī)型號的限制,采用基于CPU的深度學(xué)習(xí)應(yīng)用。圖10為訓(xùn)練過程可視化圖。
圖10中,最上層為輸入圖像,中間層為標(biāo)注圖像,最下層為訓(xùn)練結(jié)果。
實(shí)驗(yàn)采用??倒た貦C(jī)MV-VB2210-120G,驅(qū)動器為STEP四軸驅(qū)動器,相機(jī)分辨率為3 072 × 2 048,光源采用環(huán)形光源,SACRA大臂小臂長為200 mm。機(jī)器人位置(200,5.6,60)設(shè)為相機(jī)觸發(fā)位置,實(shí)時(shí)獲取機(jī)器人位置的周期設(shè)為4 ms。
按照前面所述的飛拍過程進(jìn)行飛拍實(shí)驗(yàn)的結(jié)果:
(1)示教:在機(jī)器人位置(200,5.6,60)處觸發(fā)的圖像像素坐標(biāo)為(1 702.38,1 351.79),姿態(tài)為12.32°;示教得到的機(jī)器人裝配時(shí)坐標(biāo)為(200.52,202.73),姿態(tài)為11.63°。
(2)飛拍糾偏:SCARA吸取芯片后,經(jīng)過預(yù)測算法觸發(fā)相機(jī)拍照,然后利用神經(jīng)網(wǎng)絡(luò)快速識別芯片的位姿,與步驟1得到的模板像素坐標(biāo)進(jìn)行偏差計(jì)算,然后將偏差值轉(zhuǎn)換到機(jī)器人坐標(biāo)下,進(jìn)而疊加到步驟1中的機(jī)器人示教坐標(biāo)上得到精準(zhǔn)的目標(biāo)裝配位置。通過固定相機(jī)對放置結(jié)果進(jìn)行誤差測量,把x方向和y方向誤差的平均值視為定位誤差。
實(shí)驗(yàn)測試了機(jī)器人在不同速度下應(yīng)用視控一體方法進(jìn)行飛拍糾偏定位,每個(gè)速度下進(jìn)行200次測試,實(shí)驗(yàn)結(jié)果及實(shí)驗(yàn)場景圖如圖11所示。
對圖11~圖14結(jié)果進(jìn)行統(tǒng)計(jì)計(jì)算,計(jì)算結(jié)果如下表:
表1 實(shí)驗(yàn)結(jié)果
機(jī)器人最大速度為70 mm/s時(shí),平均定位誤差在±0.06 mm以內(nèi);最大速度為100 mm/s時(shí),平均定位誤差在±0.065 mm以內(nèi);最大速度為170 mm/s時(shí),平均定位誤差在±0.08 mm以內(nèi)。并且最大定位誤差均不超過±0.11 mm。
通過本文的研究,采用視控一體化的機(jī)器人飛拍系統(tǒng)較之傳統(tǒng)的視控分離方案,系統(tǒng)簡捷易用,具有實(shí)時(shí)性高的特點(diǎn)。提出一種無傳感器的精準(zhǔn)時(shí)間觸發(fā)算法,結(jié)合深度學(xué)習(xí)實(shí)現(xiàn)精準(zhǔn)的飛拍定位。經(jīng)過1 000次的飛拍實(shí)驗(yàn)測試及其數(shù)據(jù),表明:通過采用深度學(xué)習(xí)算法,針對貼裝芯片工件的飛拍實(shí)驗(yàn),最快算法時(shí)間在50 ms以內(nèi),傳統(tǒng)的模板檢測時(shí)間為150 ms;通過采用改進(jìn)型KALMAN濾波算法,較之傳統(tǒng)的卡爾曼濾波算法,在應(yīng)用此場景時(shí),預(yù)測誤差的標(biāo)準(zhǔn)差從0.024 5 mm提高到0.013 4 mm,最大預(yù)測誤差從0.059 7 mm減小到0.037 6 mm;通過兩者相結(jié)合,基于視控一體化系統(tǒng),平均定位誤差在0.08 mm以內(nèi),良率96%,系統(tǒng)成本大大降低。因此,本文提出的機(jī)器人視覺飛拍系統(tǒng)具有簡捷易用、精度高和效率高優(yōu)點(diǎn),能夠滿足工業(yè)應(yīng)用的需求。