MatlabRoboticToolbox工具箱学习笔记_第1页
MatlabRoboticToolbox工具箱学习笔记_第2页
MatlabRoboticToolbox工具箱学习笔记_第3页
MatlabRoboticToolbox工具箱学习笔记_第4页
MatlabRoboticToolbox工具箱学习笔记_第5页
免费预览已结束,剩余10页可下载查看

付费下载

下载本文档

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

文档简介

1、MatlabRoboticToolbox工具箱学习笔t己(一)软件:matlab2013a工具箱:MatlabRoboticToolboxv9.8MatlabRoboticToolbox工具箱学习笔记根据RobotToolboxdemonstrations目录,将分三大部分阐述:1、General(Rotations,Transformations,Trajectory)2、Arm(Robot,Animation,Forwarwkinematics,Inversekinematics,Jacobians,Inversedynamics,Forwarddynamics,Symbolic,Code

2、generation)3、Mobile(Drivingtoapose,Quadrotor,Braitenberg,Bug,D*,PRM,SLAM,Particlefilter)General/Rotations%绕x轴旋转pi/2得到的旋转矩阵(1)r=rotx(pi/2);%matlab默认的角度单位为弧度,这里可以用度数作为单位(2)R=rotx(30,'deg')*roty(50,'deg')*rotz(10,'deg');%求出R等效的任意旋转变换的旋转轴矢量vec和转角theta(3)theta,vec=tr2angvec(R);%旋转

3、矩阵用欧拉角表示,R=rotz(a)*roty(b)*rotz(c)(4)eul=tr2eul(R);%旋转矩阵用roll-pitch-yaw角表示,R=rotx(r)*roty(p)*rotz(y)(5)rpy=tr2rpy(R);%旋转矩阵用四元数表示一个有固定点的刚体通过绕该点的某个轴转过特定角度可达到任何姿态转轴的方向可以表示成一个单位矢量:*1n=cos«-i+cos'、j+cosy*k则描述该转动的四元数可以表示成:0.e.q=cos-Fsin一n220000=coxI-sincosa-i+sin-cos/?/+sin-cosyk2222,0sincomy2四元数

4、既反映了转动的方向又反映了转动的幅值.4=4+隼+2/+Pk1I£43I一一标量部分尸J+片j+p*k-矢量部分包括一个实数单位I和三个虚数单位i,j,k另一种表示法:4=("?),P代表矢量部分(6) q=Quaternion(R);%将四元数转化为旋转矩阵q.R;%界面,可以是“rpy,”“elue角度单位为度。(8)tripleangle('rpy');UGeneral/Transformations%沿x轴平移0.5,绕y轴旋转pi/2,绕z轴旋转-pi/2(1) t=transl(0.5,0.0,0.0)*troty(pi/2)*trotz(-pi

5、/2)%将齐次变换矩阵转化为欧拉角(2) tr2eul(t)%将齐次变换矩阵转化为roll、pitch、yaw角(3) tr2rpy(t)General/Trajectoryclear;clc;p0=-1;%定义初始点及终点位置pl=2;p=tpoly(p0,p1,50);%取步长为50figure(1);plot(p);%绘图,可以看到在初始点及终点的一、二阶导均为零p,pd,pdd=tpoly(p0,p1,50);%得到位置、速度、加速度%p为五阶多项式,速度、加速度均在一定范围内figure(2);subplot(3,1,1);plot(p);xlabel('Time')

6、;ylabel('p');subplot(3,1,2);plot(pd);xlabel('Time');ylabel('pd');subplot(3,1,3);plot(pdd);xlabel('Time');ylabel('pdd');aT/-Uftk一一-*'F-"°.6LLL,'I工J"工0%1011a30»IMBO%另外一种方法:p,pd,pdd=lspb(p0,p1,50);figure(3);subplot(3,1,1);plot(p);xlabe

7、l('Time');ylabel('p');subplot(3,1,2);plot(pd);xlabel('Time');ylabel('pd');%可以看到速度是呈梯形subplot(3,1,3);plot(pdd);xlabel('Time');ylabel('pdd');%三维的情况:p=mtraj(tpoly,012,210,50);figure(4);plot(p)01020304050%对于齐次变换矩阵的情况T0=transl(0.4,0,2,0)*trotx(pi);%定义初始点和目标

