《2023年MatlabRoboticToolbo工具箱学习笔记.pdf》由会员分享,可在线阅读,更多相关《2023年MatlabRoboticToolbo工具箱学习笔记.pdf(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Matlab Robotic T o olbox 工具箱学习笔记(一)软件:matlab20 2 3a工 具 箱:M a tlab R obotic Toolbox v 9.8Mat 1 ab R o b ot i c T oolbox 工具箱学习笔记根据 Robot Toolboxdemonstratio n s 目录,将分三大部分阐述:1 Gen e ral(Ro t ation s,Trans f o rmations,Tr a jec t o r y)2、Arm(R o b o t,Animati o n,Forwa r w kinematics,Inve r s e kin e ma
2、 t i cs,Ja c o b ians,I n v erse dy n amics,Forw a rd d y n am i cs,S y mbolic,C ode ge n e r ation)3、Mobile(Dr i vin g t o a pose Qu a dr o t o r,Br a i t enbe r g,Bug,D*,PRM,SLAM,P a r t icle filt e r)General/Rota t i o ns%绕 x 轴旋转p i/2 得到的旋转矩阵(1)r=r otx(pi/2);%matla b 默认的角度单位为弧度,这里可以用度数作为单位2(A)R=r
3、otx(30,d eg)*r o t y(50,deg)*rot z(10,d e g);%求出R 等效的任意旋转变换的旋转轴矢量vec和转角theta,(3)t heta,v ec=t r2angvec(R);%旋转矩阵用欧拉角表达,R=rot z(a)*r o t y(b)*r o tz(c)4(A)eul=t r 2 e u 1(R);%旋转矩阵用 roll-pi t ch-yaw 角表达,R=r o t x(r)*roty(p)*r ot z(y(5)r py=tr2rpy(R);%旋转矩阵用四元数表达一个有固定点的刚体通过绕该点的某个轴转过特定角度可达到任何姿态转轴的方向可以表示成一
4、个单位矢量:n=cos a -i+cos/?j+cos y k则描述该转动的四元数可以表示成:e 0 _q=cos l-sin n2 20 0 0 e=cos +sin cos a i+sin cos p -j+sin-cos y-k2 2 2 2四元数既反映了转动的方向又反映了转动的幅值.四元数的表示:e+sin cos J3 20j+sin-2COS/-kq=2+Pi+P?j+P3k,-标量部分Pyi+P?j+P3k-矢量部分包括一个实数单位1和三个虚数单位i,j,k另一种表示法:q=”,尸),尸代表矢量部分A(6)q=Quat e r n ion(R);%将四元数转化为旋转矩阵(7)q.
5、R;%界面,可以是“rpy”,“e luer”角度单位为度。8(A)t riple a ngleCrpy7);AG e n eral/T rans f or mations%沿乂轴平移0.5,绕 y 轴旋转p i/2,绕 z 轴旋转-pi/2(1)t=tr a n sl(0.5,0.0,0.0)*tr o ty(pi/2)*tr o tz(-pi/2)%将齐次变换矩阵转化为欧拉角(2)tr2eu 1 (t)%将齐次变换矩阵转化为ro ll、pitch、yaw角(3)tr 2 r p y(t)G e ne r al/Traje c to r yc 1 ear;Aclc;pO=-1 ;%定义初始点
6、及终点位置pl=2;Ap=tp o ly(pO,pl,50);%取步长为 50f i gu r e(1 );AP1 o t(p);%绘图,可以看到在初始点及终点的一、二阶导均为零A P,pd,pdd=tpoly(p 0,p l,50);%得到位置、速度、加速度%p为五阶多项式,速度、加速度均在一定范围内Migu re(2);subpl o t(3,1,1 );plo t(p);x 1 a b el(Time);y 1 a b el(P);s u b p lot(3,l,2);p 1 ot(pd);xl a b e 1 (Time);y la b e l(pd);As u b plot(3,1,
7、3);plot(p dd);xla b el(Time);yl abel(pdd);%此外一种方法:p,pd,pdd=Is p b(p 0,pl,50);.*figure(3)泠 s u bplot(3,1,1);p 1o t(p);x labe 1 (Time);y 1 a bel(p );s u bp 1 ot(3,l,2);pl o t(pd);xl a b e 1 (Tim e );y 1 a b el(pd);%可以看到速度是呈梯形s u bplot(3,1,3);plo t(pdd);x lab e l(Tim e);y 1 abe 1 (p dd);%三维的情况:Ap=m t r
8、 a j(tpo 1 y,0 1 2,2 10,5 0);.*f ig u r e(4);p l Ot(p)%对于齐次变换矩阵的情况ATO=trans 1 (0.4,0.2,0)*tro tx(pi);%定义初始点和目的点的位姿AT 1 =transl(-0.4,-0.2,0.3)*troty(pi/2)*trotz(-p i/2);T=ctra j(TO,T1,50);,f i rst=T(:,:,1);%初始位姿矩阵tenth=T(:,:,10);%第十个位姿矩阵Afig u r e(5);tr a nimate(T);%动画演示坐标系自初始点运动到目的点的过程M a t 1 a b Ro
9、botic T o o 1 bo x 工具箱学习笔记(二)A r m/R o bots机器人是由多个连杆连接而成的,机器人关节分为旋转关节和移动关节。创建机器人的两个最重要的函数是:Link和S erialLi n k。1、Link 类一个Lin k 包含了机器人的运动学参数、动力学参数、刚体惯性矩参数、电机和传动参数。操作函数:%A 连杆变换矩阵%R P 关节类型:R 或PA%frict i on 摩擦力&%nofrict io n 摩擦力忽略%dyn 显示动力学参数A%is 1 imit 测试关节是否超过软限制%is r e v o l u t e 测试是否为旋转关节%is p r i s
10、 m a t i c 测试是否为移动关节%d i splay 连杆参数以表格形式显示%char 转为字符串运动学参数:%the t a 关节角度%d 连杆偏移量A%a 连杆长度A%a l p h a 连杆扭角%s i g m a 旋转关节为0,移动关节为1%md h 标准的D&H为0,否则为I%o ff s e t 关节变量偏移量%qlim 关节变量范围min max动力学参数:%m 连杆质量%r 连杆相对于坐标系的质心位置3 xl%I 连杆的惯性矩阵(关于连杆重心)3X3A%B 粘性摩擦力(对于电机)lx 1或 2x。T c 库仑摩擦力1 x 1或 2 x 1电机和传动参数:%G 齿轮传动比
11、%Jm 电机惯性矩(对于电机)2、S e r ialL i nk 类操作函数:%plot 以图形形式显示机器人%teach 驱动机器人%i sspherica 1测试机器人是否有球腕关节%i slimi t 测试机器人是否到达关节极限%fkine 前向运动学求解4%i kine6 s 6 旋转轴球腕关节机器人的逆向运动学求解%ikine3 3 旋转轴机器人的逆向运动学求解%ikine 采用迭代方法的逆向运动学求解%jacobO 在世界坐标系描述的雅克比矩阵%jacobn 在工具坐标系描述的雅克比矩阵A%m aniplty 可操纵性度%j t raj 关节空间轨迹%acce 1 关节加速度%co
12、r i olis 关节柯氏力%d yn 显示连杆的动力学属性%f dy n 关节运动%friction 摩擦力%gra v 1 oad 关节重力%in e rtia 关节惯性矩阵%n o f r i c t i o n 设立摩擦力为0%rn e 关节的力/力矩%P ay 1 o ad 在末端坐标系增长负载%perturb 随机扰动连杆的动力学参数属性:A%links 连杆向量(lx N)%g ra v it y 重力的方向gx gy gzA%b ase 机器人基座的位姿(4x4%to o I 机器人的工具变换矩阵 T 6 to t o ol ti p (4 x 4%qlim 关节范围qmin
13、qmax(Nx2%of f set 偏置(Nxl)*%name 机器人名字(在图形中显示)%m a nuf 注释,制造商名%comme n t 注释,总评%p 1 o to p t o p ti o n s f or p lot()method(ce 1 1 a r r ay)A%n 关节数%c o nf i g 机器人结构字符串,例 如 RRRRRR,%mdh 运动学中约定的布尔数(0=DH,1=MDH)如何创建一个机器人?%Link调用格式:1(A%A)L=L i n k()创建一个带默认参数的连杆*(2)L=L i nk(L1)复制连杆L S(3)L=L i nk(O PT IO N S
14、)创建一个指定运动学、动力学参数的连杆 OPTIONS可以是:%t h eta,TH joint an g 1 e,i f n o t s pe c i fied j o i n t is r e v o 1 ute%d*,D joint ex t ension,if no t s pe c if i ed j o i n t i s p rismatic%a*,A joint of f set(d e f a ult 0 A%alph a A joi n t twi s t(d e fau It 0%st a n d ar d*d e f in e d u s i n g stan d a
15、r d D&H p a ra m e te rs(de f a ult)A%mo d ified defined u sin g mo d i f i e d D&H p a ramet e rs.A%of f set,O j oin t variabl e off s e t(d e fa u It 0)%q 1 i m;L j o int 1 imit(default _)%T,I li nk inert i a ma t ri x(3x1,6x 1 or 3 x3%rR 1i nk centre of g r a vi t y(3x I%m,M link m a s s(1x1)%G,G
16、 moto r ge a r rat i o(d efaul t 0)A%B,B joint friction,mot or r e f ere n ced(de f a u It 0)A%Jm,J motor i n e r t ia,motor refer e need(d e fault 0%T c ,T Cou 1 omb fri c t ion,mot o r r e fe r e nced(lx1 or2x1),(d e fault 00)%re v o lute fo r a r e v ol u te jo i nt(d ef a u 1 t)%p r ismati c f o
17、r a prismatic joi n t p%s t an d a rd f o r s t a n dard D&H par a met e rs(d e f a ult).%r modif i e d for m o difi e d D&H p a r ameter s A%sym consider a 1 1 pa r am e t e r v a 1 u e s as symbol i c n o t n u m e ria 注:不能同时指定“theta”和“d”连杆的惯性矩阵(3x3)是对称矩阵,可以写成3 x 3 矩阵,也可以是 I x x Iyy Izz lx ylyz IX
18、ZA 所有摩擦均针对电机而不是负载齿轮传动比只用于传递电机的摩擦力和惯性矩给连杆坐标系。A%Seri a 1 Link 调用格式:a%(1)R=Seria 1 Link(L I NKS,OPT I ONS),OPTIONS 可以是:nam e commen t m a n u factu r e r 7base toof gravityz pl o topt(2)R =S e r i a 1 Li n k(DH,O PT IONS),矩阵DH的构成:每个关节一行,每一行为theta da a lp h a s (默认为旋转关节),第五列(s i g m a)为可选列,s i g m a=O (
19、默认)为旋转关节,s i g m a=1为移动关节A(3)R =S e r i a 1 L i n k (0 P T I O N S)没有连杆的机器人劣(4 )R =S e r i al L i n k(R l R 2 ,O P T I O N S )机器人连接,将 R 2 的基座连接到 R 1 的末端.5(劣 A)R=S e r i a 1 L i n k(R I,o p t i o n s )复制机器人 R k%L 1 =L i n k (7 d z,0,a,1,a I p h a,p i ;定义连杆 1,没有写t h e t a说明t h e t a为关节变量L I.a;%查看a的值A
20、L I.d;%查看d的值%还可以 L I.R P,L l.d i s p l a y,L 1 .m d h,L l.i s p r i s m a t i c,L l.i s r e v o l u t e等等,这样就可以查看一些默认值L 2 =L i n k C d ,0,a,1,a 1 p h a,0 );b o t =S e r i a 1 L i n k (L I L 2 ,n am e ,m y r o b o t );A b o t.n;%查看连杆数目A b o t.f k i n e(0.1 0.2 );%前向运动学A b o t.p l o t (0.1 0.2 );%绘制机器
21、人定义完连杆和机器人便可以求机器人前和逆向运动学、动力学等等。L 1.参数或属性():查看连杆的参数或属性L1.操作函数(参数):操作连杆参数b o t.属 性():查看机器人的属性b o t.操作函数(参数):操作机器人,可以进行前向、逆向运动学求解等实例:Stanford Manipula t or9仇D-H参数表:L i n kdia0i100-9 0e*2d 1 20+9 09*3d*000400-9 0尹500+9 0甲6de00夕cl e a r;A C1C;A L 1 =L i n k(d7,0,a 0,a l p ha,-p i/2);%定义连杆L2=L i nk Cd,l,a
22、,0,alph a p i/2);L3=L i nk(th e ta,0,a,0,a 1 pha,0);L4=Link(z d,0,a,0,a 1 pha,-p i/2);A L 5=Link(z d,0,a,0,aIph a pi/2);A L6=Link(d,1,a,0,a Ipha,0);bot=SerialLink(Ll L2 L3 L 4 L5 L6);%连接连杆bot.disp 1 ay();%显示 D H 参数表f o r ward_ k i n ema t ic s=bo t.f k i ne(0.2 0.1 1 0 0.1 1 2)%前向运动学bot=robot(6 axis
23、,RRPRRR,stdDH)-+-+-+-j 1theta|d 1a 1alpha_.一 一 一 一 一 一 一 一-一 一 一 一一_ _1|qi|0|0|-1.5712|q2|1|0|1.5713|0|q3|0|04|q4|0|0|-1.5715|q5|0|0|1.5716|q6|1|0|0十 -+-+-+-grav=0base:=1000tool=10000010001009.810010001000010001forward_kinematics=心求出末端的齐次变换矩阵:0.0971-0.45330.88602.06310.9199-0.3806-0.09390.68780.3798
24、0.80600.454010.40410001.0000c 1 e ar;-*c 1 c;LI=Link(d,0,a;。,alpha,-pi/2;s ym);%定义连杆A L2=Link(d,d2,a;0,alpha,pi/2,z sym);L3=Link(t h e ta,0,a,0,alph a 0,s ym);A L4=Li n k(d,0,a,0,alp ha,-p i/2,sym);L5=Link(dz,0,a,0,a Ipha,pi/2;s ym);A L 6=L ink(d,d6,a,0,alpha,0/sy m)泠 bo t=Se r i a 1 L ink(LI L 2 L
25、3 L4 L5 L6);%连接连杆syms t h eta 1 thet a 2 d3 th e t a4 thet a 5 the t a6;-*f orw a r d_ k inema tics=b o t.f k i n e(fthetal th e t a 2 d3t h e t a4 th e ta5 theta61)%前向运动学Sta n f ord arm的运动学逆解:cl e ar;AC 1 c;A c le a r L%t h d aa Ip h a AL(1)=L i nk(0 0 0-pi/2 0 );%定义连杆L(2)=L i nk(010 p i/20 );L(3)=
26、Link(0000 1);L(4)=Link(000-pi/2 01);L(5)=L ink(000pi/2 0);L(6)=Lin k(0 10 00);Ab o t=Se r ial L ink(L,n a me,S t an ford a rm);%连接连杆AT=tra n si(1,2,3)*tr o t z(60,d eg)*troty(30,deg)*t r o tz(90,deg)Mn v erse_ kinem a t i cs=b ot.i k ine(T,pinv);%逆向运动学Athetal=i n v erse_ ki n em a t ics(1);t h eta2=
27、in v er s e_ k inema t ics(2);-*d3=i n v erse_kin e ma t i c s (3);-*t het a 4=inve r se_ k inema t ics(4)泠 th e ta5=in v e r se_kinematics(5);theta6=in v erse_ k inemat i cs(6);for war d _kin e mati c s=bot.fki n e(t hetal the t a2 d 3 t h e ta4 the t a 5 thet a 6)%前向运动学,验证结果的准确性.%求解结果为T 与forward_k
28、in e ma t ics 一致。对的。求解Stan f o rd a r m 在世界坐标系描述的雅克比矩阵clea r;A c lc;.*c 1 e a r L%th d a a IphaL(1)=Link(0 0 0-pi/2 0);%定义连杆立=Li n k(0 1 0 p i/2 0 );AL(3)=Link(0 0 0 0 1);L(4)=Link(0 0 0-p i/2 0 )泠 L(5)=Link(E 0 0 0 pi/2 0);AL(6)=Lin k(0 1 0 0 0);b o t=Serial L i n k(L,n a me,S tan ford arm);%连接连杆 A
29、 S yms the t alt he t a 2 d3 theta41 h e t a 5 t h e ta 6;AJO=vpa(bot.jacob0(th e tai theta2 d3 the t a4 t h eta5 th e ta 6),4)求平面二自由度机器人在世界坐标系描述的雅克比矩阵4 H参clear;ACIC泠 c lea r LA L(1)=Link(r dO/a/aT/a 1 phaO/s y m,);%定义连杆AL(2)=L i nk Cd;0,H,匕27 a l p h a。/s ym*);bot=S e ri a 1L i n k(L,z name,f P 1 an a r 2 d o f robot1);%连接连杆s y ms theta 1 t h eta2;AjO=b o t.jaco b 0(the t al t h e t a 2);JO=s i m p li f y(J 0)求得:J 0=A a2*s in(t hetal+the t a2)-a Psi n(the t a i),-a 2*sin(thetal+the ta 2)A a 2*cos(t he t al+thet a 2)+a 1*c os(the t al),a2*c os(thetal+th e t a 2)0,00,00,01,1