2023年MatlabRoboticToolbo工具箱学习笔记_第1页
2023年MatlabRoboticToolbo工具箱学习笔记_第2页
2023年MatlabRoboticToolbo工具箱学习笔记_第3页
2023年MatlabRoboticToolbo工具箱学习笔记_第4页
2023年MatlabRoboticToolbo工具箱学习笔记_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

MatlabRoboticToolbox工具箱学习笔记(一)

软件:matlab2023a

工具箱:MatlabRoboticToolboxv9.8

Mat1abRoboticToolbox工具箱学习笔记根据RobotToolbox

demonstrations目录,将分三大部分阐述:

1>General(Rotations,Transformations,Trajectory)

2、Arm(Robot,Animation,Forwarwkinematics,Inversekinem

atics,Jacobians,Inversedynamics,Forwarddynamics,

Symbolic,Codegeneration)

3、Mobile(Drivingtoapose>Quadrotor,Braitenberg,

Bug,D*,PRM,SLAM,Particlefilter)

General/Rotations

%绕x轴旋转pi/2得到的旋转矩阵

(1)r=rotx(pi/2);

%matlab默认的角度单位为弧度,这里可以用度数作为单位2(A)R=

rotx(30,'deg')*roty(50,'deg')*rotz(10,'deg');

%求出R等效的任意旋转变换的旋转轴矢量vec和转角theta,(3)[th

eta,vec]=tr2angvec(R);

%旋转矩阵用欧拉角表达,R=rotz(a)*roty(b)*rotz(c)4(A)eul

=tr2eu1(R);

%旋转矩阵用roll-pitch-yaw角表达,R=rotx(r)*roty(p)*ro

tz(y>(5)rpy=tr2rpy(R);

%旋转矩阵用四元数表达

一个有固定点的刚体通过绕该点的某个轴转

过特定角度可达到任何姿态

转轴的方向可以表示成一个单位矢量:

n=cosa-i+cos/?•j+cosy•k

则描述该转动的四元数可以表示成:

e0_

q=cos—l-sin—n

22

000e

=cos—+sin—cosa•i+sin—cosp-j+sin-cosy-k

2222

四元数既反映了转动的方向又反映了转动的幅值.

四元数的表示:

e0

+sin—cosJ3•j+sin-COS/-k

22

q=2+P[i+P?j+P3k

,---标量部分

Pyi+P?j+P3k--矢量部分

包括一个实数单位1和三个虚数单位i,j,k

另一种表示法:q=”,尸),尸代表矢量部分

A(6)q=Quaternion(R);

%将四元数转化为旋转矩阵

(7)q.R;

%界面,可以是“rpy”,“eluer”角度单位为度。8(A)tripleangleCrpy7);

AGeneral/Transformations

%沿乂轴平移0.5,绕y轴旋转pi/2,绕z轴旋转-pi/2

(1)t=transl(0.5,0.0,0.0)*troty(pi/2)*trotz(-pi/2)

%将齐次变换矩阵转化为欧拉角

(2)tr2eu1(t)

%将齐次变换矩阵转化为roll、pitch、yaw角

(3)tr2rpy(t)

General/Trajectory

c1ear;Aclc;

pO=-1;%定义初始点及终点位置

pl=2;Ap=tpoly(pO,pl,50);%取步长为50

figure(1);AP1ot(p);%绘图,可以看到在初始点及终点的一、二

阶导均为零A[P,pd,pdd]=tpoly(p0,pl,50);%得到位置、速

度、加速度

%p为五阶多项式,速度、加速度均在一定范围内Migure(2);

subplot(3,1,1);plot(p);x1abel('Time');y1abel

('P');

subplot(3,l,2);p1ot(pd);xlabe1('Time');ylabel('pd');A

subplot(3,1,3);plot(pdd);xlabel('Time');yla

bel('pdd');

%此外一种方法:

[p,pd,pdd]=Ispb(p0,pl,50);.*figure(3)泠subplot(3,1,1);p1

ot(p);xlabe1('Time');y1abel('p');

