RoboticsToolbox 使用基本教程

发布于 2024-09-21 07:38:09 字数 5468 浏览 11 评论 0

安装 Robotics Toolbox for MATLAB

1、下载该工具箱 2、将压缩包解压到一个文件夹下面 3、打开 MATLAB,在 File 菜单下选择 Set Path,打开如下对话框 4、单击“Add With SubFolder”,选择上面的工具箱 5、点击“Save”,然后点击“Close”。这样就把工具箱的路径添加到 MATLAB 的路径中了,也就是工具箱安装了。

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 矩阵来创建一个机器人对象

利用 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

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

轨迹规划

利用 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 的加速度。

运动学的正问题

利用 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 的矩阵代表坐标变化,第三维是时间。

运动学的逆问题

利用 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);

动画演示

有了机器人的轨迹规划之后,我们就可以利用 Robotics Toolbox 中的 plot 函数来实现对规划路径的仿真。 puma560;T=0:0.056:2; q=jtraj(qz,qr,T); plot(p560,q); 当然,我们也可以来调节 PUMA560 的六个旋转角,来实现动画演示。 drivebot(p560)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

0 文章
0 评论
21 人气
更多

推荐作者

謌踐踏愛綪

文章 0 评论 0

开始看清了

文章 0 评论 0

高速公鹿

文章 0 评论 0

alipaysp_PLnULTzf66

文章 0 评论 0

热情消退

文章 0 评论 0

白色月光

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文