浅析机械臂轨迹伺服控制的Matlab仿真

时间:2022-10-19 06:07:11

浅析机械臂轨迹伺服控制的Matlab仿真

摘 要:针对基于Matlab的机械臂轨迹伺服控制仿真,通过一个简化的伺服控制模型,进行仿真编程分析,对比ode45算法与自编四阶龙哥库塔方法,并阐述仿真中经常用到的一些函数及图形格式处理方法,有利于机械臂轨迹控制及仿真的研究。

关键词:机械臂 伺服控制 仿真 Matlab

中图分类号:TP241.2 文献标识码:A 文章编号:1007-3973(2013)011-038-02

1 引言

进入21世纪,机器人工业已经进入高速崛起的时代,机械臂是机器人的操作终端,有一大批机器人爱好者在研究机械臂的控制技术。然而,伺服电机及需要配置的传感器价格昂贵,使得采用实体机械臂的轨迹控制研究难以普遍实现。Matlab作为计算机辅助分析设计仿真工具,相比之下,成本低,周期短,使用方便,在各学科领域得到了应用广泛。将机械臂的控制技术与Matlab编程仿真方法结合起来,对于机械臂轨迹控制的研究非常重要。

机械臂轨迹控制的方法很多,如PID控制、自适应控制、鲁棒控制以及智能控制方法,伺服控制是一种基于机械臂动力学模型的控制方法,本文将浅析基于Matlab的机械臂轨迹伺服控制仿真技术。

2 机械臂轨迹伺服控制的简化模型

一般机械臂的运动模型可以根据拉格朗日方程得到

其中: 、H、G为n维列向量,M为nn正定对称矩阵,由此得到

根据参考文献[1]就可以确定 的值,因此,下文视其为已知量,且初始条件为:。

3 基于Matlab的数值积分编程

在机械臂轨迹控制仿真中,利用Matlab编程解微分方程,常用的方法是ode45函数方法。ode45是Matlab系统内置的一个微分方程数值求解函数,采用四阶、五阶Runge-Kutta算法,属于变步长算法。而采用自编四阶龙哥库塔方法,步长可根据情况自己设定。

仿真编程的步骤如下:

第一步,根据动力学方程建立RK.m文件。

function dx=RK(t,x)

%广义坐标微分方程

dx(1)=x(n+1);

dx(2)=x(n+2);

...

dx(n)=x(2n);

%广义速度微分方程,结果先赋给向量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;

%初始时刻为0

t(1)=0;

%设定仿真时间为0~T(s),此处T为常数,如T=10

%循环次数k

k=10/h;

%初始条件,前n项为广义坐标,后n项为广义速度

x(1,:)=[x1 x2 …x2n];

%采用for循环编写四阶龙哥库塔函数

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

四阶龙哥库塔方法选取的步长越小,数值计算精度越高,一般考虑计算机计算量,选择合适的步长即可。

3.2 采用ode45函数方法

%状态向量初值

x(1,:)=[x1 x2 …x2n];

%仿真时间0~10s

tspan=[0 10];

%相对误差精度为10-6

options=odeset('RelTol',1e-6);

%调用ode45()函数

[t,x]= ode45(@RK,tspan,x(1,:),options);

在调用ode45函数的语句中,t为时间变量,x为返回的与时间对应的状态值。与自编龙哥库塔方法不同,该算法无需对步长进行设定,系统将采用变步长。

4 仿真图形处理

4.1 图形输出方式

Matlab仿真的结果要以形象、直观的方式展示出来。机械臂轨迹及误差图形的常用输出方式主要有两种:二维曲线和三维曲线。

二维曲线的输出用plot()函数,三维曲线输出用plot3()函数。示例如下:

%输出广义坐标q1的变化曲线

plot(t,x(:,1));

%输出机械臂末端自然坐标(x0,y0)随时间的变化曲线

plot3(x0,y0,t);

若要求输出图形框体仅显示横纵坐标轴两条框线,则需在图形输出之前,加上一个语句:

hold on;

这样就可以隐藏上边框线和右边框线。

4.2 图形文字添加

一般,为了使图形的显示更明了,有必要添加文字说明。文字内容包括坐标名称、曲线名称、图形名称等,添加方式常用的有xlabel()、ylabel()、zlabel()、gtext()、legend()等。前三个是对坐标轴名称的添加,第四个可在图形任意位置添加说明文字,通过鼠标来指定位置,最后一个用于对多条曲线的说明,需要按曲线的输出次序进行相应的说明。示例如下:

上一篇:《听听那冷雨》:浓得化不开得乡愁 下一篇:试论高校饮食人力资源发展的困境与对策