subp1ot(3,l,2);plot(pd);xlabe1('Time');y1abel('p

d');%可以看到速度是呈梯形

subplot(3,1,3);plot(pdd);xlabel('Time');y1abe1('pd

d');

%三维的情况:Ap=mtraj(@tpo1y,[012],[210],50);.*fi

gure(4);

plOt(p)

%对于齐次变换矩阵的情况ATO=trans1(0.4,0.2,0)*trot

x(pi);%定义初始点和目的点的位姿AT1=transl(-0.4,-0.2,

0.3)*troty(pi/2)*trotz(-pi/2);

T=ctraj(TO,T1,50);,first=T(:,:,1);%初始位姿矩阵

tenth=T(:,:,10);%第十个位姿矩阵Afigure(5);^tranimate(T);%动

画演示坐标系自初始点运动到目的点的过程

Mat1abRoboticToo1box工具箱学习笔记

(二)

Arm/Robots

机器人是由多个连杆连接而成的,机器人关节分为旋转关节和移动关节。创建

机器人的两个最重要的函数是:Link和SerialLink。

1、Link类

一个Link包含了机器人的运动学参数、动力学参数、刚体惯性矩参数、电机

和传动参数。

操作函数:

%A连杆变换矩阵

%RP关节类型:'R'或'P'A%friction摩擦力&%nofricti

on摩擦力忽略

%dyn显示动力学参数A%is1imit测试关节是否超过软限制

%isrevolute测试是否为旋转关节

%isprismatic测试是否为移动关节

%display连杆参数以表格形式显示

%char转为字符串

运动学参数:

%theta关节角度

%d连杆偏移量A%a连杆长度A%alpha连杆扭角

%sigma旋转关节为0,移动关节为1

%mdh标准的D&H为0,否则为I

%offset关节变量偏移量

%qlim关节变量范围[minmax]

动力学参数:

%m连杆质量

%r连杆相对于坐标系的质心位置3xl

%I连杆的惯性矩阵(关于连杆重心)3X3A%B粘性摩擦力(对于电

机)lx1或2x。%Tc库仑摩擦力1x1或2x1

电机和传动参数:

%G齿轮传动比

%Jm电机惯性矩(对于电机)

2、SerialLink类

操作函数:

%plot以图形形式显示机器人

%teach驱动机器人

%isspherica1测试机器人是否有球腕关节

%islimit测试机器人是否到达关节极限

%fkine前向运动学求解4%ikine6s6旋转轴球腕关节机器人的逆向

运动学求解

%ikine33旋转轴机器人的逆向运动学求解

%ikine采用迭代方法的逆向运动学求解

%jacobO在世界坐标系描述的雅克比矩阵

%jacobn在工具坐标系描述的雅克比矩阵A%maniplty可操纵性度

%jtraj关节空间轨迹

%acce1关节加速度

%coriolis关节柯氏力

%dyn显示连杆的动力学属性

%fdyn关节运动

%friction摩擦力

%grav1oad关节重力

%inertia关节惯性矩阵

%nofriction设立摩擦力为0

%rne关节的力/力矩

%Pay1oad在末端坐标系增长负载

%perturb随机扰动连杆的动力学参数

属性:A%links连杆向量(lxN)

%gravity重力的方向[gxgygz]A%base机器人基座的位姿

(4x4>%tooI机器人的工具变换矩阵[T6totooltip](4x4>%q

lim关节范围[qminqmax](Nx2>%offset偏置(Nxl)*%name机

器人名字(在图形中显示)

%manuf注释,制造商名

%comment注释,总评

%p1otoptoptionsforplot()method(ce11array)

A%n关节数

%config机器人结构字符串,例如RRRRRR,

%mdh运动学中约定的布尔数(0=DH,1=MDH)

如何创建一个机器人?

%Link调用格式:1(A%{A)L=Link()创建一个带默认参数的连杆

*(2)L=Link(L1)复制连杆LS(3)L=Link(OPTIONS)创建一

个指定运动学、动力学参数的连杆£OPTIONS可以是:

%'theta',THjointang1e,ifnotspecifiedjointisrevo1ute

%'d*,Djointextension,ifnotspecifiedjointisprismatic

%'a*,Ajointoffset(default0>A%'alpha\Ajointtwist(defa

uIt0>%'standard*definedusingstandardD&Hparameters(d

efault)A%'modified'definedusingmodifiedD&Hparameter

s.A%'offset',Ojointvariableoffset(defauIt0)

%'q1im;Ljoint1imit(default[_])

%T,Ilinkinertiamatrix(3x1,6x1or3x3>%'r\R1

inkcentreofgravity(3xI>%'m',Mlinkmass(1x1)%

'G',Gmotorgearratio(default0)A%'B',Bjointfriction,mo

torreferenced(defauIt0)A%'Jm',Jmotorinertia,motorr

efereneed(default0>%'Tc',TCou1ombfriction,motorreferenc

ed(lx1or2x1),(default[00])

%'revolute'forarevolutejoint(defau1t)

%'prismatic'foraprismaticjoint'p'

%'standard'forstandardD&Hparameters(default).

%rmodified'formodifiedD&HparametersA%'sym'c

onsidera11parameterva1uesassymbolicnotnumeria注:不

能同时指定“theta”和“d”

连杆的惯性矩阵(3x3)是对称矩阵,可以写成3x3矩阵,也可以是[IxxIyyIzzlxy

lyzIXZ]A所有摩擦均针对电机而不是负载

齿轮传动比只用于传递电机的摩擦力和惯性矩给连杆坐标系。A%]

%Seria1Link调用格式:a%{

(1)R=Seria1Link(LINKS,OPTIONS),OPTIONS可以是:'name\'

comment\'manufacturer7

'base'>'toof>'gravityz>'plotopt^(2)R=Seria1Link(DH,OPTI

ONS),矩阵DH的构成:每个关节一行,每一行为[thetadaalphas(默认为旋转关

节),第五列(sigma)为可选列,sigma=O(默认)为旋转关节,sigma=1为移动关节A

(3)R=Seria1Link(0PTIONS)没有连杆的机器人劣

(4)R=SerialLink([RlR2,OPTIONS)机器人连接,将R2的基座连

接到R1的末端.5(劣A)R=Seria1Link(RI,options)复制机器人Rk%}

L1=Link(7dz,0,'a',1,'aIpha',pi⑵;%定义连杆1,没有写

theta说明theta为关节变量

LI.a;%查看a的值ALI.d;%查看d的值

%还可以LI.RP,Ll.display,L1.mdh,Ll.isprismatic,Ll.isrevolute

等等,这样就可以查看一些默认值

L2=LinkCd',0,'a',1,'a1pha',0);

bot=Seria1Link([LIL2],'name','myrobot');Abot.n;%查看连杆数

目Abot.fkine([0.10.2]);%前向运动学Abot.plot([0.10.2]);%绘制机

器人

定义完连杆和机器人便可以求机器人前和逆向运动学、动力学等等。

L1.参数或属性():查看连杆的参数或属性

L1.操作函数(参数):操作连杆参数

bot.属性():查看机器人的属性

bot.操作函数(参数):操作机器人,可以进行前向、逆向运动学求解等

实例:StanfordManipulator

9仇

D-H参数表:

Linkdia0i

100-90e*

2d120+909*

3d*000

400-90尹

500+90甲

6de00夕

clear;AC1C;AL1=Link('d7,0,'a0,'alpha',-pi/2);%定

义连杆

L2=LinkCd,,l,'a,,0,'alphapi/2);

L3=Link('theta',0,'a',0,'a1pha',0);

L4=Link(zd',0,'a',0,'a1pha',-pi/2);AL5=Link(zd',0,'a',0,'a

Iphapi/2);AL6=Link(d,1,'a',0,'aIpha',0);

bot=SerialLink([LlL2L3L4L5L6]);%连接连杆

bot.disp1ay();%显示D—H参数表

forward_kinematics=bot.fkine([—0.20.1100.112])%前向

运动学

bot=

robot(6axis,RRPRRR,stdDH)

—---------+----------+-----------+-----------

j1theta|d1a1alpha

____.•一一一一一一一一」-一一一一一__

1|qi|0|0|-1.571

2|q2|1|0|1.571

3|0|q3|0|0

4|q4|0|0|-1.571

5|q5|0|0|1.571

6|q6|1|0|0

——十・・•---------+-----------+-----------+---

grav==0base:=1000tool=1000

001000100

9.8100100010

00010001

forward_kinematics=

0.0971-0.45330.88602.0631

0.9199-0.3806-0.09390.6878

0.37980.80600.454010.4041

0001.0000

心求出末端的齐次变换矩阵:

c1ear;-*c1c;

LI=Link('d',0,'a;。,'alpha',-pi/2;sym');%定义连杆AL2=Link('d',

'd2','a;0,'alpha',pi/2,zsym');

L3=Link('theta',0,'a',0,'alpha0,'sym');AL4=Link('d',0,'a',0,'al

pha',-pi/2,'sym');

L5=Link('dz,0,'a',0,'aIpha',pi/2;sym');AL6=Link('d','d6',

'a',0,'alpha',0/sym')泠bot=Seria1Link([LIL2L3L

4L5L6]);%连接连杆

symstheta1theta2d3theta4theta5theta6;-*forward_kinem

atics=bot.fkine(fthetaltheta2d3theta4theta5theta61)%前向运

动学

Stanfordarm的运动学逆解:

clear;AC1c;AclearL

%thdaaIphaAL(1)=Link([000-pi/

20]);%定义连杆

L(2)=Link([010pi/20]);

L(3)=Link([00001]);

L(4)=Link([000-pi/201);

L(5)=Link([000pi/20]);

L(6)=Link([01000]);Abot=SerialLink(L,'name",

'Stanfordarm');%连接连杆AT=transi(1,2,3)*trotz(60,deg')*t

roty(30,'deg')*trotz(90,'deg')Mnverse_kinematics=bot.iki

ne(T,'pinv');%逆向运动学Athetal=inverse_kinematics(1);

theta2=inverse_kinematics(2);-*d3=inverse_kinematics(3);-*th

eta4=inverse_kinematics(4)泠theta5=inverse_kinematics(5);

theta6=inverse_kinematics(6);

forward_kinematics=bot.fkine([thetaltheta2d3theta4theta5t

heta6])%前向运动学,验证结果的准确性.

%求解结果为

温馨提示

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

评论

0/150

提交评论