新書推薦:
《
我读巴芒:永恒的价值
》
售價:HK$
132.2
《
你漏财了:9种逆向思维算清人生这本账
》
售價:HK$
55.8
《
我们终将老去:认识生命的第二阶段(比利时的“理查德·道金斯”,一位行为生物学家的老年有用论
》
售價:HK$
91.8
《
谁是窃书之人 日本文坛新锐作家深绿野分著 无限流×悬疑×幻想小说
》
售價:HK$
55.8
《
一个经济杀手的自白 第3版
》
售價:HK$
110.9
《
8秒按压告别疼痛
》
售價:HK$
87.4
《
津巴多时间心理学:挣脱束缚、改写命运的6种时间观
》
售價:HK$
77.3
《
大英博物馆东南亚简史
》
售價:HK$
177.0
|
編輯推薦: |
本书是在原有《机器人控制系统的设计与MATLAB仿真》基础上撰写而成,并删除、增加和更新了部分内容。全书共分为两册,本书为上册,即基本设计方法部分。本书共分10章,包括先进PID控制、神经网络自适应控制、模糊自适应控制、迭代学习控制、反演控制、滑模控制、自适应鲁棒控制、末端轨迹及力控制及重复控制设计方法。每种方法都给出了算法推导、实例分析和相应的MATLAB设计仿真程序。本书特色如下:
1 控制算法重点置于基础理论分析,针对机械手基本控制算法进行了深入剖析。
2 针对每种控制算法,均给出了完整的MATLAB仿真程序,同时也给出了程序的说明 和仿真结果,具有很强的可读性。
3 从应用的角度出发,理论联系实际,面向广大工程技术人员,具有很强的工程性和实用性。
4 书中介绍的各种控制算法及应用实例非常完整,程序结构设计简单明了,便于自学和进一步开发。
程序下载:全部仿真代码可到清华大学出版社网站本书页面下载。
|
內容簡介: |
本书系统地介绍了机械手控制的几种先进设计方法,是作者多年来从事机器人控制系统教学和科研工作的结晶,同时融入了国内外同行近年来所取得的*成果。 本书以机械手的控制为论述对象,共包括10章,分别介绍了先进PID控制、神经网络自适应控制、模糊自适应控制、迭代学习控制、反演控制、滑模控制、自适应鲁棒控制、末端轨迹及力控制、重复控制设计方法。每种方法都给出了算法推导、实例分析和相应的MATLAB仿真设计程序。 本书各部分内容既相互联系又相互独立,读者可根据自己的需要选择学习。本书适用于从事生产过程自动化、计算机应用、机械电子和电气自动化领域工作的工程技术人员阅读,也可作为高等院校工业自动化、自动控制、机械电子、自动化仪表、计算机应用等专业的教学参考书。
|
關於作者: |
刘金琨 1965年生,辽宁省大连市瓦房店人。分别于1989年、1994年和1997年获东北大学工学学士、硕士和博士学位。19971999年在浙江大学工业控制技术研究所从事博士后研究工作。现为北京航空航天大学控制理论与控制工程专业教授、博士生导师。主要从事控制理论与应用的研究和教学工作。自从从事研究工作以来,主持国家自然基金等科研项目10余项,发表学术论文100余篇,出版著作10部。
|
目錄:
|
目录
前言Ⅰ
仿真程序使用说明Ⅲ
第1章绪论
1.1机器人控制方法简介
1.1.1机器人常用的控制方法
1.1.2不确定机器人系统的控制
1.2机器人动力学模型及其结构特性
1.3基于S函数的Simulink仿真
1.3.1S函数简介
1.3.2S函数使用步骤
1.3.3S函数的基本功能及重要参数设定
1.3.4S函数描述实例
第2章机械手PID控制
2.1机械手独立PD控制
2.1.1控制律设计
2.1.2收敛性分析
2.1.3仿真实例
2.2基于重力补偿的机械手PD控制
2.2.1控制律设计
2.2.2控制律分析
2.3基于模型补偿的机械手PD控制
2.3.1系统描述
2.3.2控制器的设计
2.3.3仿真实例
参考文献
第3章机械手神经网络自适应控制
3.1一种简单的RBF网络自适应滑模控制
3.1.1问题描述
3.1.2RBF网络原理
3.1.3控制算法设计与分析
3.1.4仿真实例
3.2基于RBF网络逼近的机械手自适应控制
3.2.1问题的提出
3.2.2基于RBF神经网络逼近的控制器
3.2.3针对fx中各项分别进行神经网络逼近
3.2.4仿真实例
参考文献
第4章机械手模糊自适应控制
4.1单力臂机械手直接自适应模糊控制
4.1.1问题描述
4.1.2模糊控制器的设计
4.1.3自适应律的设计
4.1.4仿真实例
4.2单力臂机械手间接自适应模糊控制
4.2.1问题描述
4.2.2自适应模糊滑模控制器设计
4.2.3稳定性分析
4.2.4仿真实例
4.3单级倒立摆的监督模糊控制
4.3.1模糊系统的设计
4.3.2模糊监督控制器的设计
4.3.3稳定性分析
4.3.4仿真实例
4.4基于模糊补偿的机械手自适应模糊控制
4.4.1系统描述
4.4.2基于传统模糊补偿的控制
4.4.3基于模型信息已知的模糊补偿控制
4.4.4仿真实例
4.5基于线性矩阵不等式的单级倒立摆TS模糊控制
4.5.1基于LMI的TS型模糊系统控制器设计
4.5.2LMI不等式的设计及分析
4.5.3不等式的转换
4.5.4LMI设计实例说明
4.5.5单级倒立摆的TS模型模糊控制
参考文献
第5章机械手迭代学习控制及重复控制
5.1迭代学习控制的数学基础
5.1.1矩阵的迹及初等性质
5.1.2向量范数和矩阵范数
5.2迭代学习控制方法介绍
5.2.1迭代学习控制基本原理
5.2.2基本的迭代学习控制算法
5.2.3迭代学习控制主要分析方法
5.2.4迭代学习控制的关键技术
5.3机械手轨迹跟踪迭代学习控制仿真实例
5.3.1控制器设计
5.3.2仿真实例
5.4线性时变连续系统迭代学习控制
5.4.1系统描述
5.4.2控制器设计及收敛性分析
5.4.3仿真实例
5.5任意初始状态下的迭代学习控制
5.5.1问题的提出
5.5.2控制器的设计
5.5.3仿真实例
参考文献
第6章机械手反演控制
6.1简单反演控制器设计
6.1.1基本原理
6.1.2仿真实例
6.2单关节机械手的反演控制
6.2.1系统描述
6.2.2反演控制器设计
6.2.3仿真实例
6.3双耦合电机的反演控制
6.3.1系统描述
6.3.2反演控制器设计
6.3.3仿真实例
参考文献
第7章机械手滑模控制
7.1机械手动力学模型及特性
7.2基于计算力矩法的滑模控制
7.2.1系统描述
7.2.2控制律设计
7.2.3仿真实例
7.3基于输入输出稳定性理论的滑模控制
7.3.1系统描述
7.3.2控制律设计
7.3.3仿真实例
7.4基于LMI的指数收敛非线性干扰观测器的控制
7.4.1非线性干扰观测器的问题描述
7.4.2非线性干扰观测器的设计
7.4.3LMI不等式的求解
7.4.4计算力矩法的滑模控制
7.4.5仿真实例
7.5欠驱动两杆机械臂Pendubot滑模控制
7.5.1Pendubot控制问题
7.5.2Pendubot机械臂建模
7.5.3Pendubot动力学模型
7.5.4Pendubot模型的分析
7.5.5滑模控制律设计
7.5.6闭环稳定性分析
7.5.7基于Hurwitz的参数设计
7.5.8仿真实例
参考文献
第8章机械手自适应鲁棒控制
8.1单力臂机械系统的鲁棒自适应控制
8.1.1问题描述
8.1.2鲁棒模型参考自适应控制
8.1.3仿真实例
8.2二级倒立摆的H鲁棒控制
8.2.1系统的描述
8.2.2基于LMI的控制律的设计
8.2.3二级倒立摆系统的描述
8.2.4仿真实例
参考文献
第9章机械手末端轨迹及力的连续切换滑模控制
9.1基于双曲正切函数切换的滑模控制
9.1.1双曲正切函数的特性
9.1.2仿真实例
9.1.3基于双曲正切函数的滑模控制
9.1.4仿真实例
9.2基于位置动力学模型的机械手末端轨迹滑模控制
9.2.1工作空间直角坐标与关节角位置的转换
9.2.2机械手在工作空间的建模
9.2.3滑模控制器的设计
9.2.4仿真实例
9.3基于角度动力学模型的机械手末端轨迹滑模控制
9.3.1机械手在工作空间的建模
9.3.2工作空间直角坐标与关节角位置的转换
9.3.3滑模控制器的设计
9.3.4仿真实例
9.4工作空间中双关节机械手末端的阻抗滑模控制
9.4.1问题的提出
9.4.2阻抗模型的建立
9.4.3滑模控制器的设计
9.4.4仿真实例
9.5受约束条件下双关节机械手末端力及关节角度的滑模控制
9.5.1问题的提出
9.5.2模型的降阶
9.5.3控制律的设计
9.5.4稳定性分析
9.5.5仿真实例
参考文献
第10章重复控制基本原理及设计方法
10.1重复控制的基本原理
10.1.1重复控制的理论基础
10.1.2基本的重复控制系统结构
10.1.3基本重复控制系统稳定性分析
10.1.4仿真实例
10.2一种具有多路周期指令信号的数字重复控制
10.2.1系统的结构
10.2.2重复控制器的设计
10.2.3仿真实例
参考文献
|
內容試閱:
|
前言
有关机器人控制理论及其工程应用,近年来已有大量的论文发表。作者多年来一直从事控制理论及应用方面的教学和研究工作,为了促进机器人控制和自动化技术的进步,反映机器人控制设计与应用中的最新研究成果,并使广大研究人员和工程技术人员能了解、掌握和应用这一领域的最新技术,学会用MATLAB语言进行各种机器人控制算法的分析和设计,作者编写了这本书,以抛砖引玉,供广大读者学习参考。本书是在总结作者多年研究成果的基础上,进一步理论化、系统化、规范化、实用化而成的,特点如下:1 控制算法取材新颖,内容先进,重点置于学科交叉部分的前沿研究和介绍一些有潜力的新思想、新方法和新技术,取材着重于基本概念、基本理论和基本方法。2 针对每种控制算法给出了完整的MATLAB仿真程序,并给出了程序的说明和仿真结果,具有很强的可读性。3 着重从应用领域角度出发,突出理论联系实际,面向广大工程技术人员,具有很强的工程性和实用性。书中有大量应用实例及结果分析,为读者提供了有益的借鉴。4 所给出的各种控制算法完整,程序设计结构设计力求简单明了,便于自学和进一步开发。5 所介绍的方法不局限于机械手的控制,同时也适合解决运动控制领域其他背景的控制问题。本书主要以机器人力臂为被控对象,此外,为了介绍一些新的运动控制方法,本书还以机械系统、电机、倒立摆为被控对象来辅助说明。本书是在原有《机器人控制系统的设计与MATLAB仿真》基础上撰写而成的,并增加、修改和删除了部分内容。全书共分为上下册,本书作为上册,共包括10章。第1章为绪论,介绍机械手的几种控制方法及模型特性; 第2章介绍机械手PID控制的几种基本设计方法,通过仿真和分析进行了说明; 第3章介绍机械手神经网络自适应控制的几种设计方法; 第4章介绍基于LMI的模糊鲁棒控制方法和几种机械手模糊自适应控制器的设计方法; 第5章介绍机械手迭代学习控制和重复控制的设计方法; 第6章介绍机械手反演控制的设计方法; 第7章介绍机械手滑模控制基本设计方法; 第8章介绍机械手自适应鲁棒控制方法,包括鲁棒控制器和自适应控制器的设计; 第9章介绍机械手末端轨迹及力控制设计方法; 第10章介绍重复控制的基本原理及设计方法。本书介绍的控制方法有些选自于高水平国际杂志和著作中的经典控制方法,并对其中的一些算法进行了修正或补充。通过对一些典型控制器设计方法进行详细的理论分析和仿真分析,使一些深奥的控制理论易于掌握,为读者的深入研究打下基础。本书是基于英文版MATLAB环境下开发书中仿真图的图字均为英文。书中各章节的内容具有很强的独立性,读者可以结合自己的方向深入地进行研究。作者在研究过程中,东北大学徐心和教授和薛定宇教授在机器人控制及仿真等方面给予作者很多的指点,北京航空航天大学尔联洁教授给予作者在控制理论方面多年的指导,在此深表感谢。由于作者水平有限,书中难免存在一些不足和错误之处,真诚欢迎广大读者批评指正。若读者有指正或需与作者商讨,或对控制算法及仿真程序有疑问,请通过电子邮件ljk@buaa.edu.cn与作者联系。作者相信,通过与广大同行的交流,可以得到许多有益的建议,从而再版时将本书完善。刘金琨2016年12月于北京航空航天大学
第3章机械手神经网络自适应控制
如果被控对象的数学模型已知,滑模控制器可以使系统输出直接跟踪期望指令,但较大的建模不确定性需要较大的切换增益,这就造成抖振,抖振是滑模控制中难以避免的问题。将滑模控制结合神经网络逼近用于非线性系统的控制中,采用神经网络实现模型未知部分的自适应逼近,可有效地降低模糊增益。神经网络自适应律通过Lyapunov方法导出,通过自适应权重的调节保证整个闭环系统的稳定性和收敛性。RBF神经网络于1988年提出。相比多层前馈BP网络,RBF网络由于具有良好的泛化能力,网络结构简单,避免不必要和冗长的计算而备受关注。关于RBF网络的研究表明RBF神经网络能在一个紧凑集和任意精度下,逼近任何非线性函数[1]。目前,已经有许多针对非线性系统的RBF神经网络控制研究成果发表。3.1一种简单的RBF网络自适应滑模控制3.1.1问题描述
考虑一种简单的动力学系统:
=f, u(3.1)
其中,为转动角度,u为控制输入。写成状态方程形式为
x1=x2
x2=fx u(3.2)
其中,x1=,x2=,fx为未知。角度指令为xd,则误差及其导数为e=x1-xd,e=x2-xd定义滑模函数
s=ce e,c0(3.3)
则s=ce e=ce x2-xd=ce fx u-xd由式(3.3)可见,如果s0,则e0且e0。3.1.2RBF网络原理由于RBF网络具有万能逼近特性[1],采用RBF神经网络逼近fx,网络算法为
hj=exp‖x-cj‖22b2j(3.4)
f=W*Thx (3.5)
其中,x为网络的输入,j为网络隐含层第j个节点,h=[hj]T 为网络的高斯基函数输出,W*为网络的理想权值, 为网络的逼近误差,N。网络输入取x=[x1x2]T,则网络输出为
fx=W^Thx3.6
3.1.3控制算法设计与分析
由于fx-f^x=W*Thx -W^Thx=-W~Thx 。定义Lyapunov函数为
V=12s2 12W~TW~(3.7)
其中,0,W~=W^-W*。
则
V=ss1W~TW
=sce fx u-xd 1W~TW
设计控制律为
u=-ce-f^x xd-sgns(3.8)
则
V=sfx-f^x-sgns 1W~TW
=s-W~Thx -sgns 1W~TW
=s-s W~T1W-shx
取max,自适应律为
W=shx(3.9)
则V=s-s0。可见, 控制律中的鲁棒项sgns的作用是克服神经网络的逼近误差,以保证系统稳定。由于当且仅当s=0时,V=0。即当V0时,s0。根据LaSalle不变性原理,闭环系统为渐进稳定,即当t时,s0。系统的收敛速度取决于。由于V0,V0,则当t时,V有界,因此,可以证明W^有界,但无法保证W^收敛于W*。3.1.4仿真实例考虑如下被控对象x1=x2
x2=fx u
其中,fx=10x1x2。被控对象的初始状态取[0.150],位置指令为xd=sint,控制律采用式(3.8),自适应律采用式(3.9),取=1500,=1.5。根据网络输入x1和x2的实际范围来设计高斯基函数的参数[2],参数cj和bj取值分别为0.5[-2-1012]和3.0。仿真程序中为了避免混淆,将s=ce e中的c写为,取=10。网络权值中各个元素的初始值取0.10。仿真结果如图31和图32所示。
图31角度和角速度跟踪
图32fx及逼近
仿真程序如下:(1) Simulink主程序: chap3_1sim.mdl
(2) 控制律及自适应律S函数: chap3_1ctrl.m
function [sys,x0,str,ts] = spacemodelt,x,u,flag
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 1,
sys=mdlDerivativest,x,u;
case 3,
sys=mdlOutputst,x,u;
case {2,4,9}
sys=[];
otherwise
error[''Unhandled flag = '',num2strflag];
end
function [sys,x0,str,ts]=mdlInitializeSizes
global b c lama
sizes = simsizes;
sizes.NumContStates= 5;
sizes.NumDiscStates= 0;
sizes.NumOutputs = 2;
sizes.NumInputs= 4;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizessizes;
x0= 0.1*ones1,5;
str = [];
ts= [0 0];
c=0.5*[-2 -1 0 1 2;
-2 -1 0 1 2];
b=3.0;
lama=10;
function sys=mdlDerivativest,x,u
global b c lama
xd=sint;
dxd=cost;
x1=u2;
x2=u3;
e=x1-xd;
de=x2-dxd;
s=lama*e de;
W=[x1 x2 x3 x4 x5]'';
xi=[x1;x2];
h=zeros5,1;
for j=1:1:5
hj=exp-normxi-c:,j^22*b^2;
end
gama=1500;
for i=1:1:5
sysi=gama*s*hi;
end
function sys=mdlOutputst,x,u
global b c lama
xd=sint;
dxd=cost;
ddxd=-sint;
x1=u2;
x2=u3;
e=x1-xd;
de=x2-dxd;
s=lama*e de;
W=[x1 x2 x3 x4 x5];
xi=[x1;x2];
h=zeros5,1;
for j=1:1:5
hj=exp-normxi-c:,j^22*b^2;
end
fn=W*h;
xite=1.50;
%fn=10*x1 x2;%Precise f
ut=-lama*de ddxd-fn-xite*signs;
sys1=ut;
sys2=fn;3 被控对象S函数: chap3_1plant.m
function [sys,x0,str,ts]=s_functiont,x,u,flag
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 1,
sys=mdlDerivativest,x,u;
case 3,
sys=mdlOutputst,x,u;
case {2, 4, 9 }
sys = [];
otherwise
error[''Unhandled flag = '',num2strflag];
end
function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates= 2;
sizes.NumDiscStates= 0;
sizes.NumOutputs = 3;
sizes.NumInputs= 2;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 0;
sys=simsizessizes;
x0=[0.15;0];
str=[];
ts=[];
function sys=mdlDerivativest,x,u
ut=u1;
f=10*x1*x2;
sys1=x2;
sys2=f ut;
function sys=mdlOutputst,x,u
f=10*x1*x2;
sys1=x1;
sys2=x2;
sys3=f;4 作图程序: chap3_1plot.m
close all;
figure1;
subplot211;
plott,x:,1,''r'',t,x:,2,''b'',''linewidth'',2;
xlabel''times'';ylabel''position tracking'';
subplot212;
plott,cost,''r'',t,x:,3,''b'',''linewidth'',2;
xlabel''times'';ylabel''speed tracking'';
figure2;
plott,f:,1,''r'',t,f:,3,''b'',''linewidth'',2;
xlabel''times'';ylabel''f approximation'';3.2基于RBF网络逼近的机械手自适应控制通过对文献[3]的控制方法进行详细推导及仿真分析,研究一类机械臂神经网络自适应控制的设计方法。3.2.1问题的提出设n关节机械手方程为
Mqq Cq,qq Gq Fq d=(3.10)
其中,Mq为nn阶正定惯性矩阵,Cq,q为nn阶惯性矩阵,其中,Gq为n1阶惯性向量,Fq为摩擦力,d为未知外加干扰,为控制输入。跟踪误差为et=qdt-qt定义误差函数为
r=e e(3.11)
其中,=T0,则
q=-r qd e
Mr=Mqd-q e=Mqd e-Mq
=Mqd e Cq G F d-
=Mqd e-Cr Cqd e G F d-
=-Cr- f d(3.12)
其中,fx=Mqd e Cqd e G F。在实际工程中,模型不确定项f为未知,为此,需要对不确定项f进行逼近。采用RBF网络逼近f,根据fx的表达式,网络输入取x=[eTeTqTdqTdqTd]设计控制律为
=f^ Kvr(3.13)
其中,f^x为RBF网络的估计值。将控制律式(3.13)代入式(3.12),得
Mr=-Cr-f^-Kvr f d
=-Kv Cr f~ d=-Kv Cr 0(3.14)
其中,f~=f-f^,0=f~ d。如果定义Lyapunov函数L=12rTMr
则
L=rTMr 12rTMr=-rTKvr 12rTM-2Cr rT0
L=rT0-rTKvr
这说明在Kv固定条件下,控制系统的稳定依赖于0,即f^对f的逼近精度及干扰d的大小。采用RBF网络对不确定项f进行逼近。理想的RBF网络算法为
j=g‖x-ci‖2b2j
y=Wx
其中,x为网络的输入信号,=[12n],j为隐层节点的个数,i为网络输入的个数。3.2.2基于RBF神经网络逼近的控制器1. 控制器的设计
采用RBF网络逼近f,则RBF神经网络的输出为
f^x=W^Tx(3.15)
取W~=W-W^,‖W‖FWmax设计控制律为
=W^Tx Kvr-?瘙經(3.16)
其中,v为用于克服神经网络逼近误差的鲁棒项。将控制律式(3.16)代入式(3.12),得
Mr=-Kv Cr W~Tx d ?瘙經=-Kv Cr 1(3.17)
其中,1=W~Tx d ?瘙經。2. 稳定性及收敛性分析根据控制律式(3.16)中是否有?瘙經t项,和d是否存在以及神经网络自适应律设计的不同,系统的收敛性不同。1) 取vt=0,存在和d的情况定义Lyapunov函数
L=12rTMr 12trW~TF-1W~(3.18)
则L=rTMr 12rTMr trW~TF-1W
将式(3.17)代入上式,得
L=-rTKvr 12rTM-2Cr trW~TF-1W rT rT d(3.19)
考虑机械手特性,并取W=-FrT
即神经网络自适应律为
W=FrT(3.20)
则L=-rTKvr rT d-Kvmin‖r‖2 N bd‖r‖
其中,‖‖N,‖d‖bd。当满足下列收敛条件时,L0:
‖r‖N bdKvmin(3.21)
2) 取vt=0,=0,d=0的情况Lyapunov函数为
L=12rTMr 12trW~TF-1W~(3.22)
此时控制律和自适应律为
=W^Tx Kvr(3.23)
W=FrT(3.24)
由式(3.17)知
Mr=-Kv Cr W~Tx
则L=rTMr 12rTMr=-rTKvr0
3) 取vt=0,存在和d,自适应律采取UUB的形式Lyapunov函数和控制律取式(3.22)和式(3.23)。自适应律为
W=FrT-kF‖r‖W^(3.25)
则根据式(3.19),有L=-rTKvr 12rTM-2Cr trW~TF-1W rT rT d
将式(3.25)代入上式,得
L=-rTKvr trW~T-rT k‖r‖W^ rT rT d
=-rTKvr k‖r‖trW~TW-W~ rT d
由于trW~TW-W~=W~,WF-‖W‖2F‖W~‖F‖W‖F-‖W~‖2F
则
L-Kvmin‖r‖2 k‖r‖‖W~‖FWmax-‖W~‖F N bd‖r‖
=-‖r‖Kvmin‖r‖ k‖W~‖F‖W~‖F-Wmax-N bd
由于
Kvmin‖r‖ k‖W~‖F‖W~‖F-Wmax-N bd
=k‖W~‖F-Wmax22-kW2max4 Kvmin‖r‖-N bd
则要使L0,需要
‖r‖kW2max4 N bdKvmin(3.26)
或
‖W~‖FWmax2 W2max4 N bdk(3.27)
4) 存在和d,考虑鲁棒项?瘙經t设计的情况将鲁棒项v设计为
?瘙經=-N bdsgnr(3.28)
控制律取式(3.16),神经网络自适应律取式(3.20)。定义Lyapunov函数为
L=12rTMr 12trW~TF-1W~
则L=rTMr 12rTMr trW~TF-1W
将(3.17)式代入上式,得L=-rTKvr 12rTM-2Cr trW~TF-1W rT rT d ?瘙經
则L=-rTKvr rT d ?瘙經由于rT d ?瘙經=rT d rT?瘙經=rT d-‖r‖N bd0
则L0针对以上4种情况,由于当L0时,r0,根据LaSalle不变性原理,闭环系统渐近稳定,t时,r0。由于L0,L0,则L有界,从而W~有界,但无法保证W~收敛于0。3.2.3针对fx中各项分别进行神经网络逼近控制律为
=W^Tx Kvr-?瘙經 (3.29)
鲁棒项?瘙經取式(3.28)。由式(3.12)知,被控对象中的fx项可写为fx=Mq1t Cq,q2t Gq Fq其中,1t=qd e,2t=qd e。采用RBF神经网络,可以对fx中的各项分别进行逼近:
M^q=WTMMq
C^q,q=WTVVq,q
G^q=WTGGq
F^q=WTFFq
则
f^x=[WTM1tWTV2tWTGWTF]MVGF(3.30)
其中,x=MVGF,WT=[WTMWTVWTGWTF]。自适应律为
WM=FMMrT-kMFM‖r‖W^M(3.31)
WV=FVVrT-kVFV‖r‖W^V(3.32)
WG=FGGrT-kGFG‖r‖W^G(3.33)
WF=FFFrT-kFFF‖r‖W^F(3.34)
其中,kM0,kV0,kG0,kF0。稳定性分析如下:定义Lyapunov函数为L=12rTMr 12trW~TMF-1MW~M 12trW~TVF-1VW~V
12trW~TGF-1GW~G 12trW~TFF-1FW~F
则L=rTMr 12rTMr trW~TMF-1MWM trW~TVF-1VWV
trW~TGF-1GWG trW~TFF-1FWF
将式(3.17)代入上式,得
L=-rTKvr 12rTM-2Vmr rT d rT?瘙經 trW~TMF-1MWM MrT
trW~TVF-1VWV VrT trW~TGF-1GWG MrT trW~TFF-1FWF FrT(3.35)
考虑机械手特性,并将神经网络自适应律式(3.31)~式(3.34)代入上式,得
L=-rTKvr kM‖r‖trW~TMWM-W~M kV‖r‖trW~TVWV-W~V
kG‖r‖trW~TGWG-W~G kF‖r‖trW~TFWF-W~F rT d rT?瘙經
由于trW~TW-W~=W~,WF-‖W‖2F‖W~‖F‖W‖F-‖W~‖2F
考虑鲁棒项(3.28),则
L-Kvmin‖r‖2 kM‖r‖‖W~M‖FWMmax-‖W~M‖F
kV‖r‖‖W~V‖FWVmax-‖W~V‖F
kG‖r‖‖W~G‖FWGmax-‖W~G‖F kM‖r‖‖W~F‖FWFmax-‖W~F‖F
=-‖r‖[Kvmin‖r‖ kM‖W~M‖F‖W~M‖F-WMmax
kV‖W~V‖F‖W~V‖F-WVmax kG‖W~G‖F‖W~G‖F-WGmax
kF‖W~F‖F‖W~F‖F-WFmax]
由于k‖W~‖F‖W~‖F-Wmax=k‖W~‖F-Wmax22-kW2max4
要使L0,需要
‖r‖kMW2Mmax4 kVW2Vmax4 kGW2Gmax4 kFW2Fmax4Kvmin(3.36)
或
‖W~M‖FWMmax且‖W~V‖FWVmax且‖W~G‖FWGmax且‖W~F‖FWFmax(3.37)
由式(3.35)可见,由于L0当L0时,r0,根据LaSalle不变集原理,当t时,r0。由于L0,L0,则L有界,从而r和W~i有界,但无法保证W~i收敛于零。
3.2.4仿真实例选择二关节机机械臂系统,其动力学模型为Mqq Vq,qq Gq Fq d=
其中,
Mq=p1 p2 2p3cosq2p2 p3cosq2
p2 p3cosq2p2Vq,q=-p3q2sinq2-p3q1 q2sinq2
p3q1sinq20
Gq=p4gcosq1 p5gcosq1 q2p5gcosq1 q2Fq=0.2sgnq,d=[0.1sint0.1sint]T
取p=[p1,p2,p3,p4,p5]=[2.9,0.76,0.87,3.04,0.87]。RBF网络高斯基函数参数的取值对神经网络控制的作用很重要,如果参数取值不合适,将使高斯基函数无法得到有效的映射,从而导致RBF网络无效。故c按网络输入值的范围取值,取bj=0.20,c=0.1-1.5-1-0.500.511.5
-1.5-1-0.500.511.5
-1.5-1-0.500.511.5
-1.5-1-0.500.511.5
-1.5-1-0.500.511.5,网络的初始权值取零,网络输入取z=[eeqdqdqd]。系统的初始状态为[0.090-0.090],两个关节的角度指令分别为q1d=01sint,q2d=0.1sint,控制参数取Kv=diag20,20,F=diag1.5,1.5,=diag5,5,在鲁棒项中,取N=0.20,bd=0.10。采用Simulink和S函数进行控制系统的设计,神经网络权值矩阵中任意元素初值取0.10。总体逼近控制器子程序chap3_9ctrl.m,按3.2.2节第4种情况设计控制律,控制律取式(3.16),v取式(3.28),自适应律取式(3.20)。采用总体逼近控制器,仿真结果如图33~图36所示。
图33关节1及关节2的角度跟踪
图34关节1及关节2的角速度跟踪
图35关节1及关节2的控制输入
图36关节1及关节2的‖fx‖及其逼近‖f^x‖
仿真程序如下:(1) Simulink主程序: chap3_2sim.mdl
(2) 位置指令子程序: chap3_2input.m
function [sys,x0,str,ts] = spacemodelt,x,u,flag
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 1,
sys=mdlDerivativest,x,u;
case 3,
sys=mdlOutputst,x,u;
case {2,4,9}
sys=[];
otherwise
error[''Unhandled flag = '',num2strflag];
end
function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates= 0;
sizes.NumDiscStates= 0;
sizes.NumOutputs = 6;
sizes.NumInputs= 0;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1;
sys = simsizessizes;
x0= [];
str = [];
ts= [0 0];
function sys=mdlOutputst,x,u
qd1=0.1*sint;
d_qd1=0.1*cost;
dd_qd1=-0.1*sint;
qd2=0.1*sint;
d_qd2=0.1*cost;
dd_qd2=-0.1*sint;
sys1=qd1;
sys2=d_qd1;
sys3=dd_qd1;
sys4=qd2;
sys5=d_qd2;
sys6=dd_qd2;(3) 总体逼近控制器子程序: chap3_2ctrl.m
function [sys,x0,str,ts] = spacemodelt,x,u,flag
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 1,
sys=mdlDerivativest,x,u;
case 3,
sys=mdlOutputst,x,u;
case {2,4,9}
sys=[];
otherwise
error[''Unhandled flag = '',num2strflag];
end
function [sys,x0,str,ts]=mdlInitializeSizes
global node c b Fai
node=7;
c=0.1*[-1.5 -1 -0.5 0 0.5 1 1.5;
-1.5 -1 -0.5 0 0.5 1 1.5;
-1.5 -1 -0.5 0 0.5 1 1.5;
-1.5 -1 -0.5 0 0.5 1 1.5;
-1.5 -1 -0.5 0 0.5 1 1.5];
b=10;
Fai=5*eye2;
sizes = simsizes;
sizes.NumContStates= 2*node;
sizes.NumDiscStates= 0;
sizes.NumOutputs = 3;
sizes.NumInputs= 11;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 0;
sys = simsizessizes;
x0= 0.1*ones1,2*node;
str = [];
ts= [];
function sys=mdlDerivativest,x,u
global node c b Fai
qd1=u1;
d_qd1=u2;
dd_qd1=u3;
qd2=u4;
d_qd2=u5;
dd_qd2=u6;
q1=u7;
d_q1=u8;
q2=u9;
d_q2=u10;
q=[q1;q2];
e1=qd1-q1;
e2=qd2-q2;
de1=d_qd1-d_q1;
de2=d_qd2-d_q2;
e=[e1;e2];
de=[de1;de2];
r=de Fai*e;
qd=[qd1;qd2];
dqd=[d_qd1;d_qd2];
dqr=dqd Fai*e;
ddqd=[dd_qd1;dd_qd2];
ddqr=ddqd Fai*de;
z1=[e1;de1;qd1;dqd1;ddqd1];
z2=[e2;de2;qd2;dqd2;ddqd2];
for j=1:1:node
h1j=exp-normz1-c:,j^2b*b;
h2j=exp-normz2-c:,j^2b*b;
end
F=1.5*eyenode;
for i=1:1:node
sysi=1.5*h1i*r1;
sysi node=1.5*h2i*r2;
end
function sys=mdlOutputst,x,u
global node c b Fai
qd1=u1;
d_qd1=u2;
dd_qd1=u3;
qd2=u4;
d_qd2=u5;
dd_qd2=u6;
q1=u7;
d_q1=u8;
q2=u9;
d_q2=u10;
q=[q1;q2];
e1=qd1-q1;
e2=qd2-q2;
de1=d_qd1-d_q1;
de2=d_qd2-d_q2;
e=[e1;e2];
de=[de1;de2];
r=de Fai*e;
qd=[qd1;qd2];
dqd=[d_qd1;d_qd2];
dqr=dqd Fai*e;
ddqd=[dd_qd1;dd_qd2];
ddqr=ddqd Fai*de;
z=[e;de;qd;dqd;ddqd];
W_f1=[x1:node]'';
W_f2=[xnode 1:node*2]'';
z1=[e1;de1;qd1;dqd1;ddqd1];
z2=[e2;de2;qd2;dqd2;ddqd2];
for j=1:1:node
h1j=exp-normz1-c:,j^2b*b;
h2j=exp-normz2-c:,j^2b*b;
end
fn=[W_f1*h1'';
W_f2*h2''];
Kv=20*eye2;
epN=0.20;
bd=0.1;
v=-epN bd*signr;
tol=fn Kv*r-v;
fn_norm=normfn;
sys1=tol1;
sys2=tol2;
sys3=fn_norm;
4 被控对象子程序: chap3_2plant.m
function [sys,x0,str,ts]=s_functiont,x,u,flag
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 1,
sys=mdlDerivativest,x,u;
case 3,
sys=mdlOutputst,x,u;
case {2, 4, 9 }
sys = [];
otherwise
error[''Unhandled flag = '',num2strflag];
end
function [sys,x0,str,ts]=mdlInitializeSizes
global p g
sizes = simsizes;
sizes.NumContStates= 4;
sizes.NumDiscStates= 0;
sizes.NumOutputs = 5;
sizes.NumInputs=3;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 0;
sys=simsizessizes;
x0=[0.09 0 -0.09 0];
str=[];
ts=[];
p=[2.9 0.76 0.87 3.04 0.87];
g=9.8;
function sys=mdlDerivativest,x,u%From Ge book program
global p g
M=[p1 p2 2*p3*cosx3 p2 p3*cosx3;
p2 p3*cosx3 p2];
V=[-p3*x4*sinx3 -p3*x2 x4*sinx3;
p3*x2*sinx30];
G=[p4*g*cosx1 p5*g*cosx1 x3;
p5*g*cosx1 x3];
dq=[x2;x4];
F=0.2*signdq;
told=[0.1*sint;0.1*sint];
tol=u1:2;
S=invM*tol-V*dq-G-F-told;
sys1=x2;
sys2=S1;
sys3=x4;
sys4=S2;
function sys=mdlOutputst,x,u
global p g
M=[p1 p2 2*p3*cosx3 p2 p3*cosx3;
p2 p3*cosx3 p2];
V=[-p3*x4*sinx3 -p3*x2 x4*sinx3;
p3*x2*sinx30];
G=[p4*g*cosx1 p5*g*cosx1 x3;
p5*g*cosx1 x3];
dq=[x2;x4];
F=0.2*signdq;
told=[0.1*sint;0.1*sint];
qd1=sint;
d_qd1=cost;
dd_qd1=-sint;
qd2=sint;
d_qd2=cost;
dd_qd2=-sint;
qd1=0.1*sint;
d_qd1=0.1*cost;
dd_qd1=-0.1*sint;
qd2=0.1*sint;
d_qd2=0.1*cost;
dd_qd2=-0.1*sint;
q1=x1;
d_q1=dq1;
q2=x3;
d_q2=dq2;
q=[q1;q2];
e1=qd1-q1;
e2=qd2-q2;
de1=d_qd1-d_q1;
de2=d_qd2-d_q2;
e=[e1;e2];
de=[de1;de2];
Fai=5*eye2;
dqd=[d_qd1;d_qd2];
dqr=dqd Fai*e;
ddqd=[dd_qd1;dd_qd2];
ddqr=ddqd Fai*de;
f=M*ddqr V*dqr G F;
f_norm=normf;
sys1=x1;
sys2=x2;
sys3=x3;
sys4=x4;
sys5=f_norm;5 绘图子程序: chap3_2plot.m
close all;
figure1;
subplot211;
plott,x1:,1,''r'',t,x1:,2,''b'';
xlabel''times'';ylabel''position tracking for link 1'';
subplot212;
plott,x2:,1,''r'',t,x2:,2,''b'';
xlabel''times'';ylabel''position tracking for link 2'';
figure2;
subplot211;
plott,dx1:,1,''r'',t,dx1:,2,''b'';
xlabel''times'';ylabel''speed tracking for link 1'';
subplot212;
plott,dx2:,1,''r'',t,dx2:,2,''b'';
xlabel''times'';ylabel''speed tracking for link 2'';
figure3;
subplot211;
plott,tol1:,1,''r'';
xlabel''times'';ylabel''control input of link 1'';
subplot212;
plott,tol2:,1,''r'';
xlabel''times'';ylabel''control input of link 2'';
figure4;
plott,f:,1,''r'',t,f:,2,''b'';
xlabel''times'';ylabel''f and fn'';参 考 文 献
[1]J.Park, I.W.Sandberg. Universal Approximation Using Radial Basis Function Networks[J]. Neural Computation, 1991, 32: 246257.
[2]刘金琨.RBF神经网络自适应控制MATLAB仿真.北京: 清华大学出版社,2014.
[3]Lewis F L,Liu K, Yesildirek A. Neural Net Robot Controller with Guaranteed Tracking. Performance. IEEE Transactions on Neural Networks, 1995, 63: 703715.
|
|