摘 要:針對(duì)基于Matlab的機(jī)械臂軌跡伺服控制仿真,通過一個(gè)簡化的伺服控制模型,進(jìn)行仿真編程分析,對(duì)比ode45算法與自編四階龍哥庫塔方法,并闡述仿真中經(jīng)常用到的一些函數(shù)及圖形格式處理方法,有利于機(jī)械臂軌跡控制及仿真的研究。
關(guān)鍵詞:機(jī)械臂 伺服控制 仿真 Matlab
中圖分類號(hào):TP241.2 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-3973(2013)011-038-02
1 引言
進(jìn)入21世紀(jì),機(jī)器人工業(yè)已經(jīng)進(jìn)入高速崛起的時(shí)代,機(jī)械臂是機(jī)器人的操作終端,有一大批機(jī)器人愛好者在研究機(jī)械臂的控制技術(shù)。然而,伺服電機(jī)及需要配置的傳感器價(jià)格昂貴,使得采用實(shí)體機(jī)械臂的軌跡控制研究難以普遍實(shí)現(xiàn)。Matlab作為計(jì)算機(jī)輔助分析設(shè)計(jì)仿真工具,相比之下,成本低,周期短,使用方便,在各學(xué)科領(lǐng)域得到了應(yīng)用廣泛。將機(jī)械臂的控制技術(shù)與Matlab編程仿真方法結(jié)合起來,對(duì)于機(jī)械臂軌跡控制的研究非常重要。
機(jī)械臂軌跡控制的方法很多,如PID控制、自適應(yīng)控制、魯棒控制以及智能控制方法,伺服控制是一種基于機(jī)械臂動(dòng)力學(xué)模型的控制方法,本文將淺析基于Matlab的機(jī)械臂軌跡伺服控制仿真技術(shù)。
2 機(jī)械臂軌跡伺服控制的簡化模型
一般機(jī)械臂的運(yùn)動(dòng)模型可以根據(jù)拉格朗日方程得到
其中: 、H、G為n維列向量,M為n€譶正定對(duì)稱矩陣,由此得到
根據(jù)參考文獻(xiàn)[1]就可以確定 的值,因此,下文視其為已知量,且初始條件為:。
3 基于Matlab的數(shù)值積分編程
在機(jī)械臂軌跡控制仿真中,利用Matlab編程解微分方程,常用的方法是ode45函數(shù)方法。ode45是Matlab系統(tǒng)內(nèi)置的一個(gè)微分方程數(shù)值求解函數(shù),采用四階、五階Runge-Kutta算法,屬于變步長算法。而采用自編四階龍哥庫塔方法,步長可根據(jù)情況自己設(shè)定。
仿真編程的步驟如下:
第一步,根據(jù)動(dòng)力學(xué)方程建立RK.m文件。
function dx=RK(t,x)
%廣義坐標(biāo)微分方程
dx(1)=x(n+1);
dx(2)=x(n+2);
...
dx(n)=x(2n);
%廣義速度微分方程,結(jié)果先賦給向量temp
temp=M^-1*( +H+G);
dx(n+1)=temp(1);
dx(n+2)=temp(2);
...
dx(2n)=temp(n);
第二步,建立主文件control.m
3.1 采用自編四階龍哥庫塔方法
clear all;
%步長為固定值如0.01s,可以更改
h=0.01;
%初始時(shí)刻為0
t(1)=0;
%設(shè)定仿真時(shí)間為0~T(s),此處T為常數(shù),如T=10
%循環(huán)次數(shù)k
k=10/h;
%初始條件,前n項(xiàng)為廣義坐標(biāo),后n項(xiàng)為廣義速度
x(1,:)=[x1 x2 …x2n];
%采用for循環(huán)編寫四階龍哥庫塔函數(shù)
for i=1:k
t(i+1)=t(i)+h;
k1=RK(t(i),x(i,:));
k2=RK(t(i)+h/2,x(i,:)+k1*h/2);
k3=RK(t(i)+h/2,x(i,:)+k2*h/2);
k4=RK(t(i+1),x(i,:)+k3*h);
x(i+1,:)=x(i,:)+h/6*(k1+2*k2+2*k3+k4);
end
四階龍哥庫塔方法選取的步長越小,數(shù)值計(jì)算精度越高,一般考慮計(jì)算機(jī)計(jì)算量,選擇合適的步長即可。
3.2 采用ode45函數(shù)方法
%狀態(tài)向量初值
x(1,:)=[x1 x2 …x2n];
%仿真時(shí)間0~10s
tspan=[0 10];
%相對(duì)誤差精度為10-6
options=odeset('RelTol',1e-6);
%調(diào)用ode45()函數(shù)
[t,x]= ode45(@RK,tspan,x(1,:),options);
在調(diào)用ode45函數(shù)的語句中,t為時(shí)間變量,x為返回的與時(shí)間對(duì)應(yīng)的狀態(tài)值。與自編龍哥庫塔方法不同,該算法無需對(duì)步長進(jìn)行設(shè)定,系統(tǒng)將采用變步長。
4 仿真圖形處理
4.1 圖形輸出方式
Matlab仿真的結(jié)果要以形象、直觀的方式展示出來。機(jī)械臂軌跡及誤差圖形的常用輸出方式主要有兩種:二維曲線和三維曲線。
二維曲線的輸出用plot()函數(shù),三維曲線輸出用plot3()函數(shù)。示例如下:
%輸出廣義坐標(biāo)q1的變化曲線
plot(t,x(:,1));
%輸出機(jī)械臂末端自然坐標(biāo)(x0,y0)隨時(shí)間的變化曲線
plot3(x0,y0,t);
若要求輸出圖形框體僅顯示橫縱坐標(biāo)軸兩條框線,則需在圖形輸出之前,加上一個(gè)語句:
hold on;
這樣就可以隱藏上邊框線和右邊框線。
4.2 圖形文字添加
一般,為了使圖形的顯示更明了,有必要添加文字說明。文字內(nèi)容包括坐標(biāo)名稱、曲線名稱、圖形名稱等,添加方式常用的有xlabel()、ylabel()、zlabel()、gtext()、legend()等。前三個(gè)是對(duì)坐標(biāo)軸名稱的添加,第四個(gè)可在圖形任意位置添加說明文字,通過鼠標(biāo)來指定位置,最后一個(gè)用于對(duì)多條曲線的說明,需要按曲線的輸出次序進(jìn)行相應(yīng)的說明。示例如下:
%用xlabel()顯示橫軸名稱:時(shí)間t/s
xlabel('\rm時(shí)間\it t\rm/s');
%用gtext()顯示圖形名稱:伺服控制
gtext('伺服控制');
%用legend()對(duì)誤差曲線說明,分別為:ex和ey
legend('e_x','e_y')
4.3 線型及文字格式設(shè)置
圖形的顯示應(yīng)該美觀,因此線型及文字格式要協(xié)調(diào)。相關(guān)內(nèi)容包括框體(坐標(biāo)軸)和曲線的線型及線粗,文字的字形及字號(hào)。示例如下:
%設(shè)置框體線寬為1
set(gca,'linewidth',1);
%用plot輸出坐標(biāo)q1的變化曲線為虛線,線寬為1
plot(t,x(:,1),'--k','linewidth',1);
%用gtext()顯示圖形名稱伺服控制為楷體,14號(hào)字
gtext('\fontname{楷體}\fontsize{14}伺服控制');
此外字體格式還有正體\rm與斜體\it,加粗為\bf,上角標(biāo)為^,下角標(biāo)為_等。
4.4 特殊處理
在機(jī)械臂軌跡伺服控制中,可能出現(xiàn)需要曲線局部放大,可以采用axes()函數(shù)表示,該函數(shù)視原框體位置為[0,0,1,1],前兩個(gè)數(shù)值代表框體左下角的坐標(biāo),后兩個(gè)數(shù)值為其長高值,示例如下:
%將誤差ex在3~5秒的變化曲線放大顯示
%區(qū)域:左下角位置為[0.3,0.3],長為0.4,高為0.3
axes('position',[0.3,0.3,0.4,0.3]);
plot(t(3/h:5/h),ex(3/h:5/h));
此外,在機(jī)械臂的軌跡伺服控制仿真中,對(duì)軌跡的規(guī)劃應(yīng)該特別注意的是盡量避免出現(xiàn)奇異點(diǎn),利用Matlab自帶的小波分析工具箱(wavelet toolbox)可以檢測信號(hào)奇異點(diǎn)。
5 結(jié)論
針對(duì)機(jī)械臂軌跡伺服控制的簡化模型及所用到的Matlab仿真內(nèi)容進(jìn)行了闡述,并對(duì)ode45的調(diào)用程序與自編龍哥庫塔方法程序進(jìn)行了介紹,圖形的處理僅對(duì)機(jī)械臂控制仿真中常用的一些函數(shù)及格式設(shè)置作了分析。Matlab作為計(jì)算機(jī)輔助分析設(shè)計(jì)仿真工具,掌握Matlab編程語言及自帶專業(yè)工具箱的應(yīng)用,對(duì)機(jī)械臂控制及其他方面的仿真研究都非常有用。
參考文獻(xiàn):
[1] Udwadia F E.A new perspective on the tracking control of nonlinear structural and mechanical systems[J].Proceedings:Mathematical,Physical and Engineering Sciences,2003,459(2035):1783-1800.
[2] 鄒創(chuàng)銘.小波變換在奇異信號(hào)探測中應(yīng)用及MATLAB仿真[J].通信與信息技術(shù),2008(04):74-75.
[3] 薛定宇.基于MATLAB/Simulink的系統(tǒng)仿真技術(shù)與應(yīng)用[M].北京:清華大學(xué)出版社,2011.