8、点的位姿T1=transl(-0.4,-0.2,0.3)*troty(pi/2)*trotz(-pi/2);T=ctraj(T0,T1,50);first=T(:,:,1);%初始位姿矩阵tenth=T(:,:,10);%第十个位姿矩阵figure(5);tranimate(T);%动画演示坐标系自初始点运动到目标点的过程MatlabRoboticToolbox工具箱学习笔记(二)Arm/Robots机器人是由多个连杆连接而成的,机器人关节分为旋转关节和移动关节。创建机器人的两个最重要的函数是:Link和SerialLink。1、Link类一个Link包含了机器人的运动学参数、动力学参数、刚体

9、惯性矩参数、电机和传动参数。操作函数:%A连杆变换矩阵%RP关节类型:'R'或'P'%friction摩擦力%nofriction摩擦力忽略%dyn显示动力学参数%islimit测试关节是否超出软限制%isrevolute测试是否为旋转关节%isprismatic测试是否为移动关节%display连杆参数以表格形式显示%char转为字符串运动学参数:%theta关节角度%d连杆偏移量%a连杆长度%alpha连杆扭角%sigma旋转关节为0,移动关节为1%mdh标准的D&H为0,否则为1%offset关节变量偏移量%qlim关节变量范围minmax动力学参

10、数:%m连杆质量%r连杆相对于坐标系的质心位置3x1%I连杆的惯性矩阵(关于连杆重心)3x3%B粘性摩擦力(对于电机)1x1或2x1%Tc库仑摩擦力1x1或2x1电机和传动参数:%G齿轮传动比%Jm电机惯性矩(对于电机)2、SerialLink类操作函数:%plot以图形形式显示机器人%teach驱动机器人%isspherical测试机器人是否有球腕关节%islimit测试机器人是否抵达关节极限%fkine前向运动学求解%ikine6s6旋转轴球腕关节机器人的逆向运动学求解%ikine33旋转轴机器人的逆向运动学求解%ikine采用迭代方法的逆向运动学求解%jacob0在世界坐标系描述的雅克比

11、矩阵%jacobn在工具坐标系描述的雅克比矩阵%maniplty可操纵性度%jtraj关节空间轨迹%accel关节加速度%coriolis关节柯氏力%dyn显示连杆的动力学属性%fdyn关节运动%friction摩擦力%gravload美节重力%inertia关节惯性矩阵%nofriction设置摩擦力为0%rne关节的力/力矩%payload在末端坐标系增加负载%perturb随机扰动连杆的动力学参数属性:%links连杆向量(1xN)%gravity重力的方向gxgygz%base机器人基座的位姿(4x4)%tool机器人的工具变换矩阵T6totooltip(4x4)%qlim关节范围qm

12、inqmax(Nx2)%offset偏置(Nx1)%name机器人名字(在图形中显示)%manuf注释,制造商名%comment注释,总评%plotoptoptionsforplot()method(cellarray)%n关节数%config机器人结构字符串,例如RRRRRR'%mdh运动学中约定的布尔数(0=DH,1=MDH)怎样创建一个机器人?%Link调用格式:%(1) L=Link()创建一个带默认参数的连杆(2) L=Link(L1)复制连杆L1(3) L=Link(OPTIONS)创建一个指定运动学、动力学参数的连杆OPTIONS可以是:%'theta',

13、THjointangle,ifnotspecifiedjointisrevolute%'d',Djointextension,ifnotspecifiedjointisprismatic%'a',Ajointoffset(default0)%'alpha',Ajointtwist(default0)%'standard'definedusingstandardD&Hparameters(default).%'modified'definedusingmodifiedD&Hparameters.%&#

14、39;offset',Ojointvariableoffset(default0)%'qlim',Ljointlimit(default)%'I',Ilinkinertiamatrix(3x1,6x1or3x3)%'r',Rlinkcentreofgravity(3x1)%'m',Mlinkmass(1x1)%'G',Gmotorgearratio(default0)%'B',Bjointfriction,motorreferenced(default0)%'Jm',Jmot

15、orinertia,motorreferenced(default0)%'Tc',TCoulombfriction,motorreferenced(1x1or2x1),(default00)%'revolute'forarevolutejoint(default)%'prismatic'foraprismaticjoint'p'%'standard'forstandardD&Hparameters(default).%'modified'formodifiedD&Hparameter

16、s.%'sym'considerallparametervaluesassymbolicnotnumeric注:不能同时指定“thetair"d”连杆的惯性矩阵(3x3)是对称矩阵,可以写成3x3矩阵,也可以是IxxIyyIzzIxyIyzIxz所有摩擦均针对电机而不是负载齿轮传动比只用于传递电机的摩擦力和惯性矩给连杆坐标系。%)%SerialLink调用格式:%(1)R=SerialLink(LINKS,OPTIONS),OPTIONS可以是:'name'、'comment','manufacturer''ba

