robotic+toolbox+使用说明
- 格式:doc
- 大小:42.00 KB
- 文档页数:5
RoboticsToolboxtransljtrajctraj函数介绍writen by wqj1212函数命:translPurpose: translation transformationSynopsis: T=transl(x,y,z)T=transl(v)v=Transl(T)xyz=transl(TC)Description;The first two forms return a homogeneous transformation representing a translation expressed asthree scalar x,y and z,Or a Cartesian vector vThe third form returns the translation part of a homogeneous transform as a 3-element column vectorThe forth form returns a matrix whose columns are the X,Y and Z columns pf the 4x4xm Cartesian trajectory matrix Tc函数命:ctrajPurpose : Compute a Cartesian trajectory between two pointsSynopsis: TC = ctraj(T0, T1, m)TC = ctraj(T0, T1, r)Description:ctraj returns a Cartesian trajectory (straight line motion) TC from the point represented byhomogeneous transform T0 to T1. The number of points along the path is m or the length ofthe given vector ector r. For the second case r is a vector of distances along the path (in the range0 to 1) for each point. The first case has the points equally spaced, but different spacing maybe specified to achieve acceptable acceleration profile. TC is a 4×4×m matrix.函数命:jtrajPurpose: Compute a joint space trajectory between two joint coordinate posesSynopsis : [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)Description :jtraj returns a joint space trajectory q from joint coordinates q0 to q1. The number of points is nor the length of the given time vector t. A 7th order polynomial is used with default ault zero boundaryconditions for velocity and acceleration.Non-zero boundary velocities can be optionally specified as qd0 and qd1.The trajectory is a matrix, with one row per time step, and one column per joint. The function canoptionally return a velocity and acceleration trajectories as qd and qdd respecti respectively .Examples To create a Cartesian path with smooth acceleration we can use the jtraj function to createthe path vector ector r with continuous derivitives.>> T0 = transl([000]); T1 = transl([-121]);>> t= [0:0.056:10];>> r = jtraj(0, 1, t);>> TC = ctraj(T0, T1, r);>> plot(t, transl(TC));。
Matlab Robotic Toolbox工具箱学习笔记(一)软件:matlab2013a工具箱:Matlab Robotic Toolbox v9.8Matlab Robotic Toolbox工具箱学习笔记根据Robot Toolbox demonstrations目录,将分三大部分阐述:1、General(Rotations,Transformations,Trajectory)2、Arm(Robot,Animation,Forwarw kinematics,Inversekinematics,Jacobians,Inverse dynamics,Forward dynamics,Symbolic,Code generation)3、Mobile(Driving to apose,Quadrotor,Braitenberg,Bug,D*,PRM,SLAM,Particle filter) 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);%旋转矩阵用四元数表示(6)q = Quaternion(R);%将四元数转化为旋转矩阵(7)q.R;%界面,可以是“rpy”,“eluer”角度单位为度。
Robotics ToolBox 使用方法1.下载与安装下载地址:/Toolboxes.html相关的其他下载(linux 版本、python 语言版本等):/Other_software.html相关书籍网站(含各种使用视频):/RVC/Matlab 中点击setpath ,在弹出的对话框中点击add with subfolders ,选中RVCtools 文件夹,点击确定并应用。
2.坐标系旋转与操作绕x 轴旋转:R=rotx(theta)● 输入:theta---旋转角度● 输出:R---旋转矩阵绕y 轴和绕z 轴旋转:R=roty(theta),R=rotz(theta)旋转过后矩阵的绘图显示:trplot(R)● 输入:R---旋转矩阵● 输出:旋转后的坐标系的三维图像旋转过程动画显示:tranimate(R)● 输入:R---旋转矩阵● 输出:基础坐标系旋转到目标坐标系的动画演示欧拉角旋转(ZYZ 形式),数学表示及计算为:z z (,,)R ()R ()R ()y φθψφθψΓ==,对应函数是:R=eul2r(fi,theta,psi)● 输入:(fi,theta,psi)分别对应,,φθψ● 输出:旋转矩阵欧拉角逆运算函数:(fi,theta,psi)=tr2eul(R)● 输入:旋转矩阵● 输出:ZYZ 形式的,,φθψ● 注意:一个R 对应两组,,φθψ,但是此函数在求解时仅显示0θ>的解。
● 当0θ=对应于奇异值,也被称为万向节死锁(Gimbal lock ),得到的值为:φψ+,网上有讲:/soroman/archive/2008/03/24/1118996.html 。
(使用3个量来表示3维空间的朝向的系统都会遭遇这个问题,除非用4个量来表示,如四元数)rpy (roll-pitch-yaw )角,又被称为Cardan angles ,计算旋转矩阵SO(3)的函数为:R=rpy2r(theta_r, theta_p, theta_y)● 输入:rpy 角,theta_r, theta_p, theta_y● 输出:旋转矩阵Cardan angles 逆运算函数:(theta_r, theta_p, theta_y)=tr2rpy(R)● 输入:旋转矩阵R● 输出:rpy 角,,,r p y θθθ● 注意:与欧拉角逆变换不同,这里一个R 对应一组,,r p y θθθ● 当2p πθ=±时,达到奇异值或者Gimbal lock ,得到的值为r y θθ+ []xx x y y y z z z n o a R n o a n o a ⎡⎤⎢⎥==⎢⎥⎢⎥⎣⎦n o a ,其中=⨯n o a 由o 和a 计算R 的函数为:R=oa2r(q_o,q_a)● 输入:o 和a ,也即单位向量q_o 与q_a● 输出:旋转矩阵R求解旋转矩阵对应的旋转轴及旋转角度即为求旋转矩阵对应的特征值和特征向量:[v,lambda]=eig(R)● 输入:旋转矩阵R● 输出:3*3矩阵v 及3*3特征向量lambda ,其中v 向量对应于lambda=1的列即为旋转轴,lambda 其他的虚数对应辐角即为旋转角度。
robotic toolbox for matlab工具箱下载地址:/source/9407701. 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([alpha 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.alpha %返回扭转角LINK.A %返回杆件长度LINK.theta %返回关节角LINK.D %返回横距LINK.sigma %返回关节类型LINK.RP %返回‘R’(旋转)或‘P’(移动)LINK.mdh %若为标准D-H参数返回0,否则返回1LINK.offset %返回关节变量偏移LINK.qlim %返回关节变量的上下限[min max]LINK.islimit(q) %如果关节变量超限,返回-1, 0, +1LINK.I %返回一个3×3 对称惯性矩阵LINK.m %返回关节质量LINK.r %返回3×1的关节齿轮向量LINK.G %返回齿轮的传动比LINK.Jm %返回电机惯性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.变换矩阵利用MATLAB中Robotics Toolbox工具箱中的transl、rotx、roty和rotz可以实现用齐次变换矩阵表示平移变换和旋转变换。
robotic toolbox for matlab工具箱下载地址:/source/9407701. 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([alpha 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.alpha %返回扭转角LINK.A %返回杆件长度LINK.theta %返回关节角LINK.D %返回横距LINK.sigma %返回关节类型LINK.RP %返回‘R’(旋转)或‘P’(移动)LINK.mdh %若为标准D-H参数返回0,否则返回1LINK.offset %返回关节变量偏移LINK.qlim %返回关节变量的上下限[min max]LINK.islimit(q) %如果关节变量超限,返回-1, 0, +1LINK.I %返回一个3×3 对称惯性矩阵LINK.m %返回关节质量LINK.r %返回3×1的关节齿轮向量LINK.G %返回齿轮的传动比LINK.Jm %返回电机惯性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.变换矩阵利用MATLAB中Robotics Toolbox工具箱中的transl、rotx、roty和rotz可以实现用齐次变换矩阵表示平移变换和旋转变换。
Robotic Toolbox工具箱使用方法1.坐标变换利用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.7071 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当然,如果有多次旋转和平移变换,我们只需要多次调用函数在组合就可以了。
另外,可以和我们学习的平移矩阵和旋转矩阵做个对比,相信是一致的。
2. 构建机器人对象要建立机器人对象,首先我们要了解D-H参数,之后我们可以利用Robotics Toolbox工具箱中的link和robot函数来建立机器人对象。
其中link函数的调用格式:L = LINK([alpha A theta D])L =LINK([alpha A theta D sigma])L =LINK([alpha A theta D sigma offset])L =LINK([alpha 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参数。
【⼩项⽬】MatlabRoboticsToolbox仿真计算:Kinematics,Dyn。
1. 理论知识理论知识请参考:机器⼈学导论++(原书第3版)_(美)HLHN+J.CRAIG著++贠超等译机器⼈学课程讲义(丁烨)机器⼈学课程讲义(赵⾔正)2. Matlab Robotics Toolbox安装上官⽹:Download RTB-10.3.1 mltbx format (23.2 MB) in MATLAB toolbox format (.mltbx)将down下来的⽂件放到⼀般放untitled.m所在的⽂件夹内。
打开MATLAB运⾏,显⽰安装完成即可。
不要下zip,⾥⾯的东西各种缺失并且乱七⼋糟,很难配。
该⼯具箱内的说明书是robot.pdf也可查阅 “机器⼈⼯具箱简介.ppt”3. 机器⼈建模本仿真程序仿照fanuc_M20ia机器⼈进⾏建模。
3.1 利⽤DH矩阵建⽴机器⼈模型(modified)经测绘,⽤如下代码建⽴DH矩阵使⽤robot.teach()函数,进⾏机器⼈⽰教% RobotTeach.mclc;% theta d a alpha offsetML1 = Link([ 0, 0.4967, 0, 0, 0], 'modified');ML2 = Link([ -pi/2, -0.18804, 0.2, 3*pi/2, 0], 'modified');ML3 = Link([ 0, 0.17248, 0.79876, 0 , 0], 'modified');ML4 = Link([ 0, 0.98557, 0.25126, 3*pi/2, 0], 'modified');ML5 = Link([ 0, 0, 0, pi/2 , 0], 'modified');ML6 = Link([ 0, 0, 0, pi/2 , 0], 'modified');robot = SerialLink([ML1 ML2 ML3 ML4 ML5 ML6],'name','Fanuc M20ia');robot.teach(); %可以⾃由拖动的关节⾓度% EOF效果如下:3.2 机器⼈参数设定在做仿真计算时,需要设定各个关节的运动学与动⼒学参数质量属性可以在SolidWorks中指定材质后,在“评估-质量属性”中查看运动学参数:% theta 关节⾓度% d 连杆偏移量% a 连杆长度% alpha 连杆扭⾓% sigma 旋转关节为0,移动关节为1% mdh 标准的D&H为0,否则为1% offset 关节变量偏移量% qlim 关节变量范围[min max]动⼒学参数:% m 连杆质量% r 连杆相对于坐标系的质⼼位置3x1% I 连杆的惯性矩阵(关于连杆重⼼)3x3% B 粘性摩擦⼒(对于电机)1x1或2x1% Tc 库仑摩擦⼒1x1或2x1电机和传动参数:% G 齿轮传动⽐% Jm 电机惯性矩(对于电机)完整的机器⼈建模代码clear;clc;% theta d a alpha offsetML1 = Link([ 0, 0.4967, 0, 0, 0], 'modified');ML2 = Link([ -pi/2, -0.18804, 0.2, 3*pi/2, 0], 'modified');ML3 = Link([ 0, 0.17248, 0.79876, 0 , 0], 'modified');ML4 = Link([ 0, 0.98557, 0.25126, 3*pi/2, 0], 'modified');ML5 = Link([ 0, 0, 0, pi/2 , 0], 'modified');ML6 = Link([ 0, 0, 0, pi/2 , 0], 'modified');%配置机器⼈参数ML1.m = 20.8;ML2.m = 17.4;ML3.m = 4.8;ML4.m = 0.82;ML5.m = 0.34;ML6.m = 0.09;ML1.r = [ 0 0 0 ];ML2.r = [ -0.3638 0.006 0.2275];ML3.r = [ -0.0203 -0.0141 0.070];ML4.r = [ 0 0.019 0];ML5.r = [ 0 0 0];ML6.r = [ 0 0 0.032];ML1.I = [ 0 0.35 0 0 0 0];ML2.I = [ 0.13 0.524 0.539 0 0 0];ML3.I = [ 0.066 0.086 0.0125 0 0 0];ML4.I = [ 1.8e-3 1.3e-3 1.8e-3 0 0 0];ML5.I = [ 0.3e-3 0.4e-3 0.3e-3 0 0 0];ML6.I = [ 0.15e-3 0.15e-3 0.04e-3 0 0 0];ML1.Jm = 200e-6;ML2.Jm = 200e-6;ML3.Jm = 200e-6;ML4.Jm = 33e-6;ML5.Jm = 33e-6;ML6.Jm = 33e-6;ML1.G = -62.6111;ML2.G = 107.815;ML3.G = -53.7063;ML4.G = 76.0364;ML5.G = 71.923;ML6.G = 76.686;% viscous friction (motor referenced)ML1.B = 1.48e-3;ML2.B = 0.817e-3;ML3.B = 1.38e-3;ML4.B = 71.2e-6;ML5.B = 82.6e-6;ML6.B = 36.7e-6;% Coulomb friction (motor referenced)ML1.Tc = [ 0.395 -0.435];ML2.Tc = [ 0.126 -0.071];ML3.Tc = [ 0.132 -0.105];ML4.Tc = [ 11.2e-3 -16.9e-3];ML5.Tc = [ 9.26e-3 -14.5e-3];ML6.Tc = [ 3.96e-3 -10.5e-3];robot=SerialLink([ML1 ML2 ML3 ML4 ML5 ML6],'name','Fanuc M20ia');% 注意:这句话最后写,不然会报错4. 正向运动学与机器⼈⼯作空间的求取4.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([alpha 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.alpha %返回扭转角LINK.A %返回杆件长度LINK.theta %返回关节角LINK.D %返回横距LINK.sigma %返回关节类型LINK.RP %返回‘R’(旋转)或‘P’(移动)LINK.mdh %若为标准D-H 参数返回0,否则返回1LINK.offset %返回关节变量偏移LINK.qlim %返回关节变量的上下限[min max]LINK.islimit(q) %如果关节变量超限,返回-1, 0, +1LINK.I %返回一个3×3 对称惯性矩阵LINK.m %返回关节质量LINK.r %返回3×1 的关节齿轮向量LINK.G %返回齿轮的传动比LINK.Jm %返回电机惯性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 矩阵来创建一个机器人对象利用MATLAB 中Robotics Toolbox 工具箱中的transl、rotx、roty 和rotz 可以实现用齐次变换矩阵表示平移变换和旋转变换。
robotic toolbox for matlab工具箱
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([alpha 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.alpha %返回扭转角
LINK.A %返回杆件长度
LINK.theta %返回关节角
LINK.D %返回横距
LINK.sigma %返回关节类型
LINK.RP %返回‘R’(旋转)或‘P’(移动)
LINK.mdh %若为标准D-H参数返回0,否则返回1
LINK.offset %返回关节变量偏移
LINK.qlim %返回关节变量的上下限[min max]
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.dh return legacy DH row
LINK.dyn return legacy DYN row
其中robot函数的调用格式:
ROBOT %创建一个空的机器人对象
ROBOT(robot) %创建robot的一个副本
ROBOT(robot, LINK) %用LINK来创建新机器人对象来代替robot
ROBOT(LINK, ...) %用LINK来创建一个机器人对象
ROBOT(DH, ...) %用D-H矩阵来创建一个机器人对象
ROBOT(DYN, ...) %用DYN矩阵来创建一个机器人对象
2.变换矩阵
利用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
当然,如果有多次旋转和平移变换,我们只需要多次调用函数在组合就可以了。
另外,可以和我们学习的平移矩阵和旋转矩阵做个对比,相信是一致的。
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 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的加速度。
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中的plot函数来实现对规划路径的仿真。
puma560;T=0:0.056:2; q=jtraj(qz,qr,T); plot(p560,q);
当然,我们也可以来调节PUMA560的六个旋转角,来实现动画演示。
drivebot(p560)。