杜其通 劉朝雨 閔 劍 費燕瓊
(上海交通大學(xué)機器人研究所 上海 200240)
工業(yè)機器人已經(jīng)成為現(xiàn)代人類社會不可或缺的自動化工具,提高其控制精度一直是國內(nèi)外研究的熱點。傳統(tǒng)的PID控制已經(jīng)無法滿足實際工作的精度要求,基于模型的控制方法成為主流?;谀P偷目刂破餍枰詸C器人動力學(xué)參數(shù)作為先驗值[1],但是機器人是一個多變量、強耦合的非線性系統(tǒng)[2],通過數(shù)學(xué)計算獲得動力學(xué)模型很困難,一般采用實驗辨識方法。
國內(nèi)外研究人員提出了很多機器人參數(shù)辨識方法。Gautier等人[3]提出了串聯(lián)機器人最小參數(shù)集的推導(dǎo)方法,能夠減小辨識的運算量,提高算法的魯棒性。Calafiore 等人[4]采用遞推的最小二乘法進行參數(shù)運算,提高了算法效率。丁亞東等人[5]提出了一種分布辨識方法,降低了辨識方程的復(fù)雜性。智能控制算法促進了機器人動力學(xué)參數(shù)辨識的發(fā)展,陳柏等人[1]采用人工蜂群算法,禹鑫燚等人[6]采用粒子群算法,謝宏[7]采用改進的遺傳算法進行辨識,均取得了不錯的辨識效果。
為了提高工業(yè)機器人的動力學(xué)模型辨識精度,本文結(jié)合近年興起的機器學(xué)習(xí)、深度學(xué)習(xí)算法,提出了一種基于人工神經(jīng)網(wǎng)絡(luò)的動力學(xué)模型辨識方法。使用線型整流單元(rectified linear unit, ReLU)函數(shù)作為神經(jīng)網(wǎng)絡(luò)的激活函數(shù),使用Dropout方法避免神經(jīng)網(wǎng)絡(luò)訓(xùn)練中容易產(chǎn)生的過擬合現(xiàn)象,采用有限項傅里葉多項式作為激勵軌跡。最后,為了驗證本文提出的方法,將實驗結(jié)果與傳統(tǒng)最小二乘法結(jié)果進行了對比。
對于一個n關(guān)節(jié)的機器人系統(tǒng),傳統(tǒng)辨識方法將其動力學(xué)模型表示為
(1)
利用人工神經(jīng)網(wǎng)絡(luò)對機器人動力學(xué)參數(shù)進行辨識時,實際是將整個機器人系統(tǒng)看作一個如圖1所示的黑箱模型,輸入為機器人的關(guān)節(jié)角度、角速度和角加速度,輸出為各關(guān)節(jié)的力矩矢量。因為動力學(xué)參數(shù)辨識的目的主要是計算關(guān)節(jié)力矩,將計算的力矩用于機器人的模型控制系統(tǒng),很多時候?qū)τ趯嶋H動力學(xué)參數(shù)并不關(guān)心。
圖1 機器人系統(tǒng)黑箱模型
使用如圖2所示的全連接神經(jīng)網(wǎng)絡(luò)對n自由度機器人進行辨識時,需要將n個關(guān)節(jié)的角度、角速度和角加速度共計3n個參數(shù)作為輸入,n個關(guān)節(jié)力矩作為輸出。大多數(shù)串聯(lián)機器人模型并不復(fù)雜,因此只需要1~3個隱藏層。每個隱藏層的神經(jīng)元個數(shù)不宜過多,避免出現(xiàn)過擬合現(xiàn)象。
圖2 全連接神經(jīng)網(wǎng)絡(luò)
傳統(tǒng)的BP(back propagation)神經(jīng)網(wǎng)絡(luò)一般選用logistic sigmoid函數(shù)f(x)=(1+e-x)-1作為隱藏層神經(jīng)元的激活函數(shù),但是該函數(shù)的廣泛飽和性使得利用梯度下降算法對神經(jīng)網(wǎng)絡(luò)進行優(yōu)化時容易出現(xiàn)梯度消失的情況。研究人員發(fā)現(xiàn)線性整流函數(shù)f(x)=max(0,x)有一定的生物學(xué)原理[8],將其作為激活函數(shù)的神經(jīng)網(wǎng)絡(luò)優(yōu)化收斂速度更快,單次迭代的運算量更小[9]。神經(jīng)網(wǎng)絡(luò)的輸出單元選用線性單元。
設(shè)計人工神經(jīng)網(wǎng)絡(luò)時,除了其結(jié)構(gòu)設(shè)計,最重要的就是損失函數(shù)和優(yōu)化方法的選用。使用神經(jīng)網(wǎng)絡(luò)對機器人系統(tǒng)進行辨識選用均方誤差(MSE)作為損失函數(shù)。
(2)
神經(jīng)網(wǎng)絡(luò)一般選用批量梯度下降進行迭代求解,批量梯度下降與傳統(tǒng)的梯度下降不同的是前者每次計算梯度時只選用數(shù)據(jù)集中的一部分?jǐn)?shù)據(jù)(Batch)。批量梯度下降能夠大大減小迭代的運算量,同時使迭代不容易陷入局部最優(yōu)點之中?,F(xiàn)代人工神經(jīng)網(wǎng)絡(luò)的優(yōu)化方法一般選用批量梯度下降的變體,其區(qū)別在于計算下一次權(quán)重更新時考慮上一步的權(quán)重更新。Tieleman等人[10]提出了RMSProp優(yōu)化算法,已被證明是一種有效且實用的人工神經(jīng)網(wǎng)絡(luò)優(yōu)化算法。
權(quán)重W的更新方法如式(3)所示:
VW←βVW+(1-β)▽W(xué)
W←W-αVW
(3)
式中,W是神經(jīng)網(wǎng)絡(luò)的權(quán)值;β是RMSProp算法引入的超參數(shù),一般取0.9;▽W(xué)是W的梯度;α是學(xué)習(xí)率。
人工神經(jīng)網(wǎng)絡(luò)模型通常都很擅長擬合訓(xùn)練數(shù)據(jù),但真正的難點在于泛化,而不是擬合。傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)一般采用L1或者L2正則化以防止過擬合,本文采用Dropout[11]模型來提高辨識模型的泛化能力。
使用人工神經(jīng)網(wǎng)絡(luò)對機器人系統(tǒng)進行動力學(xué)辨識時,輸入軌跡需要具有足夠的代表性,盡可能多地包含機器人的特征信息。另外,還要考慮實際測量力矩的噪聲對模型辨識產(chǎn)生的影響。本文采用Swevers等人[12]提出的有限項傅里葉級數(shù)軌跡,如式(4)所示。這種方法將軌跡優(yōu)化轉(zhuǎn)化為對傅里葉系數(shù)的優(yōu)化(式(5)),同時需要考慮機器人對關(guān)節(jié)角、角速度和角加速度有限制(式(6))。傅里葉項數(shù)N取3~5,基頻ω避開機器人的共振頻率。
(4)
(5)
(6)
式中,K是機器人的動力學(xué)矩陣,通常由牛頓歐拉法遞推得到;cond(K)表示矩陣K的條件數(shù),σ0(K)表示矩陣K的最小奇異值,λ1和λ2分別表示其權(quán)值。
實際測量到的機械臂的數(shù)據(jù)可能會有較大的噪聲,影響辨識準(zhǔn)確度,在這種情況下需要先將數(shù)據(jù)進行濾波處理,提高數(shù)據(jù)的平滑性。另外,實驗發(fā)現(xiàn),機械臂關(guān)節(jié)運動換向時將會產(chǎn)生較大的誤差,剔除換向點附近的一些數(shù)據(jù)點,可以有效提升辨識的準(zhǔn)確性,加快算法的收斂。因為運動數(shù)據(jù)與力矩的關(guān)系并不受時間順序影響,隨機打亂神經(jīng)網(wǎng)絡(luò)輸入的運動數(shù)據(jù),同時對應(yīng)打亂輸出的力矩信息,可以減小模型過擬合情況發(fā)生的可能性。
受機器人控制系統(tǒng)的影響及其傳感器的限制,測量得到的各軸運動參數(shù)值可能有較大的差異,將數(shù)據(jù)進行標(biāo)準(zhǔn)化后再輸入神經(jīng)網(wǎng)絡(luò)可以更快地迭代收斂。
X←X-mean(X)
X←X/std (X)
(7)
式中,X是神經(jīng)網(wǎng)絡(luò)訓(xùn)練所用到的數(shù)據(jù),mean(X)為數(shù)據(jù)的均值,std(X)表示數(shù)據(jù)的標(biāo)準(zhǔn)差。
某公司生產(chǎn)的6自由度機械臂如圖3所示。使用深度學(xué)習(xí)框架Keras[13]建立本文第1節(jié)和第2節(jié)中介紹的人工神經(jīng)網(wǎng)絡(luò)模型,為了避免過擬合現(xiàn)象,添加Dropout正則化層。
在實際進行神經(jīng)網(wǎng)絡(luò)辨識時,理論上提供的訓(xùn)練數(shù)據(jù)越多,越能辨識到模型更多的特征,模型就會擁有更強的泛化能力。本文利用2.2節(jié)中提到的激勵軌跡的設(shè)計方法,盡可能多地收集機械臂的實際數(shù)據(jù),并將數(shù)據(jù)分為3部分,分別是訓(xùn)練集(70%)、驗證集(15%)和測試集(15%)。訓(xùn)練過程中監(jiān)控?fù)p失函數(shù)的大小及訓(xùn)練精確度,如圖4和圖5所示??梢钥闯?,隨著迭代的進行,模型的損失函數(shù)逐漸下降接近于0,精確度逐漸達(dá)到最大值,在第100輪左右的時候達(dá)到收斂,精度不再變化。
圖3 6自由度機械臂
圖4 神經(jīng)網(wǎng)絡(luò)訓(xùn)練精度
圖5 神經(jīng)網(wǎng)絡(luò)訓(xùn)練損失
為了驗證本文提出算法的準(zhǔn)確性,采用傳統(tǒng)的最小二乘法結(jié)合庫倫粘性摩擦模型,利用相同的實驗數(shù)據(jù)進行辨識,在相同的驗證集上進行驗證。將2種算法得到的力矩曲線放在一起,結(jié)果如圖6所示。
圖6 各關(guān)節(jié)力矩計算結(jié)果
從圖6可以看出,2種算法對于實際力矩都有較好的跟隨效果。通過觀察局部放大圖發(fā)現(xiàn),本文提出的神經(jīng)網(wǎng)絡(luò)算法對于實際力矩的擬合程度更高,尤其是在峰值附近,對于實際力矩的跟隨效果更好,曲線更加平滑,更加適合控制器的設(shè)計。其中關(guān)節(jié)1的誤差曲線如圖7所示,可以看出,采用神經(jīng)網(wǎng)絡(luò)辨識算法所計算出來的力矩誤差比傳統(tǒng)算法更小,峰值誤差更小,曲線更加平滑。值得一提的是,曲線中有一些誤差跳變較大的點,這些點主要是在機械臂關(guān)節(jié)速度為0的點附近,因計算相對誤差時分母較小,所得相對誤差結(jié)果較大,對于實際使用并沒有影響。
圖7 關(guān)節(jié)1力矩誤差曲線
如式(8)所示,動力學(xué)辨識的匹配度δ可以用計算力矩τi與實驗測量力矩τ進行計算[14]。
(8)
2種方法的匹配度計算結(jié)果如表1所示。從表1可以看出,神經(jīng)網(wǎng)絡(luò)模型的匹配度相對于傳統(tǒng)的最小二乘模型能夠平均提升超過5%。
近年來各種優(yōu)化算法越來越多地應(yīng)用在機器人辨識領(lǐng)域,比如結(jié)合非線性摩擦模型的人工蜂群算法取得了較好的實驗結(jié)果,平均精度可達(dá)89%[14]。本文提出的算法的平均精度為90.70%,略好于人工蜂群算法。
表1 各關(guān)節(jié)辨識匹配度
本文提出的辨識方法的精度相對于傳統(tǒng)最小二乘辨識法有一定的提升,有效減小了傳統(tǒng)辨識模型的出現(xiàn)的力矩波動的情況,平滑性更好。頻繁波動的力矩容易對控制器造成損傷,因此本文提出的方法更加適合于控制器的設(shè)計。在實際控制系統(tǒng)中將神經(jīng)網(wǎng)絡(luò)模型和傳統(tǒng)的最小二乘辨識模型結(jié)合使用能夠得到更好的效果。
機器人的摩擦力與多個外部因素相關(guān),針對摩擦力的建模及辨識一直是一大難題。近年來提出很多算法(如人工蜂群算法[14])的辨識精度比較依賴其摩擦力模型的選擇,不同工作環(huán)境的機器人的摩擦力模型不完全一致,選取不合適的模型可能對辨識精度有害甚至出現(xiàn)運算不收斂的情況。本文提出的方法不需要對摩擦力進行專門的建模,對于不同工作環(huán)境的機器人具有很強的適應(yīng)性和可移植性,并能保證較高的精度。因此,本文提出的方法相對于目前較新的辨識方法也有一定的優(yōu)勢。
本文針對傳統(tǒng)動力學(xué)參數(shù)辨識算法精度不高的問題,提出了基于人工神經(jīng)網(wǎng)絡(luò)的辨識方法,使用ReLU激活函數(shù),結(jié)合RMSProp算法和Dropout方法,算法泛化能力強,迭代速度快。設(shè)計了實驗與傳統(tǒng)最小二乘法進行對比,結(jié)果表明,本文提出的方法能夠明顯提高力矩計算的平滑性,準(zhǔn)確性相對于傳統(tǒng)方法提高超過5%。本算法不需要對系統(tǒng)摩擦力進行建模,具有較好的適應(yīng)性。