二自由度机器人的位置控制
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二自由度机器人的位置控制
一、实验目的
1. 运用Matlab语言、Simulink及Robot工具箱,搭建二自由度机器人的几何模
型、动力学模型,
2. 构建控制器的模型,通过调整控制器参数,对二自由度机器人的位姿进行控
制,并达到较好控制效果。
二、工具软件
1.Matlab软件
2.Simulink动态仿真环境
3.robot工具箱
模型可以和实际中一样,有自己的质量、质心、长度以及转动惯量等,但需要注意的是它所描述的模型是理想的模型,即质量均匀。这个工具箱还支持Simulink的功能,因此,可以根据需要建立流程图,这样就可以使仿真比较明了。
把robot 工具箱拷贝到MATLAB/toolbox文件夹后,打开matalb软件,点击file--set path,在打开的对话框中选add with subfolders,选中添加MATLAB/toolbox/robot,保存。这是在matlab命令窗口键入roblocks就会弹出robot 工具箱中的模块(如下图)。
三、实验原理
在本次仿真实验中,主要任务是实现对二自由度机器人的控制,那么首先就要创建二自由度机器人对象,
二自由度机器人坐标配置仿真参数如下表1:
表1 二连杆参数配置
1.运动学模型构建二连杆的运动学模型,搭建twolink模型在MATLAB命令窗口下用函数drivebot(WJB)即可观察到该二连杆的动态位姿图。
%文件名命名为自己名字的首字母_twolink
%构造连杆一
L{1}=link([0 0.45 0 0 0],'standard') ;
L{1}.m=23.9 ;
L{1}.r=[0.091 0 0] ;
L{1}.I=[0 0 0 0 0 0] ;
L{1}.Jm=0 ;
L{1}.G=1 ;
%构造连杆二
L{2}=link([0 0.55 0 0 0],'standard') ;
L{2}.m=4.44 ;
L{2}.r=[0.105 0 0] ;
L{2}.I=[0 0 0 0 0 0] ;
L{2}.Jm=0 ;
L{2}.G=1 ;
%(机器人的名字请用自己名字的首字母如)
WJB=robot(L) ;
='WJB_twolink' ; %设定二连杆名字
qz=[0 0] ;
qr=[0 pi/2] ;
2.二连杆动力学部分
实现机器人内部动力学构建,根据拉格朗日法建立机器人动力学模型(见书上P55)即下式:
)q *)q ,q (C )q (G (M q .
.1
..
--τ=-
仍然用matlab 下M 函数来实现:
%文件名命名为自己名字的首字母_dl %二连杆动力学部分
function qdd=WJB_dl(u) %自己名字的首字母 q=u(1:2); qd=u(3:4); tau=u(5:6); g=9.8;
m1=23.9 ; m2=4.44 ; l1=0.45 ; l2=0.55 ; lc1=0.091 ;lc2=0.105 ; I1=1.27 ; I2=0.24 ;
M11=m1*lc1^2+m2*(l1^2+lc2^2+2*l1*lc2*cos(q(2)))+I1+I2 ; M12=m2*(lc2^2+l1*lc2*cos(q(2)))+I2 ; M21=m2*(lc2^2+l1*lc2*cos(q(2)))+I2 ; M22=m2*lc2^2+I2 ; M=[M11 M12 ;M21 M22] ; C11=-(m2*l1*lc2*sin(q(2)))*qd(2) ; C12=-m2*l1*lc2*sin(q(2))*(qd(1)+qd(2)) ; C21=m2*l1*lc2*sin(q(2))*qd(1); C22=0 ;
C=[C11 C12 ;C21 C22] ;
G1=(m1*lc1+m2*l1)*g*sin(q(1))+m2*lc2*g*sin(q(1)+q(2)) ; G2=m2*lc2*g*sin(q(1)+q(2)) ; G=[G1 ;G2] ;
qdd=inv(M)*(tau-G-C*qd)
最后,还需将机器人动力学和几何学联系在一起。通过机器人学工具箱中的robot模块实现。
3.控制器设计(任选一二)
(1)简单PD控制率,结构图如下,此种方法没有加任何补偿,存在较大稳态误差,但是控制算法非常简单。
(2)PD加重力补偿
带有重力补偿的PD控制可设计成
t=Kp(q期望值-q)-Kd*qd+G(q)重力项
3.PD加前馈补偿控制
加了一个逆动力学模块
t=Kp(q期望值-q)+Kd*(q期望值一阶导-q一阶导)+M(q)*q二阶导+C*q 一阶导+G(q)
四、实验步骤
1.运动学模型在matlab菜单file下新建一个M-file,将机器人运动学模型添加进去(注意更改自己的机器人命名,自己名字的首字母缩写_twolink),并将此M-file命名后保存在work文件夹下,备用。
2.在matlab命令窗口调用函数drivebot(机器人名字—自己名字首字母的缩写,不加twolink),出现机器人的动态位姿图,调节q1、q2可直观的看出二自由度机器人的位姿在改变。
3.动力学模型在matlab菜单file下再新建一个M-file,将机器人动力学学模型添加进去,并将此M-file命名后(自己名字首字母_mdl)保存在work文件夹下,备用。
4,将机器人运动学模型和动力学模型联系起来
在matlab命令窗口输入命令roblocks调出robot工具箱,再输入simulink调出SImulink动态仿真环境。
5、在Matlab菜单file下新建一个model,将robot工具箱中的robot模块拖拽到model文件里,双击编辑机器人属性,将robot object改为机器人的名字(自己名字首字母的缩写)(即运动学构建的机器人对象)。再选中robot模块,右键菜单找到