MatlabRoboticToolbo工具箱学习笔记.docx

上传人:b****7 文档编号:8731583 上传时间:2023-02-01 格式:DOCX 页数:18 大小:165.55KB
下载 相关 举报
MatlabRoboticToolbo工具箱学习笔记.docx_第1页
第1页 / 共18页
MatlabRoboticToolbo工具箱学习笔记.docx_第2页
第2页 / 共18页
MatlabRoboticToolbo工具箱学习笔记.docx_第3页
第3页 / 共18页
MatlabRoboticToolbo工具箱学习笔记.docx_第4页
第4页 / 共18页
MatlabRoboticToolbo工具箱学习笔记.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

MatlabRoboticToolbo工具箱学习笔记.docx

《MatlabRoboticToolbo工具箱学习笔记.docx》由会员分享,可在线阅读,更多相关《MatlabRoboticToolbo工具箱学习笔记.docx(18页珍藏版)》请在冰豆网上搜索。

MatlabRoboticToolbo工具箱学习笔记.docx

MatlabRoboticToolbo工具箱学习笔记

MatlabRoboticToolboxZC具箱学习笔记

(一)

软件:

matlab2013a

工具箱:

MatlabRoboticToolboxv9.8

MatlabRoboticToolboxT具箱学习笔记根据RobotToolboxdemonstrations目录,将分三大部分阐述:

1、General(Rotations,Transformations,Trajectory)

2、Arm(Robot,Animation,Forwarwkinematics,Inversekinematics,Jacobians,Inversedynamics,Forwarddynamics,Symbolic,Codegeneration)

3、Mobile(Drivingtoa

pose,Quadrotor,Braitenberg,Bug,D*,PRNI,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);

%旋转矩阵用欧拉角表示,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);

%旋转矩阵用四元数表示

一个有固定点的刚体通过绕该点的某个轴转过特定角度可达到任何姿态

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

n=cosa•i+cos0•j+cos/•k

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

3

q—cos—+sin—•n

220®e_

=cos—sin—cos•z+sin—cosp•j4-sin—cosy・Ic

2222

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

四元数的表示:

q=

e

COS——H

2

9

fsin—cosa

2

•i+

.e

