matlab中roboticstoolbox的函数解说.docx

上传人:b****0 文档编号:436679 上传时间:2022-10-10 格式:DOCX 页数:6 大小:202.25KB
下载 相关 举报
matlab中roboticstoolbox的函数解说.docx_第1页
第1页 / 共6页
matlab中roboticstoolbox的函数解说.docx_第2页
第2页 / 共6页
matlab中roboticstoolbox的函数解说.docx_第3页
第3页 / 共6页
matlab中roboticstoolbox的函数解说.docx_第4页
第4页 / 共6页
matlab中roboticstoolbox的函数解说.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

matlab中roboticstoolbox的函数解说.docx

《matlab中roboticstoolbox的函数解说.docx》由会员分享,可在线阅读,更多相关《matlab中roboticstoolbox的函数解说.docx(6页珍藏版)》请在冰豆网上搜索。

matlab中roboticstoolbox的函数解说.docx

matlab中roboticstoolbox的函数解说

matlab中robotics-toolbox的函数解说

matlab中roboticstoolbox的函数解说

1.PUMA560的MATLAB仿真

要建立PUMA560的机器人对象,首先我们要了解PUMA560的D-H参数,之后我们可以利用RoboticsToolbox工具箱中的link和robot函数来建立PUMA560的机器人对象。

其中link函数的调用格式:

L=LINK([alphaAthetaD])

L=LINK([alphaAthetaDsigma])

L=LINK([alphaAthetaDsigmaoffset])

L=LINK([alphaAthetaD],CONVENTION)

L=LINK([alphaAthetaDsigma],CONVENTION)

L=LINK([alphaAthetaDsigmaoffset],CONVENTION)

参数CONVENTION可以取‘standard’和‘modified’,其中‘standard’代表采用标准的D-H参数,‘modified’代表采用改进的D-H参数。

参数‘alpha’代表扭转角,参数‘A’代表杆件长度,参数‘theta’代表关节角,参数‘D’代表横距,参数‘sigma’代表关节类型:

0代表旋转关节,非0代表移动关节。

另外LINK还有一些数据域:

LINK.alpha%返回扭转角

LINK.A%返回杆件长度

LINK.theta%返回关节角

LINK.D%返回横距

LINK.sigma%返回关节类型

LINK.RP%返回‘R’(旋转)或‘P’(移动)

LINK.mdh%若为标准D-H参数返回0,否则返回1

LINK.offset%返回关节变量偏移

LINK.qlim%返回关节变量的上下限[minmax]

LINK.islimit(q)%如果关节变量超限,返回-1,0,+1

LINK.I%返回一个3×3对称惯性矩阵

LINK.m%返回关节质量

LINK.r%返回3×1的关节齿轮向量

LINK.G%返回齿轮的传动比

LINK.Jm%返回电机惯性

LINK.B%返回粘性摩擦

LINK.Tc%返回库仑摩擦

LINK.dhreturnlegacyDHrow

LINK.dynreturnlegacyDYNrow

其中robot函数的调用格式:

ROBOT%创建一个空的机器人对象

ROBOT(robot)%创建robot的一个副本

ROBOT(robot,LINK)%用LINK来创建新机器人对象来代替robot

ROBOT(LINK,...)%用LINK来创建一个机器人对象

ROBOT(DH,...)%用D-H矩阵来创建一个机器人对象

ROBOT(DYN,...)%用DYN矩阵来创建一个机器人对象

2.变换矩阵

利用MATLAB中RoboticsToolbox工具箱中的transl、rotx、roty和rotz可以实现用齐次变换矩阵表示平移变换和旋转变换。

下面举例来说明:

A机器人在x轴方向平移了0.5米,那么我们可以用下面的方法来求取平移变换后的齐次矩阵:

>>transl(0.5,0,0)

ans=

1.0000000.5000

01.000000

001.00000

0001.0000

B机器人绕x轴旋转45度,那么可以用rotx来求取旋转后的齐次矩阵:

>>rotx(pi/4)

ans=

1.0000000

00.7071-0.70710

00.70710.70710

0001.0000

C机器人绕y轴旋转90度,那么可以用roty来求取旋转后的齐次矩阵:

>>roty(pi/2)

ans=

0.000001.00000

01.000000

-1.000000.00000

0001.0000

D机器人绕z轴旋转-90度,那么可以用rotz来求取旋转后的齐次矩阵:

>>rotz(-pi/2)

ans=

0.00001.000000

-1.00000.000000

