任务空间中的机械手的自适应神经网络控制.doc_第1页
任务空间中的机械手的自适应神经网络控制.doc_第2页
任务空间中的机械手的自适应神经网络控制.doc_第3页
任务空间中的机械手的自适应神经网络控制.doc_第4页
任务空间中的机械手的自适应神经网络控制.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

工作空间中机械手的神经网络自适应控制通过对文1的控制方法进行详细推导及仿真分析,研究一类机器人力臂在工作空间内神经网络自适应控制的设计方法。针对工作空间中机械手的神经网络自适应控制,采用神经网络在线建模技术,既不需要逆动态模型的估计值,又不需要耗时的训练过程。通过引入矩阵及其乘法算子,通过采用直接辨识的参数得到控制律,不需要雅可比矩阵的逆,通过鲁棒控制项来抑制神经网络建模误差和有界扰动。1 工作空间直角坐标与关节角位置的转换根据著作2,将工作空间中的关节末端直角坐标转为二关节关节角位置的转换公式如下: (1) (2)2 机械手的神经网络建模考虑一个刚性关节机械手,其动态特性为: (3)其中,是表示关节变量的向量,是执行机构施加的关节扭矩向量,为对称正定惯性矩阵,为哥氏力和离心力向量,为重力向量。假定机械手的工作性质与末端执行器的空间位置有关,因此,需要直接在工作空间中设计控制算法。用表示末端执行器在工作空间中的位置和方位,则机械手在工作空间的动态特性可表示为: (4)其中,。是由结构决定的雅可比矩阵,假定它在有界的工作空间中是非奇异的。机械手动态方程具有下面特性:特性1:惯性矩阵对称正定;特性2:矩阵是斜对称的。由于和仅仅是的函数,因此,可采用静态神经网络对它们进行建模。和的神经网络模型为:其中为神经网络的权值,是输入为向量的径向基函数。分别是和的建模误差,并假定它们是有界的。对于,用输入为和的动态神经网络进行建模,的神经网络模型为:其中,是权值,是输入为向量的径向基函数。是的建模误差,并假定它也是有界的。采用神经网络建模,则机械手在工作空间中的动态方程可写为: (5)其中采用GL矩阵及其乘法操作,可以写成: (6)其中和是GL矩阵,其元素分别为和。是元素为建模误差的矩阵。同样,对和,有: (7) (8)其中,和为GL矩阵和GL向量,其元素分别为,。和是元素分别为建模误差和的矩阵。3 控制器的设计设是在工作空间中的理想轨迹,则和分别是理想的速度和加速度。定义其中是一个正定矩阵。引理1:设,其中,*代表卷积,且是一个阶的严格按指数稳定的传递函数。如果,则,是连续的,当时,。其中能量有限定义为:,有界定义为:。采用代表的估计值,定义,则,和分别代表式,和的估计值。控制器设计为: (9)其中,。控制器前三项是基于模型的控制,项相当于比例微分(PD)控制,控制律的最后一项为抑制神经网络建模误差的鲁棒项。将(6)、(7)和(8)代入(5)得将控制律(4)代入上式得将,代入上式得将上式化简得:把(4)、(5)和(6)代入上式得 (10)系统(10)的稳定性由下面定理给出。定理 对闭环系统(8),如果,且自适应律设计为 (11)其中,且和是元素分别为和的向量,则,且,是连续的,当,和。证明:考虑如下Lyapunov函数其中,为正定对称矩阵。则由于矩阵是斜对称的,则,即,代入上式得将(10)式代入,得(12)考虑并将自适应律(11)代入(12)式,并考虑到,得: (13)收敛性分析:(a)由(13)及,得,由引理得,是连续的,则当时,;(b)由,得到,。因此,当时,有,即。注意到,且,是有界基函数,则。因此,是一致连续的。是一致连续的,且当时,。如果和定义为其中,()是多维相容的矩阵块,则自适应律可表示为元素的形式:4 仿真实例考虑平面两关节机械手,机器人的动力学方程为其中由式给出的参数,有是有效载荷,和分别是关节1和关节2的长度。是机器人自身的参数向量。雅可比矩阵为:机器人力臂实际参数为每个关节的长度为1m。假定不知道系统的任何先验知识,而且没有有效载荷,即在笛卡尔空间中,理想跟踪轨迹取,该轨迹为一个半径为0.2m圆心在m的圆。初始条件时,机器人静止,其末端执行器在圆的中心,即,由于要跟踪的轨迹是工作空间中的直角坐标,而不是关节空间中的角位置,且控制律也是在工作空间中推导得到的,按(1)和(2)式,将工作空间中的关节末端直角坐标转为二关节关节角位置。在仿真中使用工作空间中的动态方程:其中且角速度为:对和的每一个元素,使用10个节点的静态RBF神经网络,而对中的每一个元素,使用10个节点的动态RBF神经网络。高斯参数分别取0.0和10.0。控制器的增益选为,为了测试控制器对载荷扰动的抑制能力,在时加入一个的载荷。图1 末关节节点的位置跟踪图2 末关节节点的速度跟踪图3 末关节节点的控制输入信号图4 、和的逼近仿真程序:Simulink主程序:rbf_ge_sim.mdl控制器S函数:rbf_ge_s.mfunction sys,x0,str,ts = spacemodel(t,x,u,flag)switch flag,case 0, sys,x0,str,ts=mdlInitializeSizes;case 1, sys=mdlDerivatives(t,x,u);case 3, sys=mdlOutputs(t,x,u);case 2,4,9 sys=;otherwise error(Unhandled flag = ,num2str(flag);endfunction sys,x0,str,ts=mdlInitializeSizesglobal node c_D c_C c_G b cenode=100;c_D=zeros(2,node);c_G=zeros(2,node);c_C=zeros(4,node);b=10;ce=15.0;sizes = simsizes;sizes.NumContStates = 10*node;sizes.NumDiscStates = 0;sizes.NumOutputs = 5;sizes.NumInputs = 10;sizes.DirFeedthrough = 1;sizes.NumSampleTimes = 0;sys = simsizes(sizes);x0 = zeros(1,10*node);str = ;ts = ;function sys=mdlDerivatives(t,x,u)global node c_D c_C c_G b cexd1=u(1);d_xd1=u(2);dd_xd1=u(3);xd2=u(4);d_xd2=u(5);dd_xd2=u(6);x1=u(7);d_x1=u(8);x2=u(9);d_x2=u(10);xx=x1;x2;for j=1:1:node h_D11(j)=exp(-norm(xx-c_D(:,j)2/(b*b); h_D12(j)=exp(-norm(xx-c_D(:,j)2/(b*b); h_D21(j)=exp(-norm(xx-c_D(:,j)2/(b*b); h_D22(j)=exp(-norm(xx-c_D(:,j)2/(b*b);endfor j=1:1:node h_G1(j)=exp(-norm(xx-c_G(:,j)2/(b*b); h_G2(j)=exp(-norm(xx-c_G(:,j)2/(b*b);endz=x1;x2;d_x1;d_x2;for j=1:1:node h_C11(j)=exp(-norm(z-c_C(:,j)2/(b*b); h_C12(j)=exp(-norm(z-c_C(:,j)2/(b*b); h_C21(j)=exp(-norm(z-c_C(:,j)2/(b*b); h_C22(j)=exp(-norm(z-c_C(:,j)2/(b*b);endW_D11=x(1:node);W_D12=x(node+1:node*2);W_D21=x(node*2+1:node*3);W_D22=x(node*3+1:node*4);T_D11=0.02*eye(node);T_D12=0.02*eye(node);T_D21=0.02*eye(node);T_D22=0.02*eye(node);e1=xd1-x1;e2=xd2-x2;de1=d_xd1-d_x1;de2=d_xd2-d_x2;e=e1;e2;de=de1;de2;Hur=ce*eye(2);r=de+Hur*e;dxd=d_xd1;d_xd2;dxr=dxd+Hur*e;ddxd=dd_xd1;dd_xd2;ddxr=ddxd+Hur*de;for i=1:1:node sys(i)=T_D11(i,i)*h_D11(i)*ddxr(1)*r(1); sys(i+node)=T_D12(i,i)*h_D12(i)*ddxr(2)*r(1); sys(i+node*2)=T_D21(i,i)*h_D21(i)*ddxr(1)*r(2); sys(i+node*3)=T_D22(i,i)*h_D22(i)*ddxr(2)*r(2);endW_G1=x(node*4+1:node*5);W_G2=x(node*5+1:node*6);T_G1=5*eye(node);T_G2=5*eye(node);for i=1:1:node sys(i+node*4)=T_G1(i,i)*h_G1(i)*r(1); sys(i+node*5)=T_G2(i,i)*h_G2(i)*r(2);endW_C11=x(node*6+1:node*7);W_C12=x(node*7+1:node*8);W_C21=x(node*8+1:node*9);W_C22=x(node*9+1:node*10);T_C11=0.1*eye(node);T_C12=0.1*eye(node);T_C21=0.1*eye(node);T_C22=0.1*eye(node);for i=1:1:node sys(i+node*6)=T_C11(i,i)*h_C11(i)*dxr(1)*r(1); sys(i+node*7)=T_C12(i,i)*h_C12(i)*ddxr(2)*r(1); sys(i+node*8)=T_C21(i,i)*h_C21(i)*dxr(1)*r(2); sys(i+node*9)=T_C22(i,i)*h_C22(i)*ddxr(2)*r(2);endfunction sys=mdlOutputs(t,x,u)global node c_D c_C c_G b cexd1=u(1);d_xd1=u(2);dd_xd1=u(3);xd2=u(4);d_xd2=u(5);dd_xd2=u(6);x1=u(7);d_x1=u(8);x2=u(9);d_x2=u(10);xx=x1;x2;for j=1:1:node h_D11(j)=exp(-norm(xx-c_D(:,j)2/(b*b); h_D12(j)=exp(-norm(xx-c_D(:,j)2/(b*b); h_D21(j)=exp(-norm(xx-c_D(:,j)2/(b*b); h_D22(j)=exp(-norm(xx-c_D(:,j)2/(b*b);endfor j=1:1:node h_G1(j)=exp(-norm(xx-c_G(:,j)2/(b*b); h_G2(j)=exp(-norm(xx-c_G(:,j)2/(b*b); endz=x1;x2;d_x1;d_x2;for j=1:1:node h_C11(j)=exp(-norm(z-c_C(:,j)2/(b*b); h_C12(j)=exp(-norm(z-c_C(:,j)2/(b*b); h_C21(j)=exp(-norm(z-c_C(:,j)2/(b*b); h_C22(j)=exp(-norm(z-c_C(:,j)2/(b*b);endW_D11=x(1:node);W_D12=x(node+1:node*2);W_D21=x(node*2+1:node*3);W_D22=x(node*3+1:node*4);DSNN_g=W_D11*h_D11 W_D12*h_D12; W_D21*h_D21 W_D22*h_D22;Dm_g=norm(DSNN_g);W_G1=x(node*4+1:node*5);W_G2=x(node*5+1:node*6);GSNN_g=W_G1*h_G1; W_G2*h_G2;Gm_g=norm(GSNN_g); W_C11=x(node*6+1:node*7);W_C12=x(node*7+1:node*8);W_C21=x(node*8+1:node*9);W_C22=x(node*9+1:node*10);CDNN_g=W_C11*h_C11 W_C12*h_C12; W_C21*h_C21 W_C22*h_C22;Cm_g=norm(CDNN_g);e1=xd1-x1;e2=xd2-x2;de1=d_xd1-d_x1;de2=d_xd2-d_x2;e=e1;e2;de=de1;de2;Hur=ce*eye(2);r=de+Hur*e;dxd=d_xd1;d_xd2;dxr=dxd+Hur*e;ddxd=dd_xd1;dd_xd2;ddxr=ddxd+Hur*de;Ks=0;Kp=20*eye(2);Fx=DSNN_g*ddxr+CDNN_g*dxr+GSNN_g+Kp*r+Ks*sign(r);sys(1)=Fx(1);sys(2)=Fx(2);sys(3)=Dm_g;sys(4)=Cm_g;sys(5)=Gm_g;输入指令S函数:rbf_ge_input.mfunction sys,x0,str,ts = spacemodel(t,x,u,flag)switch flag,case 0, sys,x0,str,ts=mdlInitializeSizes;case 1, sys=mdlDerivatives(t,x,u);case 3, sys=mdlOutputs(t,x,u);case 2,4,9 sys=;otherwise error(Unhandled flag = ,num2str(flag);endfunction sys,x0,str,ts=mdlInitializeSizessizes = simsizes;sizes.NumContStates = 0;sizes.NumDiscStates = 0;sizes.NumOutputs = 6;sizes.NumInputs = 0;sizes.DirFeedthrough = 0;sizes.NumSampleTimes = 1;sys = simsizes(sizes);x0 = ;str = ;ts = 0 0;function sys=mdlOutputs(t,x,u)xd1=1+0.2*cos(pi*t);d_xd1=-0.2*pi*sin(pi*t);dd_xd1=-0.2*pi*pi*cos(pi*t);xd2=1+0.2*sin(pi*t);d_xd2=0.2*pi*cos(pi*t);dd_xd2=-0.2*pi*pi*sin(pi*t);sys(1)=xd1;sys(2)=d_xd1;sys(3)=dd_xd1;sys(4)=xd2;sys(5)=d_xd2;sys(6)=dd_xd2;被控对象S函数:rbf_ge_plant.mfunction sys,x0,str,ts=s_function(t,x,u,flag)switch flag,case 0, sys,x0,str,ts=mdlInitializeSizes;case 1, sys=mdlDerivatives(t,x,u);case 3, sys=mdlOutputs(t,x,u);case 2, 4, 9 sys = ;otherwise error(Unhandled flag = ,num2str(flag);endfunction sys,x0,str,ts=mdlInitializeSizesglobal J Dx Cx Gx l1 l2l1=1;l2=1;sizes = simsizes;sizes.NumContStates = 4;sizes.NumDiscStates = 0;sizes.NumOutputs = 10;sizes.NumInputs = 3;sizes.DirFeedthrough = 1;sizes.NumSampleTimes = 0;sys=simsizes(sizes);x0=1 0 1 0;str=;ts=;J=0;Dx=0;Cx=0;Gx=0;function sys=mdlDerivatives(t,x,u)global J Dx Cx Gx l1 l2P=1.66 0.42 0.63 3.75 1.25;g=9.8;L=l12 l22 l1*l2 l1 l2;if t0 q1=alfa-beta; dq1=(x(4)*x(1)-x(3)*x(2)/(x(1)2+x(3)2)+d_beta;else q1=alfa+beta; dq1=(x(4)*x(1)-x(3)*x(2)/(x(1)2+x(3)2)-d_beta;endJ=-sin(q1)-sin(q1+q2) -sin(q1+q2); cos(q1)+cos(q1+q2) cos(q1+q2);d_J=-dq1*cos(q1)-(dq1+dq2)*cos(q1+q2) -(dq1+dq2)*cos(q1+q2); -dq1*sin(q1)-(dq1+dq2)*sin(q1+q2) -(dq1+dq2)*sin(q1+q2);D=M(1)+M(2)+2*M(3)*cos(q2) M(2)+M(3)*cos(q2); M(2)+M(3)*cos(q2) M(2);C=-M(3)*dq2*sin(q2) -M(3)*(dq1+dq2)*sin(q2); M(3)*dq1*sin(q2) 0;G=M(4)*g*cos(q1)+M(5)*g*cos(q1+q2); M(5)*g*cos(q1+q2);Dx=(inv(J)*D*inv(J);Cx=(inv(J)*(C-D*inv(J)*d_J)*inv(J);Gx=(inv(J)*G;Fx=u(1:2);dx=x(2);x(4);S=inv(Dx)*(Fx-Cx*dx-Gx);sys(1)=x(2);sys(2)=S(1);sys(3)=x(4);sys(4)=S(2);function sys=mdlOutputs(t,x,u)global J Dx Cx Gx l1 l2beta=acos(sqrt(x(1)2+x(3)2+l12-l22)/(2*l1*sqrt(x(1)2+x(2)2);Gm=norm(Gx);Cm=norm(Cx);Dm=norm(Dx);Fx=u(1:2);sys(1)=x(1);sys(2)=x(2);sys(3)=x(3);sys(4)=x(4);sys(5)=Dm;sys(6)=Cm;sys(7)=Gm;sys(8)=beta;sys(9:10)=J*Fx;作图程序:rbf_ge_plot.mclose all;figure(1);subplot(211);plot(t,x(:,1),r,t,x(:,3),b)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论