趙 瑜
(江蘇信息職業技術學院 基礎課部,江蘇 無錫 214153)
精確求解6R工業機器人逆運動學一直是機器人領域的難題[1]。目前,主要有三種求解6R機器人逆運動學的方法:幾何解法、解析法和數值法。幾何解法具有表達形象、直觀的優點,但對于三維空間內機器人的逆運動學問題,該方法求解會變得更加復雜,因此想要得到精確解便非常困難,缺乏通用性[2]。對于機器人幾何結構不滿足Pieper準則時,采用解析法求解將會異常復雜,無法求解得到封閉形式的逆解。此時,只能采用數值解法求得近似解[3]。
數值方法主要分為兩類:直接數值法求解和間接數值法求解。直接數值法求解是根據機器人運動學關系構建迭代方程式,結合數值計算方法,可迭代求解出近似解。這一類方法中,牛頓迭代法[2,4]及其改進算法[5]運用廣泛。而間接數值法主要通過將機器人運動學關系進行轉化,構造成適當的目標函數,采用智能優化算法搜索求解[6-7]。此外,基于神經網絡和訓練近似模型的間接方法也有應用[8-10]。然而,直接數值法的迭代求解結果受初始值的設定比較敏感,很容易出現無法收斂的情況。而間接數值法中智能優化算法的迭代后期收斂性較差,求解較高精度的解所需迭代次數較長,神經網絡和近似模型算法訓練庫的生成計算量非常大,且模型建立過程復雜。
由于智能優化算法在全局上具有較強的尋優能力,牛頓迭代法具有收斂速度快、精度自校正的優點。本文提出一種基于智能優化算法和改進牛頓迭代法的組合算法,用于求解一般6R機器人逆解。組合算法通過對目標函數設置閾值,采用布谷鳥算法經少量迭代求得質量較好的初始解,再將該初始解作為初值,使用改進牛頓迭代法求取高精度運動學逆解。最后通過仿真試驗和幾個智能算法求解對比,驗證了該組合算法的有效性。
根據6R機器人連桿和關節的位置關系,從機器人的底座開始,到末端執行器為止,將各連桿從小到大依次編號,并將基座定義為0號連桿。對于每個關節的編號,規定對于任意連桿i,其靠近基座方向的那一關節編號為i,而遠離基座方向的那一端為關節i+1。據此,可通過后置D-H法可依次得到6R機器人的連桿參數,如表1所示。

表1 6R機器人連桿參數
根據上表1中的連桿參數,可以獲得末端執行器在基坐標系下的表達式為:
Tend=T1·T2·T3·T4·T5·T6
(1)
上式中:Ti為4×4變換矩陣,表示第i個連桿坐標系與其前一個連桿坐標系的變換關系。變換矩陣是基于齊次坐標變換法得到,其具體表達式如下:
Ti=Rz(θi)·Tz(di)·Tx(ai)·Rx(αi)
(2)
其中各坐標變換矩陣分別如下所示:
求解機器人逆運動學就是在已知機器人末端位置Tend的條件下,求解各個關節轉角的過程。定義6R機器人的廣義速度V,它是一個6維向量,由角速度ω和線速度v共同組成。則有:
(3)
其中:J(θ)是Jacobian矩陣,該矩陣是一個6×6的矩陣。Jacobian矩陣中的行數表示機器人的自由度數量,列數代表機器人的關節數量。定義微分運動矢量D為
(4)
將上式(4)中對θ的微分改為差分的形式有:
D=J(θ)Δθ
(5)
進而有:
θn+1=θn+D·J-1(θn)
(6)
其中J-1(θ)為Jacobian矩陣的逆,為了避免J(θ)會出現不滿秩的情況,采用廣義逆矩陣代替。則求解6R機器人逆運動學可以轉化求解以下的優化問題:
minf(θ)=‖D·J-1(θ)‖2
(7)
傳統的數值迭代算法具有收斂速度快的優勢,但在求解機器人逆運動學問題時,此類方法受設定初值的影響較大,容易出現迭代發散的情況。而采用群體智能算法求解機器人逆運動學的主要問題在于迭代后期收斂速度較慢,不能有效滿足機器人設定精度要求。但是群體智能算法通過設定一定數量的種群來求解目標函數,其每次迭代都會產生大量新的解,這樣便容易獲得適合傳統的迭代算法的初始解。
結合上述兩類算法的優點,在求解6R機器人逆運動學問題時,可以使用群智能算法求解滿足一定精度的關節角作為迭代算法的初始值,然后轉用牛頓迭代算法迭代求解?;谏鲜鏊枷?,本文采用通過動態調整學習率的牛頓法結合布谷鳥算法形成一種組合算法,用于求解6R機器人逆運動學。組合算法通過設置閾值,先用布谷鳥算法尋得滿足閾值條件的低精度初始解,然后通具有動態調整學習率的牛頓法迭代,獲得高精度的逆解。
布谷鳥[11](CS)算法是通過對布谷鳥尋窩產卵這一行為模擬提出的一種群體智能優化算法。該算法的理論主要是源于布谷鳥的獨特繁殖方式——寄宿式繁殖,以及萊維隨機游走策略。上述策略可以抽象成為以下規則:
(1)每個布谷鳥每次只產一個蛋,并將其放入隨機選擇的鳥巢中孵化
(2)隨機選擇一組鳥巢,并將最佳的鳥巢保留至下一代

因此,基于上述規則的CS算法其數學表達式如下:
(8)
(9)

