柴 勇,劉福華
(西京學(xué)院 電子信息學(xué)院,陜西 西安 710123)
隨著由“中國制造”向“中國智造”的轉(zhuǎn)變,中國工業(yè)智能化時代正在快速到來。工業(yè)機械臂在智能制造領(lǐng)域中起著至關(guān)重要的作用,廣泛應(yīng)用于噴涂、焊接、巡檢、裝配、搬運等各個行業(yè),尤其在自動化焊接領(lǐng)域中的應(yīng)用得到了飛速發(fā)展。機械臂屬于機器人,是一種類似于人手的機械裝置,可以模仿人手臂的動作并完成一些操作,機械臂在非標自動化過程中愈發(fā)突顯出巨大的作用,使得更多的行業(yè)實現(xiàn)了機械臂取代人工的過程。本文所要研究的機械臂主要應(yīng)用于焊接行業(yè),其主要作用是進行焊縫的跟蹤,實現(xiàn)焊接的自動化及智能化。
由于當前機械臂模型的設(shè)計存在諸多問題,例如:機械臂設(shè)計的自由度與實際應(yīng)用不匹配;整個機械臂活動范圍過小;機械臂的關(guān)節(jié)角度過小;機械臂在運動過程中存在奇異點[1];機械臂在運動過程中會發(fā)生突變或長時間停滯導(dǎo)致運動過程不平滑等。所以這就使得對機械臂進行運動學(xué)仿真研究尤為重要。機械臂的研究涉及控制、機械等諸多學(xué)科,有必要對其進行一般規(guī)律研究。利用MATLAB仿真工具箱Robotics Toolbox,不僅能夠?qū)C械臂的D-H模型進行建模[2],而且對機械臂的運動仿真也十分方便,能夠較好地對機械臂的運動性能進行仿真驗證。本文對某四自由度的焊接機械臂進行建模,對該模型的正逆運動學(xué)特性進行分析,通過運動學(xué)軌跡規(guī)劃仿真研究進一步驗證了運動模型的可行性。為四軸焊縫跟蹤機械臂的設(shè)計及應(yīng)用提供了理論指導(dǎo)。
對機械臂模型建立D-H (Diffie-Hellman)參數(shù)坐標系,D-H坐標系如圖1所示。根據(jù)坐標系變換步驟可以得到機械臂模型的D-H參數(shù),如表1所示[3]。
表1 機械臂D-H參數(shù)
圖1 機械臂模型D-H參數(shù)坐標系
(2)
式(2)中矩陣是在式(1)中代入各連桿的D-H參數(shù)后得到的結(jié)果。本文設(shè)計的模型為PPPR(即有3個移動關(guān)節(jié)和1個旋轉(zhuǎn)關(guān)節(jié)構(gòu)成),如圖3所示。
根據(jù)式(2)代入具體的D-H參數(shù)可求得關(guān)節(jié)之間的齊次變換矩陣,各個關(guān)節(jié)的齊次變換矩陣如下:
(6)
機械臂基座到機械臂末端的齊次變換矩陣為:
(7)
式(7)為即為機械臂正運動學(xué)方程,給定機械臂的各個關(guān)節(jié)變量,就可以求得機械臂末端的位姿[4-5]。
MATLAB 機器人工具包是專門用來做機器人模型建立和運動仿真的軟件包,機械臂構(gòu)建的重點主要在于各個關(guān)節(jié)的構(gòu)建,本文采用標準D-H參數(shù)法進行模型建立。建立模型的部分源代碼如下。
clear;
clc;
th(1)=0; d(1)=0.2; a(1)=0; alp(1)=pi/2;
th(2)=pi/2; d(2)=0.2; a(2)=0; alp(2)=pi/2;
th(3)=pi/2; d(3)=0.2; a(3)=0; alp(3)=pi/2;
th(4)=pi/2; d(4)=0; a(4)=0; alp(4)=pi/2;
% DH parameters th d a alpha sigma
L1=Link([th(1), d(1), a(1), alp(1), 1], 'standard');L1.qlim=[0,2]
L2=Link([th(2), d(2), a(2), alp(2), 1], 'standard');L2.qlim=[0,4]
L3=Link([th(3), d(3), a(3), alp(3), 1], 'standard');L3.qlim=[0,2]
L4=Link([th(4), d(3), a(4), alp(4), 0], 'standard');L4.qlim=[-pi/4,pi/4]
robot=SerialLink([L1, L2, L3, L4]);
robot.name='焊縫跟蹤機械臂';
robot.display()
view(3);
robot.teach();
%Forward Pose Kinematics
pose_0=[1,2,1,0];
Q=robot.fkine(pose_0);
T=[0 0 -1 1;
-1 0 0 -2;
0 1 0 1.2;
0 0 0 1;];
M=[1 1 1 0 0 1];
K=ikine(robot,T,'mask',M);
代碼中robot.name(‘焊縫跟蹤機械臂’)是對機械臂生成一個名字,該機械臂是由SerialLink=([L1,L2,L3,L4])指令創(chuàng)建而成,該機械臂的名字為‘焊縫跟蹤機械臂’。robot.display()函數(shù)是對所建立的機械臂模型進行顯示。robot.teach()函數(shù)是在建立的模型上增加示教功能,可以對模型的位置和姿態(tài)進行設(shè)置。代碼生成的模型如圖2所示。
圖2 機械臂模型
通過拖動模型中q1、q2、q3、q4橫條使該機械臂能夠?qū)崿F(xiàn)焊槍在X、Y、Z3個方向的直線移動以及轉(zhuǎn)動,通過3個直線運動關(guān)節(jié)的插補運動在空間里達到跟隨焊縫的目的,能夠滿足實際應(yīng)用過程中大部分焊縫的跟蹤。通過R軸的轉(zhuǎn)動可以隨時調(diào)整焊槍的姿態(tài),從而滿足各種角度的焊接,尤其在圓弧軌跡焊接時可以達到最佳的焊接效果。
機械臂的運動學(xué)分析包括正運動學(xué)和逆運動學(xué)分析[4]。正運動學(xué)分析是根據(jù)已知的各個關(guān)節(jié)旋轉(zhuǎn)角度或位移得到機械臂末端的位置和姿態(tài)。逆運動學(xué)分析是根據(jù)機械臂已知的位置和姿態(tài)來得到各個關(guān)節(jié)的角度或位移[5]。正運動學(xué)的求解能夠得到機械臂末端姿態(tài)的唯一解,而根據(jù)滿足特定數(shù)值的角度不僅有一個解這一情況,對逆運動學(xué)求解可以得到多組解。因此在應(yīng)用過程中要結(jié)合機械臂的實用場景根據(jù)關(guān)節(jié)的參數(shù)變量范圍來選取合適的解。
4個關(guān)節(jié)分別用q1、q2、q3、q4來表示,通過拉動分別對應(yīng)的4個橫條可以改變這4個關(guān)節(jié)的不同參數(shù),從而得到不同的位置坐標和位置姿態(tài)。根據(jù)各個關(guān)節(jié)的參數(shù)得到機械臂末端的位置和姿態(tài),首先來給定一組各個關(guān)節(jié)的參數(shù),在程序里機械臂各個關(guān)節(jié)的初始參數(shù)為pose_0=[1, 2, 1, 0],表示q1、q2、q3分別移動的單位距離為1、2、1,q4沒有轉(zhuǎn)動。調(diào)用Q=robot.fkine(pose_0)指令來實現(xiàn)機械臂末端位姿的求解,得到的是一個4×4矩陣,即為機械臂末端相對于參考坐標系的位姿變換矩陣[5-7]。得到的位姿矩陣如圖3所示。
圖3 正運動位姿矩陣輸出值
在得到的矩陣Q中,最后一列表示機械臂的末端的位置,即X的坐標為1,Y的坐標-2,Z的坐標1.2。為驗證此解的正確性,在示教模式下分別拉動q1、q2、q3改變關(guān)節(jié)變量,使得q1=1,q2=2,q3=1來看X、Y、Z3個軸的坐標,是否與所求的解一致。示教模式下改變關(guān)節(jié)變量后模型如圖4所示。結(jié)果表明,X的坐標為1.000,Y的坐標為-2.012,Z的坐標為1.214,與所求正運動學(xué)的解的矩陣顯示的位置基本一致,存在少量誤差是因為q1和q2在拖動過程中不容易拖動為整數(shù),q1和q2設(shè)置后分別為1.01和2.01,有小量誤差導(dǎo)致得到的解同樣也有小量誤差。
圖4 示教模式下機械臂模型
通過矩陣變換求解方程組得到機械臂各個關(guān)節(jié)的參數(shù)為逆向運動學(xué)的求解,在MATLAB中調(diào)用指令K=ikine(robot,T, 'mask',M)來得到機械臂的各個關(guān)節(jié)的位置或角度。即為得到的各個關(guān)節(jié)的參數(shù)變量,與之前代碼中設(shè)定的位姿pose_0=[1,2,1,0]基本一致,這3個值是機械臂逆運動學(xué)的解。上面代碼中指令M=[1 1 1 0 0 1]表示該模型的運動涉及的自由度信息,M指令中前3個參數(shù)為1表示該模型運動涉及沿X、Y、Z3個軸平移的自由度,后3個參數(shù)為0、0、1表示該模型運動僅涉及沿Z軸旋轉(zhuǎn)這一自由度,不涉及沿X軸和Y軸旋轉(zhuǎn)的自由度。fkine和ikine是一對功能相反的函數(shù),分別可以求出正逆運動學(xué)的解,可以很方便地對模型的正逆運動學(xué)進行分析[7]。
機械臂的軌跡規(guī)劃是以機械臂的運動學(xué)和動力學(xué)為基礎(chǔ)[8-10],探討在空間中機械臂運動的軌跡規(guī)劃和軌跡生成方法。一般空間軌跡規(guī)劃分為2種,一種是關(guān)節(jié)空間的軌跡規(guī)劃,另外一種是直角坐標系空間,也就是笛卡爾空間的軌跡規(guī)劃[8-10]。這2種空間的軌跡規(guī)劃各有優(yōu)缺點,關(guān)節(jié)空間的軌跡規(guī)劃相對來說簡單一點,但不能描述出機械臂末端的運動軌跡,笛卡爾空間的軌跡規(guī)劃能夠比較直觀地呈現(xiàn)出機械臂末端的運動軌跡,但計算量比較大,而且在規(guī)劃的過程中很容易進入機器人的奇異位形[11]。這里分別運用MATLAB中的Robotic Toolbox進行2種空間的軌跡規(guī)劃[12]。
2.3.1 關(guān)節(jié)空間規(guī)劃
本文選用5次多項式插值法來進行軌跡規(guī)劃[13]。機械臂由初始位姿變換到目標位姿,需要得到各個關(guān)節(jié)角隨時間變化的函數(shù)。
設(shè)關(guān)節(jié)的運動軌跡函數(shù)為:
θt=a0+a1t+a2t2+a3t3+a4t4+a5t5
(8)
在t0時刻為初始位姿,tf時刻為設(shè)定的目標位姿,設(shè)t0時刻轉(zhuǎn)角為θ0,tf時刻轉(zhuǎn)角為θf。
代入約束函數(shù)方程為:
θ0=a0
(9)
θf=θ(tf)
(10)
(11)
(12)
上述方程組解為:
a0=θ0
(13)
a1=a2=0
(14)
(15)
(16)
(17)
插值機械臂末端從一個位置運動到另外一個位置,以這樣的運動方式實現(xiàn)機械臂末端的移動。采用5次多項式進行插值時,求得各個關(guān)節(jié)的位置、速度、加速度曲線,如圖5所示。
圖5 關(guān)節(jié)的位置、速度、加速度變化曲線
仿真結(jié)果表明:機械臂各關(guān)節(jié)的速度和加速度都是先增加后減小,最后趨于0,速度曲線在中間位置取得最大值,加速度曲線在中間位置變?yōu)?,可以認為從初始位置開始各個關(guān)節(jié)受到正向驅(qū)動力矩,速度不斷增加,平穩(wěn)到達中間點,從中間的這個點開始到最終位置,各個關(guān)節(jié)開始施加反向力矩,平穩(wěn)到達最終位置[14]。機械臂關(guān)節(jié)速度和加速度變化曲線比較平滑,沒有尖銳點和突變點,說明機械臂各個關(guān)節(jié)在運動過程中沒有突然的加減速、停滯等現(xiàn)象[15-16]。在實際應(yīng)用過程中運動平穩(wěn),振動較小,而且運動過程中最大速度和最大加速度能夠滿足實際焊接的要求。
2.3.2 笛卡爾空間規(guī)劃
本文主要對直線軌跡規(guī)劃進行分析、仿真。設(shè)v為要求的沿直線速度,t為插補時間的間隔,就能求出直線的長度L,間隔時間t內(nèi)的距離d和插補數(shù)N如下。
(18)
d=vt
(19)
(20)
相鄰插補點的增量:
(21)
(22)
(23)
插補點的坐標:
xi+1=xi+iΔx
(24)
yi+1=yi+iΔy
(25)
zi+1=zi+iΔz
(26)
在這里i=0,1,2,…,N
通過仿真得到了機械臂末端從初始位姿到末端位姿坐標系的平移變化;機械臂末端從初始位姿到末端位姿坐標系旋轉(zhuǎn)的變化以及機械臂末端從初始位姿到終止位姿的空間軌跡規(guī)劃圖形投影到XOY坐標軸內(nèi)的變化,顯示了機械臂末端在X、Y、Z坐標內(nèi)隨時間變化的曲線,如圖6所示。
圖6 直線軌跡仿真結(jié)果
仿真結(jié)果表明:該運動軌跡符合四自由度機械臂的運行要求,機械臂末端的運動情況符合開始設(shè)計的一段直線的要求。
本文根據(jù)D-H參數(shù)法對四軸焊縫跟蹤機械臂進行建模,并通過MATLAB 機器人工具包對該機械臂進行正逆運動學(xué)分析、軌跡規(guī)劃。MATLAB仿真進一步驗證了該機械臂能夠按照期望的軌跡運動,沒有奇異點。在直線運動過程中,該機械臂的各個關(guān)節(jié)的位置、速度、加速度曲線比較平滑,沒有停滯和突變點。從多方面驗證了機械臂設(shè)計的合理性,說明該機械臂能滿足實際的焊接要求,具有實用意義。