王躍靈, 旺 玥, 王 琪, 王洪斌
(燕山大學 工業(yè)計算機控制工程河北省重點實驗室,河北 秦皇島 066004)
目前,許多輕型高性能的機器人廣泛采用諧波驅動器來驅動關節(jié)運動,但諧波減速器的應用引入了關節(jié)柔性,同時,一部分機器人通過采用具有彈性模塊的關節(jié)來提高人機交互過程的安全性,關節(jié)柔性的引入使機器人關節(jié)成為一種欠驅動系統(tǒng),增加了控制器設計的難度。為了提高機器人性能,需要研究針對柔性關節(jié)機器人的高性能控制器,而柔性關節(jié)機器人動力學模型參數(shù)的準確性對其至關重要。因此,為了建立精確的柔性關節(jié)機器人動力學模型,需要有較好的參數(shù)辨識方法[1]。傳統(tǒng)的參數(shù)辨識方法主要有最小二乘法[2]、遺傳算法[3]、粒子群算法[4,5]等。最小二乘法的優(yōu)點是辨識精度高,缺點是較大規(guī)模的計算量導致沒有良好的實時性。文獻[6]利用遺傳算法對工業(yè)機器人動力學模型進行參數(shù)辨識,該算法可以有效地避免局部最優(yōu)解,但仍存在收斂慢,計算量大的缺點;文獻[7]利用粒子群算法對機械臂各關節(jié)動力學參數(shù)進行參數(shù)辨識,但傳統(tǒng)的粒子群算法仍存在搜索空間有限,易陷入局部最優(yōu)解等問題。
為了提高辨識精度,避免算法陷入局部最優(yōu)解,本文針對柔性關節(jié)機器人的動力學模型,首先確定了需要辨識的動力學參數(shù),在傳統(tǒng)粒子群算法的基礎上,提出了一種遺傳算法(GA)與粒子群算法(particle swarm optimization, PSO)結合的自適應粒子群遺傳算法(adaptive particle swarm optimization-genetic algorithm, APSO-GA)。通過仿真實驗表明:該算法擁有更好的收斂速度和尋優(yōu)精度。同時利用旋轉柔性關節(jié)(rotary flexible joint)實驗平臺進行了柔性關節(jié)機器人動力學參數(shù)辨識實驗,實驗結果驗證了該算法的有效性。
本文以如圖1所示單自由度柔性關節(jié)機器人為研究對象,關節(jié)柔性部分采用Spong[8]提出的經典簡化模型,將電機和關節(jié)之間視為具有常值系數(shù)的線性扭轉彈簧,同時考慮系統(tǒng)中粘滯阻尼,其動力學方程如下:
(1)
其中:q,θ分別為負載側與電機側的角位移;I,J分別為負載側與電機側的等效轉動慣量;Dq,Dθ分別為負載側與電機側的阻尼系數(shù);G(q)為負載側重力項;K為關節(jié)剛度系數(shù);T為電機輸出力矩。
圖1 柔性關節(jié)簡化模型Fig.1 Flexible joint simplified model
由于基于模型的辨識方法需要獲取輸入端輸出端角加速度信息,而角加速度通常由角位移的二階微分獲得,微分過程中會引入微分噪聲,降低了參數(shù)辨識精度。為解決由于微分項帶來的辨識算法噪聲問題,Flaccoa等[9]在柔性關節(jié)參數(shù)辨識領域提出了基于積分作用的降階辨識方法。該方法首先對式(1)兩側分別積分得到:
(2)
其中t為時間。
將式(2)中兩式相加可得:
(3)
最后,根據式(3)模型,定義參數(shù)矩陣與變量矩陣為:
(4)
PSO算法對于Hepper的模擬鳥群(魚群)的模型進行了修正,以使粒子能夠飛向解空間,并在最優(yōu)處降落,從而得到粒子群優(yōu)化算法[10],其主要內容概括如下:在粒子群算法中,每個優(yōu)化問題的解都是搜索空間中的一個粒子。所有的粒子都有一個由被優(yōu)化的函數(shù)決定的適應度函數(shù),每個粒子還有一個速度v決定它們飛行的方向和距離。粒子群算法將可行解空間初始化為一群隨機粒子,然后粒子根據當前的最優(yōu)粒子在解空間中搜索最優(yōu)解。在每一次迭代中,粒子都是通過跟蹤2個“極值”來更新自己,一個粒子是自身找到的最優(yōu)解,稱為個體極值;另一個極值是整個群體找到的最優(yōu)解,稱為全局極值。如果粒子的群體規(guī)模為M,目標搜索空間為D維,則第i(i=1,2,…,M)個粒子的位置可表示為Xi,它所經過的“最好”位置記為Pi,速度用Vi表示,群體中“最好”粒子的位置為Pg,那么粒子i將根據下面的公式來更新自己的速度和位置:
(4)
式中:d=1,2,…,D;ω稱為慣性因子;C1與C2稱為加速度常數(shù),一般取C1=C2∈[0,4];random(0,1)表示區(qū)間[0,1]上的隨機數(shù)。
粒子在解空間內不斷跟蹤個體極值與全局極值進行搜索,直到達到規(guī)定的迭代次數(shù)或滿足規(guī)定的誤差標準為止。粒子在每一維飛行的速度不能超過算法設定的最大速度Vmax。設置較大的Vmax可以保證粒子種群的全局搜索能力,Vmax較小則可以加強粒子種群的局部搜索能力。
PSO算法中,由于粒子向自身歷史最佳位置和鄰域或群體歷史最佳位置聚集,形成了粒子種群的快速趨同效應,容易出現(xiàn)陷入局部極值、早熟收斂或停滯現(xiàn)象。同時,PSO的性能也依賴于算法參數(shù),為了克服上述不足,本文提出了一種采用動態(tài)調整策略的自適應粒子群遺傳算法。
在該算法執(zhí)行過程中,隨著迭代次數(shù)的增加,慣性權重因子的數(shù)值會不斷地減少。在迭代的早期,大的慣性權重因子有利于跳出局部最優(yōu)和促進全局尋優(yōu)。在迭代的后期,小的慣性權重有利于局部尋優(yōu)而且有利于算法的收斂,因此選擇自適應調整來改進慣性權重系數(shù)以跳出局部最優(yōu),自適應慣性權重系數(shù)為:
(5)
式中:ωs,ωe分別為起始與結束時的慣性權重;g為當前迭代次數(shù);G為總迭代次數(shù)。粒子群算法中,2個學習因子分別代表了粒子自身的學習能力和向群體學習的能力,在迭代早期,較大的C1和較小的C2可以讓粒子擁有更好的全局搜索能力,在迭代的后期,較小的C1和較大的C2讓粒子擁有較差的自我學習能力和較強的種群學習能力,能促進算法的收斂,因此本文學習因子設置為如下形式:
(6)
式中C1s,C1e與C2s,C2e分別為第1個學習因子與第2個學習因子的起始值與結束值。
在更新粒子速度與位置后,為避免粒子群算法迭代過程中多樣性損失而陷入局部最優(yōu)解的情況,引入遺傳算法的選擇、交叉和變異機制,首先對粒子進行選擇操作,傳統(tǒng)的遺傳算法大多采用輪盤賭博的形式,但在迭代初始化階段,粒子初始值的隨機性比較大,若采用輪盤賭博的形式易陷入局部最優(yōu),喪失種群的多樣性[11~18],本文對選擇算子做出了改進,首先對種群進行4等分,適應度好的前3/4完全保留進入下次迭代,后1/4用最好的個體進行完全復制,以提高算法的精度和效率。
同時,考慮傳統(tǒng)的固定交叉概率,在進化前期種群因為隨機取值造成個體差異性較大,此時進行交叉操作并不能保留優(yōu)良性狀,到了進化后期,種群間差異性較小,選擇較大的交叉概率更有利于跳出局部最優(yōu),因此,本文引入改進的交叉機制,當相似度小于r時進行交叉操作,相似度大于r時不進行交叉操作,改進的自適應交叉臨界值為:
(7)
結合遺傳算法的變異操作,傳統(tǒng)的遺傳算法變異具有一定的盲目性,可能將優(yōu)良性狀變異為較差的性狀,本文參考蜂群進化思想,設計了新型的變異概率算子,若變異后性狀比父系性狀差,則保留原始基因,從而能將優(yōu)良性狀更好的遺傳到下一代,其自適應變異概率公式為:
(8)
式中:Pm為當前變異概率;Pmax,Pmin為最大與最小變異概率;f,favg為當前與父系適應度函數(shù)值。
具體改進算法的計算步驟如下:
Step 1:粒子群初始化,包括粒子速度與位置初始化及個體最優(yōu)與全局最優(yōu)的初始化。
Step 2:計算自適應的慣性權重系數(shù)ω,學習因子C1,C2。
Step 3:按公式更新粒子速度與位置,并對越限粒子做邊界化處理。
Step 4:選擇:保留適應度好的前3/4,后1/4用最好的個體進行完全復制。
Step 5:交叉:采用改進的自適應交叉臨界值對粒子進行交叉操作。
Step 6:變異:采用變異概率算子進行變異操作。
Step 7:更新個體最優(yōu)值與全局最優(yōu)值。
Step 8:判斷是否達到最大迭代次數(shù),如果是則轉Step 9,否則轉Step 2。
Step 9:輸出全局最優(yōu)解。
本文采用自適應粒子群算法針對式(1)的單自由度柔性關節(jié)模型進行了參數(shù)辨識,定義適應度函數(shù)為:
(9)
實驗中分別用PSO算法、GA算法、ABC算法對柔性關節(jié)參數(shù)進行辨識,并與APSO-GA算法進行比較,為獲得精確數(shù)據,其中每種算法的粒子群數(shù)目n選為60,每種算法分別進行100次迭代。
初始化參數(shù):學習因子取為C1s=2.5,C1e=0.5,C2s=0.5,C2e=2.5;自適應慣性權重系數(shù)為ωs=0.9,ωe=0.4;變異概率最大為pmax=0.2,最小為pmin=0.001,ABC、GA、PSO、APSO-GA等4種算法的其它參數(shù)設置相同,結果如圖2至圖7所示。
圖2 參數(shù)Dq辨識結果Fig.2 Identification results of parameter Dq
圖3 參數(shù)I辨識結果Fig.3 Identification results of parameter I
圖4 參數(shù)Dθ辨識結果Fig.4 Identification results of parameter Dθ
圖5 參數(shù)J辨識結果Fig.5 Identification results of parameter J
圖6 參數(shù)Gq辨識結果Fig.6 Identification results of parameter Gq
圖7 參數(shù)K辨識結果Fig.7 Identification results of parameter K
從圖2至圖7可以看出,相比ABC、GA、PSO算法,APSO-GA不僅在前期擁有更好的辨識速度,同時后期的辨識精度也要高于其他算法,在第70次迭代時APSO-GA已經收斂到實際值左右,而且相比其它3種算法,APSO-GA的最終辨識結果與實際最為接近,同時避免了陷入局部最優(yōu)解。因此,用APSO-GA算法辨識柔性關節(jié)機器人動力學參數(shù)的效果要明顯優(yōu)于ABC、GA與PSO,為了進一步說明本文算法的優(yōu)越性,表1~表2分別給出了4種算法對各參數(shù)的辨識結果與相對誤差。
從表1、表2中可以看出與ABC、GA、PSO相比,APSO-GA算法擁有更高的辨識精度,其整體性能要優(yōu)于其它3種算法,對于多峰值辨識問題,APSO-GA可以找到理論最優(yōu)值而不會陷入局部最優(yōu)解,算法穩(wěn)定性更好,精度更高。
表1 不同算法參數(shù)辨識結果Tab.1 Different algorithms parameter identification results
表2 不同算法參數(shù)辨識相對誤差Tab.2 Relative errors in parameter identification of different algorithms
為了進一步驗證APSO-GA算法的優(yōu)越性,本文利用加拿大Quanser公司的旋轉柔性關節(jié)實驗平臺進行了參數(shù)辨識實驗,實驗裝置由伺服驅動平臺、基座與輸出連桿3部分組成,如圖8所示。
圖8 旋轉柔性關節(jié)實驗平臺Fig.8 Rotating flexible joint experimental platform
設備基座由直流伺服電機驅動,與水平面平行,輸出連桿通過兩個彈性元件與基座固定連接,從而產生關節(jié)柔性,負載側與電機側均安裝有光電編碼器,通過采集編碼器信息實時讀取相關位置與速度信息,由于連桿只做水平旋轉運動,故辨識模型不包含重力項,同時考慮到負載側粘滯阻尼趨近于零,其受噪聲影響嚴重,故本實驗只針對I、J、Dθ、K等4個參數(shù)進行辨識。
實際測量時,噪聲干擾和動力學建模誤差會影響動力學模型參數(shù)得辨識結果,因此,本文使用基頻為0.05 Hz的周期性傅里葉級數(shù)作為關節(jié)的激勵軌跡,為實現(xiàn)關節(jié)軌跡的控制要求,采用PD控制方式,同時為了避免由于積分作用造成的噪聲累計,總的測量時間限制為8 s。
通過Q-PID運動采集卡采集系統(tǒng)辨識所需的電機側與連桿側傳感器信號,采樣周期為2 ms。關節(jié)力矩是通過讀取關節(jié)電機電壓數(shù)據并計算得出的,其關系如下:
(10)
式中:ηg為變速箱效率;Kg為總傳動比;ηm為電機效率;Kt為電機轉矩常數(shù);Vm為輸入電壓;Km為電動機反電動勢常數(shù);Rm為電機電樞常數(shù)。運用ABC、GA、PSO、APSO-GA等4種算法分別對同一組實驗數(shù)據進行辨識,結果如圖9至圖12所示。
圖9 參數(shù)I辨識曲線Fig.9 Identification results of parameter I
圖10 參數(shù)Dθ辨識曲線Fig.10 Identification results of parameter Dθ
圖11 參數(shù)J辨識曲線Fig.11 Identification results of parameter J
圖12 參數(shù)K辨識曲線Fig.12 Identification results of parameter K
從圖9至圖12可以看出,APSO-GA在40次迭代的時候已經收斂到實際值附近,而且相比其它3種算法,APSO-GA擁有更好的辨識精度,并且避免了陷入局部最優(yōu)解,為了進一步驗證各算法的辨識精度,表3至表4給出了各算法的辨識結果與相對誤差。
表3 不同算法參數(shù)辨識結果Tab.3 Different algorithms parameter identification results
由辨識結果可以看出,相對于仿真結果,由于實驗中噪聲等因素影響,參數(shù)辨識精度要略低于仿真結果,但在同等條件下,相比于ABC、GA、PSO 3種算法,APSO-GA擁有更高的辨識精度。采用APSO-GA算法,辨識曲線能夠快速收斂到穩(wěn)定值,辨識結果更接近模型給定參數(shù)。由表4可以看出,針對柔性關節(jié)動力學模型參數(shù)辨識問題,APSO-GA收斂結果與誤差均優(yōu)于其它3種算法,進一步說明了APSO-GA算法具有收斂精度高的優(yōu)點。
表4 不同算法參數(shù)辨識相對誤差Tab.4 Relative errors in parameter identification of different algorithms
針對柔性關節(jié)機器人動力學參數(shù)辨識問題,將粒子群算法與遺傳算法融合,并在其基礎上引入動態(tài)調整策略,設計了一種自適應混合算法,并利用MATLAB進行仿真實驗,驗證了APSO-GA算法應用于柔性關節(jié)模型參數(shù)辨識的有效性。為了進一步說明算法的可行性,利用旋轉柔性關節(jié)實驗平臺進行了實驗驗證,結果表明,APSO-GA算法在收斂速度和辨識精度上均有優(yōu)勢,將APSO-GA算法用于柔性關節(jié)動力學參數(shù)辨識能夠進一步提高模型的準確性。