劉恩雨 ,蔣 強(qiáng)
(沈陽理工大學(xué),遼寧 沈陽 110168)
機(jī)器學(xué)習(xí)是一種通過數(shù)據(jù)對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行優(yōu)化與自動(dòng)改進(jìn)的人工智能科學(xué),其由于具有速度快、準(zhǔn)確率高、應(yīng)用領(lǐng)域廣的特點(diǎn),受到了學(xué)者們的廣泛關(guān)注,如今機(jī)器學(xué)習(xí)在電子商務(wù)、醫(yī)療、金融等領(lǐng)域被廣泛應(yīng)用[1]。
隨著人工智能(Artificial Intelligence, AI)研究的深入,近年來機(jī)器學(xué)習(xí)方法在故障診斷領(lǐng)域中的應(yīng)用也越來越多。Soltani等[2]使用機(jī)器學(xué)習(xí)對(duì)制冷系統(tǒng)進(jìn)行故障診斷;Dangut等[3]使用機(jī)器學(xué)習(xí)模型對(duì)飛機(jī)部件進(jìn)行故障預(yù)測(cè);Liu等[4]使用深度學(xué)習(xí)對(duì)機(jī)床進(jìn)行故障診斷與健康管理工作。參考前人的研究成果,本文將ResNet網(wǎng)絡(luò)應(yīng)用于UR5機(jī)械臂的故障診斷中。
為了進(jìn)行故障診斷研究,本文對(duì)UR5機(jī)械臂進(jìn)行運(yùn)動(dòng)仿真建模。其中,UR5機(jī)械臂的DH參數(shù)如表1所示,α表示連桿扭轉(zhuǎn)角,a表示連桿長度,d表示連桿偏距,θ表示關(guān)節(jié)轉(zhuǎn)角?;谝陨蠀?shù)對(duì)UR5機(jī)械臂進(jìn)行運(yùn)動(dòng)學(xué)仿真,其過程如公式(1)與公式(2)所示。
表1 DH參數(shù)
利用公式(1)與公式(2),將機(jī)械臂DH參數(shù)代入可得相鄰坐標(biāo)系的變換矩陣,從而可求得末端坐標(biāo)在極坐標(biāo)系的變換矩陣T。[x,y,z,rx,ry,rz]表示UR5機(jī)械臂的末端點(diǎn)的坐標(biāo),前三個(gè)值[x,y,z]為三維笛卡爾坐標(biāo),表示機(jī)械臂的空間位置;后三個(gè)值[rx,ry,rz]為坐標(biāo)旋轉(zhuǎn)向量,表示空間姿態(tài)。如公式(3)所示,旋轉(zhuǎn)矩陣和旋轉(zhuǎn)向量之間可以通過羅德里格斯(Rodrigues)變換進(jìn)行轉(zhuǎn)換,并求得六值坐標(biāo),完成正解。
本文機(jī)械臂仿真利用MATLAB中機(jī)器人工具箱實(shí)現(xiàn),其中,x、y、z表示機(jī)械臂在工作空間中的位置,R、P、Y表示機(jī)械臂位姿。其仿真效果圖如圖1所示。
圖1 UR5機(jī)械臂MATLAB仿真圖
本文ResNet網(wǎng)絡(luò)中含有卷積模塊、批量歸一化模塊(BatchNorm)、最大池化模塊、激活函數(shù)模塊與全連接模塊。其中,卷積模塊即互相關(guān)運(yùn)算模塊(Cross-Correlation),其通過卷積核在數(shù)據(jù)上滑動(dòng)的方式,使其與數(shù)據(jù)進(jìn)行互相關(guān)運(yùn)算,達(dá)到提取數(shù)據(jù)信息的目的。批量歸一化模塊將每層的梯度規(guī)范到一個(gè)固定值,可以使模型的收斂速度更快。最大池化模塊可以對(duì)卷積層所提取的信息進(jìn)行進(jìn)一步采樣,從而去除冗余信息。激活函數(shù)模塊為網(wǎng)絡(luò)中加入了非線性元素,本文使用的激活函數(shù)為ReLU,該函數(shù)可以去除卷積結(jié)果中的負(fù)值且正值保留不變。全連接模塊可以對(duì)以上模塊所提取到的信息進(jìn)行分類,最終分辨出輸入數(shù)據(jù)是否正常。
圖2(a)為本文ResNet網(wǎng)絡(luò)中的殘差塊,其由兩個(gè)3×3卷積層[5]、兩個(gè)BatchNorm層[6]、兩個(gè)ReLU層組成。圖2(b)為本文ResNet網(wǎng)絡(luò)結(jié)構(gòu)圖,本文對(duì)UR5機(jī)械臂電機(jī)故障進(jìn)行檢測(cè),即將正常數(shù)據(jù)標(biāo)號(hào)為0,故障數(shù)據(jù)標(biāo)號(hào)為1,對(duì)其進(jìn)行二分類故障診斷實(shí)驗(yàn)。將數(shù)據(jù)送入網(wǎng)絡(luò)后,輸入數(shù)據(jù)首先經(jīng)過7×7的卷積層,經(jīng)過BatchNorm層與最大池化層后進(jìn)入殘差塊,最終將提取到的信息送入全連接層進(jìn)行分類。其數(shù)學(xué)公式表達(dá)如式(4),其中,H(x)為系統(tǒng)殘差單元輸出,F(xiàn)(x,{WI})為殘差單元所學(xué)習(xí)到的內(nèi)容,x為網(wǎng)絡(luò)輸出。與普通網(wǎng)絡(luò)不同,殘差網(wǎng)絡(luò)引入了跳躍鏈接使網(wǎng)絡(luò)學(xué)習(xí)到的特征變成殘差,使網(wǎng)絡(luò)可以訓(xùn)練得更深,避免了梯度爆炸或梯度消失現(xiàn)象。
圖2 ResNet網(wǎng)絡(luò)模型
本文所有實(shí)驗(yàn)均采用同一臺(tái)硬件設(shè)備進(jìn)行,其中操作系統(tǒng)為Windows 10,GPU為NVIDIA GeForce GTX1080Ti。機(jī)器學(xué)習(xí)訓(xùn)練使用的是Pytorch框架,編程語言使用的是Python。在訓(xùn)練中采用的優(yōu)化器為Adam,學(xué)習(xí)率為0.001;Batchsize為5;epoch為200;損失函數(shù)為交叉熵?fù)p失;將數(shù)據(jù)集按8∶1∶1分為訓(xùn)練集、驗(yàn)證集和測(cè)試集。實(shí)驗(yàn)結(jié)果如表2所示,在訓(xùn)練200個(gè)epoch后,模型的訓(xùn)練集與測(cè)試集的準(zhǔn)確率最終收斂到98%,損失值最終穩(wěn)定在0.015。
表2 實(shí)驗(yàn)結(jié)果
除此之外,通過對(duì)比實(shí)驗(yàn)來驗(yàn)證方法的有效性,本文利用Python分別對(duì)LeNet[7]、AlexNet[8]、VGG[9]網(wǎng)絡(luò)進(jìn)行建模,按上文所述方法對(duì)UR5機(jī)械臂進(jìn)行故障診斷實(shí)驗(yàn),最后與ResNet與進(jìn)行對(duì)比。其對(duì)比結(jié)果如表3所示,結(jié)果表明:ResNet網(wǎng)絡(luò)準(zhǔn)確率比其他模型高1%~2%,損失值也較小,表明ResNet在本實(shí)驗(yàn)中與真實(shí)標(biāo)號(hào)之間的差距最小,故障診斷效果最佳。
表3 對(duì)比實(shí)驗(yàn)結(jié)果
為了驗(yàn)證ResNet各部分在網(wǎng)絡(luò)模型中的必要性,本文進(jìn)行了消融實(shí)驗(yàn),將各網(wǎng)絡(luò)模塊逐一去除并進(jìn)行對(duì)比,消融實(shí)驗(yàn)結(jié)果如表4所示。表4中分別將7×7卷積層、殘差塊去除,可以明顯觀察到在去除各部分后,由于沒有跳躍鏈接,ResNet的準(zhǔn)確率均有下降,其損失值也均有提升,該現(xiàn)象表明去掉對(duì)應(yīng)部分后,模型得出的結(jié)論與真實(shí)標(biāo)號(hào)之間的差距均有擴(kuò)大,實(shí)驗(yàn)證明本文網(wǎng)絡(luò)結(jié)構(gòu)為最優(yōu)結(jié)構(gòu)[10]。
表4 消融實(shí)驗(yàn)結(jié)果
本文提出了一種基于ResNet網(wǎng)絡(luò)的UR5機(jī)械臂故障診斷方法。利用MATLAB機(jī)器人工具箱對(duì)UR5機(jī)械臂進(jìn)行仿真建模,并采用ResNet網(wǎng)絡(luò)對(duì)數(shù)據(jù)進(jìn)行故障診斷實(shí)驗(yàn)。實(shí)驗(yàn)表明:在對(duì)UR5機(jī)械臂進(jìn)行電機(jī)故障檢測(cè)時(shí),本文所提出的模型具有更高的精度與更低的損失值,該故障診斷方法有效。