MATLABRoboticsToolbox常⽤函数简介
这⼀节,就机器⼈⼯具箱中的⼀些常⽤的函数做⼀下简单的介绍。机器⼈⼯具箱在机器⼈建模、轨迹规划、控制、可视化仿真等⽅⾯给机器⼈的研究和学习提供便利条件,⼤⼤提⾼了研究和⼯作效率。
在机器⼈⼯具箱中,类函数⾮常多,主要涉及到机器⼈建模、正运动学、逆运动学、动⼒学、逆动⼒学、雅克⽐、轨迹规划等。
对于机器⼈建模,⽤到最重要的两个函数就是Link和Seriallink函数
(1)Link 类
Link包含了与机器⼈连杆相关的所有信息,例如运动学参数、刚体惯性参数、电机和传送参数等。
使⽤⽅法:
A :关节传动矩阵
RP :关节类型,包括转动关节和移动关节
friction : 摩擦⼒
tool工具箱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)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论