《link 工具箱功能介绍》由会员分享,可在线阅读,更多相关《link 工具箱功能介绍(6页珍藏版)》请在金锄头文库上搜索。
1、MATLAB 中 robotics toolbox 的 Link 函数解说江苏科技大学 电子信息学院 赵显1. PUMA560的 MATLAB 仿真要建立 PUMA560的机器人对象,首先我们要了解 PUMA560的 D-H 参数,之后我们可以利用 Robotics Toolbox 工具箱中的 link 和 robot 函数来建立PUMA560的机器人对象。其中 link 函数的调用格式:L = LINK(alpha A theta D)L =LINK(alpha A theta D sigma)L =LINK(alpha A theta D sigma offset)L =LINK(alph
2、a A theta D, CONVENTION)L =LINK(alpha A theta D sigma, CONVENTION)L =LINK(alpha A theta D sigma offset, CONVENTION)参数 CONVENTION 可以取standard 和modified ,其中standard代表采用标准的 D-H 参数, modified代表采用改进的 D-H 参数。参数alpha代表扭转角 ,参数A代表杆件长度,参数theta代表关节角,参数D代表横距,参数sigma代表关节类型:0 代表旋转关节,非0代表移动关节。另外 LINK 还有一些数据域:LINK.a
3、lpha %返回扭转角LINK.A %返回杆件长度LINK.theta %返回关节角LINK.D %返回横距LINK.sigma %返回关节类型LINK.RP %返回R(旋转)或P( 移动) LINK.mdh %若为标准 D-H 参数返回 0,否则返回1LINK.offset %返回关节变量偏移LINK.qlim %返回关节变量的上下限 min maxLINK.islimit(q) %如果关节变量超限,返回 -1, 0, +1LINK.I %返回一个33 对称惯性矩阵LINK.m %返回关节质量LINK.r %返回31的关节齿轮向量LINK.G %返回齿轮的传动比LINK.Jm %返回电机惯性
4、LINK.B %返回粘性摩擦LINK.Tc %返回库仑摩擦LINK.dh return legacy DH rowLINK.dyn return legacy DYN row其中 robot 函数的调用格式:ROBOT %创建一个空的机器人对象ROBOT(robot) %创建 robot 的一个副本ROBOT(robot, LINK) %用 LINK 来创建新机器人对象来代替 robotROBOT(LINK, .) %用 LINK 来创建一个机器人对象ROBOT(DH, .) %用 D-H 矩阵来创建一个机器人对象ROBOT(DYN, .) %用 DYN 矩阵来创建一个机器人对象2变换矩阵利用
5、 MATLAB 中 Robotics Toolbox 工具箱中的 transl、rotx 、roty 和 rotz 可以实现用齐次变换矩阵表示平移变换和旋转变换。下面举例来说明:A 机器人在 x 轴方向平移了0.5米,那么我们可以用下面的方法来求取平移变换后的齐次矩阵: transl(0.5,0,0)ans =1.0000 0 0 0.50000 1.0000 0 00 0 1.0000 00 0 0 1.0000B 机器人绕 x 轴旋转45度,那么可以用 rotx 来求取旋转后的齐次矩阵: rotx(pi/4)ans =1.0000 0 0 00 0.7071 -0.7071 00 0.70
6、71 0.7071 00 0 0 1.0000C 机器人绕 y 轴旋转90度,那么可以用 roty 来求取旋转后的齐次矩阵: roty(pi/2)ans =0.0000 0 1.0000 00 1.0000 0 0-1.0000 0 0.0000 00 0 0 1.0000D 机器人绕 z 轴旋转-90度,那么可以用 rotz 来求取旋转后的齐次矩阵: rotz(-pi/2)ans =0.0000 1.0000 0 0-1.0000 0.0000 0 00 0 1.0000 00 0 0 1.0000当然,如果有多次旋转和平移变换,我们只需要多次调用函数在组合就可以了。另外,可以和我们学习的平
7、移矩阵和旋转矩阵做个对比,相信是一致的。3 轨迹规划利用 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
8、 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,那么可以用如下的命令来实现多项式轨迹规划:
9、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 运动学的正问题利用 Robotics Toolbox 中的 fkine 函数可以实现机器人运动学正问题的求解。其中 fkine 函数的调用格式:TR = FKINE(ROBOT, Q)参数 ROBOT
10、 为一个机器人对象,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 是一个三维的矩阵,前两维是44的矩阵代表坐标变化,第三维是时间。5 运动学的逆问题利用 Robotics Toolbox 中的 ikine 函数可以实现机器人运动学逆问题的求解。其中 ikine
11、函数的调用格式: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);
12、我们也可以尝试先进行正解,再进行逆解,看看能否还原。Q=0 pi/4 pi/4 0 pi/8 0; T=fkine(p560,q); qi=ikine(p560,T);6 动画演示有了机器人的轨迹规划之后,我们就可以利用 Robotics Toolbox 中的 plot 函数来实现对规划路径的仿真。puma560;T=0:0.056:2; q=jtraj(qz,qr,T); plot(p560,q);当然,我们也可以来调节 PUMA560的六个旋转角,来实现动画演示。drivebot(p560)例子:L1 = LINK(0 0 pi/2 0 0,standard)L2 = LINK(-pi/2 0.150 pi/2 0 0,standard)L3=LINK(0 0.57 0 0 0,standard);r = robot(L1 L2 L3)r.name = Mdrivebot(r)