MATLAB Robotics Toolbox常用函数简介

这一节,就机器人工具箱中的一些常用的函数做一下简单的介绍。机器人工具箱在机器人建模、轨迹规划、控制、可视化仿真等方面给机器人的研究和学习提供便利条件,大大提高了研究和工作效率。

在机器人工具箱中,类函数非常多,主要涉及到机器人建模、正运动学、逆运动学、动力学、逆动力学、雅克比、轨迹规划等。

对于机器人建模,用到最重要的两个函数就是Link和Seriallink函数

(1)Link 类

Link包含了与机器人连杆相关的所有信息,例如运动学参数、刚体惯性参数、电机和传送参数等。

使用方法:

A :关节传动矩阵

RP :关节类型,包括转动关节和移动关节

friction : 摩擦力

nofriction : 摩擦为0

dyn : 显示动力学参数

islimit:检测关节变量是否超出范围

isrevolute : 检测关节是否为转动关节

isprismatic : 检测关节是否为移动关节

display : 显示D-H矩阵

char : 转化为字符串

类函数属性(读/写)

theta:D-H参数

d:D-H参数

a:D-H参数

alpha:D-H参数

sigma: 默认0,旋转关节;1,移动关节

mdh: 默认0,标准D-H;1,改进D-H

offset:关节变量偏移量

qlim:关节变量范围

m: 质量

r: 质心

I: 惯性张量

B: 粘性摩擦

Tc: 静摩擦

G: 减速比

Jm: 转子惯量

示例

L = Link([0 1.2 0.3 pi/2]);

b1=isrevolute(L)    %判读L是否为旋转连杆

b2= L.d    %读取L连杆的长度

(2)Seriallink 类

Serial-link 机器人类函数表示串联类型的机器人类,该类函数对串联机械臂的内部机理进行了表述,D-H参数以及每个关节的设置等。

使用方法

plot:     显示机器人模型

plot3d   显示机器人的三维图形模型

teach    示教模式,驱动机器人运动

getpos   获取机器人模型的位置

jtraj     关节空间轨迹

edit       显示和编辑运动学和动力学参数

isspherical     检测机器人是否有球型腕关节

islimit         检测机器人是否在关节限位状态

isconfig     检测机器人的关节状态

fkine       正运动学

A          连杆其次变换矩阵

trchain     由基本变换组成的正运动学

ikine6s     六轴球关节手腕转动机器人逆运动学

ikine     采用数值迭代法求解逆运动学

ikunc     采用最优化法求解逆运动学

ikcon     有关节限位下采用最优化法求解逆运动学

ikine_sym    用符号表示的方法解析逆运动学

jacob0       世界坐标系下的雅克比矩阵

jacobn      工具坐标系下的雅克比矩阵

Jacob_dot   雅克比矩阵求导

maniplty    机器人可操作性

vellipse     显示速度椭圆

fellipse      显示力椭圆

qmincon      零空间运动到中心关节之间的极限

accel     关节加速度

coriolis      科里奥利关节合力(科氏合力)

dyn      显示各连杆的动态属性

friction     摩擦力

gravload       重力引起的关节力

inertia        关节惯性矩阵

cinertia      笛卡尔惯性矩阵

nofriction     设置摩擦参数为零

rne         逆动力学

fdyn        正动力学

payload   在末端执行器坐标系下添加负载

perturb     随机扰动连杆的动态参数

gravjac     重力负载和雅克比矩阵

paycap     额定载重量

pay        额定力矩

sym    对目标的抽象化表示

gencoords      抽象广义坐标系

genforces      抽象广义力

issym       测试目标是否抽象化

Seriallink 类函数属性(读/写)

links :连杆向量(1 ×  N)

gravity :重力加速度 [gx gy gz]

base :基座标系 (4 ×  4其次变换形式)

tool:与基座标系的变换矩阵 (4 ×  4其次变换形式)

qlim :关节极限位置 (N ×  2)

offset :关节偏移量 (N ×  1)

name :机器人的名字

manuf :制造者的名字

comment: 注释

plotopt:    plot()方法选择(单元格数组)

fast:    使用RNE的MEX版本,如果mex文件存在只能被设置为true,默认值为true

Seriallink 类函数属性(只读)

n :关节数

config: 关节配置,如‘RRRRRR’

mdh :D-H矩阵类型(0表示D-H,1表示MD-H)

theta :D-H参数:关节角 (1 ×  N)

d :D-H参数:连杆偏距 (1 ×  N)

a :D-H参数:连杆长度 (1 ×  N)

alpha: D-H参数:连杆扭角(1 ×  N)

(3)变换矩阵

利用MATLAB中Robotics Toolbox工具箱中的transl、rotx、roty和rotz可以实现用齐次变换矩阵表示平移变换和旋转变换。下面举例来说明:

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

>> transl(0.5,0,0)

ans =

    1.0000         0         0    0.5000

         0    1.0000         0         0

         0         0    1.0000         0

         0         0         0    1.0000

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

>> rotx(pi/4)

ans =

    1.0000         0         0         0

         0    0.7071   -0.7071         0

         0    0.7071    0.7071         0

         0         0         0    1.0000

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

>> roty(pi/2)

ans =

    0.0000         0    1.0000         0

         0    1.0000         0         0

   -1.0000         0    0.0000         0

         0         0         0    1.0000

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

>> rotz(-pi/2)

ans =

    0.0000    1.0000         0         0

   -1.0000    0.0000         0         0

         0         0    1.0000         0

         0         0         0    1.0000

当然,如果有多次旋转和平移变换,我们只需要多次调用函数在组合就可以了。另外,可以和我们学习的平移矩阵和旋转矩阵做个对比,相信是一致的。

(4)正运动学

利用Robotics Toolbox中的fkine函数可以实现机器人正运动学的求解。其中fkine函数的调用格式:

TR = FKINE(ROBOT, Q)

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

以PUMA560为例,定义关节坐标系的零点qz=[0 0 0 0 0 0],那么fkine(p560,qz)将返回最后一个关节的平移的齐次变换矩阵。如果有了关节的轨迹规划之后,我们也可以用fkine来进行运动学的正解。比如:

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

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

(5)逆运动学

利用Robotics Toolbox中的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/4 0 pi/8 0];

T=fkine(p560,q);

qi=ikine(p560,T);

(6)轨迹规划

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

其中ctraj函数的调用格式:

       TC = CTRAJ(T0, T1, N)

       TC = CTRAJ(T0, T1, R)

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

       [Q QD QDD] = JTRAJ(Q0, Q1, N)

       [Q QD QDD] = JTRAJ(Q0, Q1, N, QD0, QD1)

       [Q QD QDD] = JTRAJ(Q0, Q1, T)

       [Q QD QDD] = 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的加速度。

  • 24
    点赞
  • 255
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值