(10)
(11)
其中:
(12)
σv=1
(13)
在CS算法中,式(8)用于執行全局搜索,式(9)用于執行局部搜索。
牛頓法是具有二階收斂速度的尋優算法,常用于求解非線性方程組[12]。對于非線性方程F(x)=0,將其近似解記作x0,然后用泰勒公式將F(x)展開,取展開式的線性部分,并令展開式為零,便可得初步求得近似解x1,再在x1處進行泰勒展開,如此往復展開,便可求得滿足設定精度的方程解xn+1。這一過程的數學表達式為:
(14)
學習率(Learningrate)是深度學習中重要的超參數,它決定著目標函數能否收斂到局部最小值并控制著收斂的速率[13]。合適的學習率能使代價函數收斂更快,一般地,動態調整學習率能使代價函數更快收斂。常用的學習率衰減方法有分段常衰減、指數衰減、多項式衰減和余弦衰減。
引入上述學習率的思想,結合式(7),將式(6)改寫為以下的迭代形式:
θn+1=θn+Learnn·f(θn)
(15)
其中Learnn表示第n次迭代時的學習率,為了保證逆運動學的求解的精度,設計了一種指數形式學習率衰減策略,其表達如下:
(16)
其中:η0為初始學習率,其值為1;ηt為動態調整參數,其值設為0.001;N為使得迭代至設定精度所設定的總步數。
因此,上述CS和具有動態學習率的牛頓迭代法結合的6R機器人逆運動學組合算法的流程圖如圖1:

圖1 組合算法流程圖 圖2 IRB4600機器人
為了更好的地評價組合算法在求解機器人逆運動學上的性能,設置布谷鳥算法、鯨魚算法[14](WOA)和量子粒子群算法[15](QPSO)作為對比。
根據表1所示連桿參數,在MATLAB環境中利用Robotics Toolbox創建IRB4600機器人的仿真模型,如圖2所示。
在IRB4600機器人的工作空間內隨機生成一條路徑,每次在該路徑隨機取1個點分別用不同的智能算法計算適應度函數(7)。定義末端位置誤差為
(17)
設置CS、WOA、QPSO和組合算法的迭代總數均為3000,種群大小均為50,其中組合算法中閾值ε=0.2。在路徑上隨機選取30個點求解并求其平均值,結果如表2:

表2 不同算法的迭代結果
上表的結果說明,使用CS、WOA和QPSO分別對適應度函數(7)迭代3000步,能使適應度的數值收斂至0.3以下。其中CS和QPSO的收斂結果相差不大,WOA較他們略好。但這三種算法對應末端執行器的誤差均在100mm以上,這完全無法滿足機器人使用時的精度要求,這表明僅僅使用智能優化算法來求解,存在求解精度低,結果不可靠的問題。而采用本文所提出的組合算法,在迭代3000步后能使適應度函數的值迭代至10-10數量級,同時末端執行器的精度保證在10-9數量級,較布谷鳥、鯨魚算法和量子粒子群算法提升明顯。夠滿足工業應用對位置的高精度要求。
現以機器人某一時刻在生成路徑上的位姿為例,其在基坐標系下的矩陣為:
分別采用布谷鳥算法、鯨魚算法、量子粒子群算法和組合算法對上述位置所對應的適應度函數進行求解,圖3至圖6分別為CS、WOA、QPSO和本文所述算法的收斂曲線。

圖3 CS迭代求解適應度曲線 圖4 WOA迭代求解適應度曲線

圖5 QPSO迭代求解適應度曲線 圖6 組合算法迭代求解適應度曲線
從上述收斂曲線可以看出,使用各種智能算法迭代,適應度曲線在前期快速衰減。其中鯨魚算法和布谷鳥算法在前期的收縮過程中尋優能力較強,使目標函數值下降較快。但是,不同的智能算法的收斂精度差異明顯,鯨魚算法能將目標函數(7)的值收斂至0.43左右,量子粒子群算法能使其收斂至0.2左右,由表2的結果可知兩種算法的效果并不理想。對于布谷鳥算法,其收斂精度較鯨魚算法和量子粒子群算法較好,收斂時的適應度函數值為0.149,根據表2所示的結果可以得出,這一數量級下的適應度函數值還無法滿足末端執行器對位置精度的要求,因此單純地采用智能算法求解,效果并不理想。
圖6為組合算法迭代過程中適應度函數曲線??闯鲈谇捌诓脊萨B迭代過程中會出現適應度函數值較大的情況,但是當適應度函數值達到閾值后,轉用牛頓迭代法求解時,其收斂速度較布谷鳥、鯨魚算法和量子粒子群算法相比更快,而且收斂精度更高。為了更加清晰地體現組合算法求解過程中的適應度的變化,表3顯示了不同迭代解精度與迭代所用次數及末端執行器的誤差大小。

表3 組合算法求解過程的精度與誤差
根據表3的結果可以看出,使用布谷鳥迭代至21次時便已經達到設置的閾值,此時的末端執行器的位置誤差仍然較大,但是當組合算法轉為改進牛頓法迭代后,能夠在70步左右將末端位置誤差減小至1mm一下,此后的迭代過程中,適應度函數值及對應末端位置誤差快速減小,最終獲得了高精度逆解。這說明組合算法中采用布谷鳥算法求解能獲得質量較好的初值。指數函數形式的學習率衰減策略能有效地加快牛頓法的迭代精度,從而獲得較高的質量的逆解,執行器的末端精度可以控制在10-9(mm)數量級。
為解決6R機器人逆運動學高精度求解,結合直接數值法和間接數值法各自的優點,提出了一種組合算法。組合算法通過設置一個合適閾值,采用布谷鳥算法求解獲得一個低精度解,并將該低精度解作為牛頓迭代法的初始解,然后采用一種指數形式的學習率衰減策略動態調整牛頓法迭代,從而快速求得高精度的機器人逆解。在MATLAB環境下進行了仿真實驗,結果表明:組合算法求解得到的平均誤差在10-9數量級,具有較高精度,能夠滿足工業應用的要求。