001.00000

0001.0000

当然,如果有多次旋转和平移变换,我们只需要多次调用函数在组合就可以了。

另外,可以和我们学习的平移矩阵和旋转矩阵做个对比,相信是一致的。

3轨迹规划

利用RoboticsToolbox提供的ctraj、jtraj和trinterp函数可以实现笛卡尔规划、关节空间规划和变换插值。

其中ctraj函数的调用格式:

TC=CTRAJ(T0,T1,N)

TC=CTRAJ(T0,T1,R)

参数TC为从T0到T1的笛卡尔规划轨迹,N为点的数量,R为给定路径距离向量,R的每个值必须在0到1之间。

其中jtraj函数的调用格式:

[QQDQDD]=JTRAJ(Q0,Q1,N)

[QQDQDD]=JTRAJ(Q0,Q1,N,QD0,QD1)

[QQDQDD]=JTRAJ(Q0,Q1,T)

[QQDQDD]=JTRAJ(Q0,Q1,T,QD0,QD1)

参数Q为从状态Q0到Q1的关节空间规划轨迹,N为规划的点数,T为给定的时间向量的长度,速度非零边界可以用QD0和QD1来指定。

QD和QDD为返回的规划轨迹的速度和加速度。

其中trinterp函数的调用格式:

TR=TRINTERP(T0,T1,R)

参数TR为在T0和T1之间的坐标变化插值,R需在0和1之间。

要实现轨迹规划,首先我们要创建一个时间向量,假设在两秒内完成某个动作,采样间隔是56ms,那么可以用如下的命令来实现多项式轨迹规划:

t=0:

0.056:

2;[q,qd,qdd]=jtraj(qz,qr,t);

其中t为时间向量,qz为机器人的初始位姿,qr为机器人的最终位姿,q为经过的路径点,qd为运动的速度,qdd为运动的加速度。

其中q、qd、qdd都是六列的矩阵,每列代表每个关节的位置、速度和加速度。

如q(:

3)代表关节3的位置,qd(:

3)代表关节3的速度,qdd(:

3)代表关节3的加速度。

4运动学的正问题

利用RoboticsToolbox中的fkine函数可以实现机器人运动学正问题的求解。

其中fkine函数的调用格式:

TR=FKINE(ROBOT,Q)

参数ROBOT为一个机器人对象,TR为由Q定义的每个前向运动学的正解。

以PUMA560为例,定义关节坐标系的零点qz=[000000],那么fkine(p560,qz)将返回最后一个关节的平移的齐次变换矩阵。

如果有了关节的轨迹规划之后,我们也可以用fkine来进行运动学的正解。

比如:

t=0:

0.056:

2;q=jtraj(qz,qr,t);T=fkine(p560,q);

返回的矩阵T是一个三维的矩阵,前两维是4×4的矩阵代表坐标变化,第三维是时间。

5运动学的逆问题

利用RoboticsToolbox中的ikine函数可以实现机器人运动学逆问题的求解。

其中ikine函数的调用格式:

Q=IKINE(ROBOT,T)

Q=IKINE(ROBOT,T,Q)

Q=IKINE(ROBOT,T,Q,M)

参数ROBOT为一个机器人对象,Q为初始猜测点(默认为0),T为要反解的变换矩阵。

当反解的机器人对象的自由度少于6时,要用M进行忽略某个关节自由度。

有了关节的轨迹规划之后,我们也可以用ikine函数来进行运动学逆问题的求解。

比如:

t=0:

0.056:

2;T1=transl(0.6,-0.5,0);T2=transl(0.4,0.5,0.2);T=ctraj(T1,T2,length(t));q=ikine(p560,T);

我们也可以尝试先进行正解,再进行逆解,看看能否还原。

Q=[0–pi/4–pi/40pi/80];T=fkine(p560,q);qi=ikine(p560,T);

6动画演示

有了机器人的轨迹规划之后,我们就可以利用RoboticsToolbox中的plot函数来实现对规划路径的仿真。

puma560;T=0:

0.056:

2;q=jtraj(qz,qr,T);plot(p560,q);

当然,我们也可以来调节PUMA560的六个旋转角,来实现动画演示。

drivebot(p560)

例子:

L1=LINK([00pi/200],'standard')

L2=LINK([-pi/20.150pi/200],'standard')

L3=LINK([00.57000],'standard');

r=robot({L1L2L3})

r.name='M'

drivebot(r)

 

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

当前位置:首页 > 自然科学 > 物理

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

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