sin一cos(32

■j+

esin一cos丫

2

2

今=2+PJ+PJ+Pgk

2标量部分

卩"+PJ+戸我~…矢量部分

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

另一种表示法:

9=(儿尸),P代表矢量部分

(6)q=Quaternion(R);

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

⑺q.R;

%界面,可以是“rpy”,“eluer”角度单位为度。

(8)tripleangle('rpy');

General/Transformations

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

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

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

(2)tr2eul(t)

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

(3)tr2rpy(t)

General/Trajectory

clear;

clc;

pO二T;%定义初始点及终点位置

Pl二2;

p=tpoly(pO,pl,50);%取步长为50figure(l);

plot(p);%绘图,可以看到在初始点及终点的一、二阶导均为零[p,pd,pdd]=tpoly(pO,pl,50);%得到位置、速度、加速度

那为五阶多项式,速度、加速度均在一定围

figure

(2);

subplot(3,1,1);

subplot(3,1,2);

plot(p);xlabel(,Time");ylabel('p‘);

plot(pd);xlabel('Time");ylabelCpd‘);

%另外一种方法:

[p,pd,pdd]=lspb(pO,pl,50);

figure(3);

subplot(3,1,1);plot(p);xlabel(?

Time');ylabel('p');

subplot(3,1,2);plot(pd);xlabel(?

Time*);ylabel('pd');%可以看到速度是呈梯形

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

102025304045SO

%三维的情况:

p=mtraj(tpoly,[012],[210],50);

figure(4);

plot(p)

%对于齐次变换矩阵的情况

TO=transl(O.4,0.2,0)*trotx(pi);%定义初始点和目标点的位姿

Tl=transl(-0.4,-0.2,0.3)*troty(pi/2)*trotz(~pi/2);

T=ctraj(TO,Tl,50);

first二T(:

:

1);%初始位姿矩阵

tenth二T(:

:

10);%第十个位姿矩阵

figure(5);

tranimate(T);%动画演示坐标系自初始点运动到目标点的过程

MatlabRoboticToolbox工具箱学习笔记

(二)

Arm/Robots

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

创建机器人的两个最重要的函数是:

Link和SerialLinko

1、

Link类

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

传动参数。

操作函数:

%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]

动力学参数:

%m连杆质量

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

%I连杆的惯性矩阵(关于连杆重心)3x3

%B粘性摩擦力(对于电机)1x1或2x1

%Tc库仑摩擦力1x1或2x1

电机和传动参数:

%G齿轮传动比

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

2、SerialLink类

操作函数:

%plot

%teach

%isspherical

%islimit

%fkine

%ikine6s

%ikine3

%ikine

%jacobO

%jacobn

%maniplty

%jtraj

%accel

%coriolis

%dyn

%fdyn

%friction

%gravload

%inertia

%nofriction

%rne

%payload

%perturb

属性:

%links

%gravity

%base

%tool

以图形形式显示机器人

驱动机器人测试机器人是否有球腕关节测试机器人是否抵达关节极限

前向运动学求解

6旋转轴球腕关节机器人的逆向运动学求解

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

釆用迭代方法的逆向运动学求解

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

在工具坐标系描述的雅克比矩阵

可操纵性度

关节空间轨迹

关节加速度

关节柯氏力

显示连杆的动力学属性

关节运动

摩擦力

关节重力

关节惯性矩阵

设置摩擦力为0

关节的力/力矩

在末端坐标系增加负载随机扰动连杆的动力学参数

连杆向量(lxN)

重力的方向[gxgygz]

机器人基座的位姿(4x4)

机器人的工具变换矩阵】T6totooltip](4x4)

%qlim

%offset

%name

%manuf

%comment

%plotopt

%n

%config

%mdh

关节1^1[qminqmax.(Nx2)

偏置(Nxl)

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

注释,制造商名注释,总评optionsforplot()method(cellarray)关节数

机器人结构字符串,例如'RRRRRR'运动学中约定的布尔数(0二DH,1二MDH)

怎样创建一个机器人?

%Link调用格式:

%{

(1)L=LinkO创建一个带默认参数的连杆

(2)L=Link(L1)复制连杆L1

(3)L=Link(OPTIONS)创建一个指定运动学、动力学参数的连杆

OPTIONS可以是:

%'theta,TH

jointangle,ifnotspecifiedjoint

isrevolute

%?

d\D

jointextension,ifnot

specifiedjoint

isprismatic

%?

a\A

jointoffset(default0)

%,alpha*,A

jointtwist(default0)

%'standard,

definedusingstandardD&Hparameters

(default)・

%'modified'

definedusingmodifiedD&H

parameters・

%'offset,,0

jointvariableoffset(default0)

%'qlinf,L

jointlimit(default[])

%'I',I

linkinertiamatrix(3x1,6x1or

3x3)

%?

r\R

linkcentreofgravity(3x1)

%J,M

linkmass(lxl)

%JG\G

motorgearratio(default0)

%JB\B

jointfriction,motorreferenced

(default0)

%*Jm*,J

motorinertia,motorreferenced

(default0)

%JTc\T

Coulombfriction,motor

referenced(lxl

or2x1),(default[00])

%'revolute,

forarevolutejoint(default)

%'prismatic'

foraprismaticjoint'p‘

%'standard'

forstandardD&Hparameters

(default)・

%'modified'

formodifiedD&Hparameters・

symbolicnotnumeric

%'sym'

considerallparametervaluesas

注:

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

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

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

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

%}

%SerialLink调用格式:

%{

(1)R=SerialLink(LINKS,OPTIONS),OPTIONS可以是:

'name'、

'comment'、'manufacturer'

'base’、'tool'、’gravity*、’plotopt*

(2)R=SerialLink(DH,OPTIONS),矩阵DH的构成:

每个关节一行,

每一彳亍为[thetadaalpha]

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

(3)R=SerialLink(OPTIONS)没有连杆的机器人

(4)R=SerialLink([RlR2...],OPTIONS)机器人连接,将R2的基座连接到R1的末端.

(5)R=SerialLink(Rl,options)复制机器人Rl

%}

LI=Link('d',0,'a',1,,alpha',pi/2);%定义连杆1,没有写theta说明theta为关节变量

Ll.a;%查看d的值

Ll.d;%查看d的值

%还可以Ll.RP,LI.display,LI.mdh,LI.isprismatic,LI.isrevolute等等,这样就可以查看一些默认值

L2=Link(,d,,0,'a',1,'alpha,,0);

bot=SerialLink([LIL2],'name','myrobot');

bot.n;%查看连杆数目

bot.fkine([0.10.2]);%前向运动学

bot.plot([0.10.2]);%绘制机器人

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

L1•参数或属性():

查看连杆的参数或属性

L1.操作函数(参数):

操作连杆参数

bot.属性():

查看机器人的属性

bot.操作函数(参数):

操作机器人,可以进行前向、逆向运动学求解等

实例:

StanfordManipulator

D-H参数表:

Link

a.

1

0

0

—90

2

0

+90

3

d*

0

0

0

4

0

0

-90

5

0

0

+90

0*

6

0

0

clear;

clc;

LI=Link('d‘,0,'a',0,*alpha*,-pi/2):

%定义连杆

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=SerialLink([LlL2L3L4L5L6]);%连接连杆

bot.display();%显示D~H参数表

forward_kinematics=bot.fkine([-0.20.1100.112])%前向运动学

bot=

robot(6axis,RRPRRR,stdDH)

+・

1

1

j1

+theta|

•一一一一一一一一丄一一■■

+

d1

+・

a1

■一■■■■—丄■一■

alpha

1

1

1|

■■■■■■■■十—qll

•一

0|

■■■■■■■十

0|

-1.571

1

2|

q2|

1|

0|

1.571

1

3|

0|

q3|

0|

0

1

4|

q4|

0|

0|

-1.571

1

5|

q5|

0|

0|

丄・571

1

6|

q6|

0|

0

+——++++

grav=0

base=1

000

tool=

1

0

0

0

0

0

100

0

1

0

0

9.81

0

010

0

0

1

0

0

001

0

0

0

1

forward_kinematics=

-0.0971

-0.4533

0.8860

2.0631

0.9199

-0.3806

-0.0939

0.6878

0.3798

0.8060

0・4540

10.4041

0

0

0

1.0000

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

clear;

clc;

Ll=Link('d',0,'a',0,'alpha',-pi/2,'sym');%定义连杆L2二Link('d','d2','a',0,*alpha1,pi/2,'sym');

L3=Link”theta1,0,Ja",0,Jalpha1,0,'sym');

L4=Link(,d‘,0,1a,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([LlL2L3L4L5L6]);%连接连杆

symsthetaltheta2d3theta4thetadtheta6;

forward_kinematics=bot・fkine([thetaltheta2d3theta4thetaotheta6])%前向运动学

Stanfordarm的运动学逆解:

clear;

clc;

clearL

%

thda

alpha

L(l)二Link([0

00-pi/2

0]);%定

义连杆

L

(2)=Link([0

10pi/2

01);

L(3)=

Link([00

00

1]);

L(4)=Link([0

00-pi/2

0]);

L(5)=Link([0

00pi/2

0]);

L(6)=

Link([01

00

0]);

bot=SerialLink(L,

'name',Stanfordarm');%连接连杆

T^transl(1,2,3)*trotz(60,'deg')*troty(30,'deg')*trotz(90,'deg')inverse_kinematics=bot.ikine(T,'pinv'):

%逆向运动学thetal=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([thetaltheta2d3theta4thetaothetaG])'%前向运动学,验证结果的准确性.

%求解结果为T与forward_kinematics—致。

正确。

求解Stanfordarm在世界坐标系描述的雅克比矩阵

clear;

clc;

clearL

%

thda

alpha

L(l)=Link([0

00-pi/2

0]);%定

义连杆

L

(2)二Link([0

10pi/2

0]);

L(3)=

Link([00

00

1]);

0

0

0

name,,'Stanford

0-pi/2

0pi/2

0

arm);%连接连杆

symsthetaltheta2d3theta4thetaotheta6;

J0=vpa(bot・jacob0([thetaltheta2d3theta4thetaotheta6J),4)

求平面二自由度机器人在世界坐标系描述的雅克比矩阵

D-H参数表:

Link

1

«1

0

0

2

«2

0

0

clear;

clc;

clearL

L(l)=Link(,d',0,'a','al','alpha',0,'sym,);%定义连杆L

(2)=Link('d',0,'a','a2','alpha',0,'sym');

bot=SerialLink(L,'name',,Planar2-dofrobot,);%连接连杆symsthetaltheta2;

JO=bot.jacobO([thetaltheta2]);

JO=simplify(JO)

求得:

JO=

[-a2*sin(thetal+theta2)-al*sin(thetal),-a2*sin(thetal+theta2)]

[a2*cos(thetal+theta2)+al*cos(thetal),

cos(thetal+

theta2)]

[

0,

0]

[

0,

0]

[

0,

0]

[

1,

1]

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1