17、se'、'tool'、'gravity'>'plotopt'(2) R=SerialLink(DH,OPTIONS),矩阵DH的构成:每个关节一行,每一行为thetadaalpha(默认为旋转关节),第五列(sigma)为可选列,sigma=0(默认)为旋转关节,sigma=1为移动关节(3) R=SerialLink(OPTIONS)没有连杆的机器人(4) R=SerialLink(R1R2.,OPTIONS)机器人连接,将R2的基座连接到R1的末端.(5) R=SerialLink(R1,options)复制机器人R1%L1=L

18、ink('d',0,'a',1,'alpha',pi/2);%定义连杆1,没有写theta说明theta为关节变兽里L1.a;%查看a的值L1.d;%查看d的值%还可以L1.RP,L1.display,L1.mdh,L1.isprismatic,L1.isrevolute等等,这样就可以查看一些默认值L2=Link('d',0,'a',1,'alpha',0);bot=SerialLink(L1L2,'name','myrobot');bot.n;%查看连杆数目bot

19、.fkine(0.10.2);%前向运动学bot.plot(0.10.2);%绘制机器人定义完连杆和机器人便可以求机器人前和逆向运动学、动力学等等。L1.参数或属性():查看连杆的参数或属性L1.操作函数(参数):操作连杆参数bot.属性():查看机器人的属性bot.操作函数(参数):操作机器人,可以进行前向、逆向运动学求解等实例:StanfordManipulatorLinkdi心仇100-90伊2去i0+90/3凝000400-90500+90尹6遢00小clear;clc;L1=Link('d',0,'a',0,'alpha',-pi/2)

20、;%定义连杆L2=Link('d',1,'a',0,'alpha',pi/2);L3=Link('theta',0,'a',0,'alpha',0);L4=Link('d',0,'a',0,'alpha',-pi/2);L5=Link('d',0,'a',0,'alpha',pi/2);L6=Link('d',1,'a',0,'alpha',0);bot=S

21、erialLink(L1L2L3L4L5L6);%连接连杆bot.display();%显示D-H参数表forward_kinematics=bot.fkine(-0.20.1100.112)%前向运动学bot=robot(6axis,RRPRRR,stdDH)+|j|theta|d|a|alpha+-11|qi|0-1,57112)q2|1)0;1.57113|0|q31Q014|q&iel0f1.57115q5|00)1.57116|q6|i|0|0一+一1+-grav-0base=1000001009.8100100001tool=1000010000109001forwardk

22、inematics=-0.09710.91990.379800.4533-0.38060.806000.8860-0.09390.454002.06310.687810.40411.0000求出末端的齐次变换矩阵:clear;clc;L1=Link('d',0,'a',0,'alpha',-pi/2,'sym');%定义连杆L2=Link('d','d2','a',0,'alpha',pi/2,'sym');L3=Link('theta'

23、;,0,'a',0,'alpha',0,'sym');L4=Link('d',0,'a',0,'alpha',-pi/2,'sym');L5=Link('d',0,'a',0,'alpha',pi/2,'sym');L6=Link('d','d6','a',0,'alpha',0,'sym');bot=SerialLink(L1L2L3L4L

24、5L6);%连接连杆symstheta1theta2d3theta4theta5theta6;forward_kinematics=bot.fkine(theta1theta2d3theta4theta5theta6)%J向运动学Stanfordarm的运动学逆解:clear;clc;clearL%thdaalphaL(1)=Link(000-pi/20);%定义连杆L(2)=Link(010pi/20);L(3)=Link(00001);L(4)=Link(000-pi/20);L(5)=Link(000pi/20);L(6)=Link(01000);bot=SerialLink(L,

25、9;name','Stanfordarm');%连接连杆T=transl(1,2,3)*trotz(60,'deg')*troty(30,'deg')*trotz(90,'deg')inverse_kinematics=bot.ikine(T,'pinv');%逆向运动学theta1=inverse_kinematics(1);theta2=inverse_kinematics(2);d3=inverse_kinematics(3);theta4=inverse_kinematics(4);theta5=inverse_kinematics(5);theta6=inverse_kinematics(6);forward_kinematics=bot.fkine(theta1theta2d3theta4theta5theta6)%B向运动学,验证结皮的准确性.%求解结

温馨提示

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

评论

0/150

提交评论