MATLAB机器人工具箱【3】—— 动力学相关函数及用法

本文在参考B站up主刘海涛大佬的视频分享基础上,结合自己学习的机器人学知识,利用MATLAB机器人工具箱加深理解和运用,机器人工具箱安装教程见Robotic toolbox 工具箱的安装和初步了解,安装了工具箱后就可以用来愉快的学习啦。

1. 查看机器人动力学参数

在这里插入图片描述
在这里插入图片描述

mdl_puma560;
p560.dyn;%查看puma560机械臂所有连杆的动力学参数
p560.dyn(2);%查看puma560机械臂第二连杆的动力学参数
p560.links(2).dyn;%查看puma560机械臂第二连杆的动力学参数

2. 逆动力学

已知关节速度、加速度、角加速度求出各关节所需提供的关节力矩。
在这里插入图片描述
tau = R.rne(q, qd, qdd)是机器人R达到指定关节位置q(1xN),速度qd(1XN),加速度qdd(1XN)所需要的各个关节的关节力矩,其中N为关节个数。

如果机器人末端受到力的作用 fext ,则可用以下形式:
tau = R.rne(q, qd, qdd, grav, fext)
其中,grav 是重力加速度,默认值是[0,0,9.81];fext=[Fx Fy Fz Mx My Mz]。

>> mdl_puma560;
>> A = p560.rne(qn,qz,qz)%当关节角为[0 0.7854 3.1416 0 0.7854 0],关节速度、关节加速度为零,重力加速度为9.81时所需的关节力矩

A =

   -0.0000   31.6399    6.0351    0.0000    0.0283         0

3. 正动力学

已知各个关节上电机提供的力/力矩,在此力矩作用下,关节如何运动,求对应各个关节角度、角速度、角加速度。
在这里插入图片描述
在这里插入图片描述

[T,q,qd] = R.fdyn(T, torqfun)
T 表示时间间隔,就是采样时间。根据给定的力矩函数 torqfun,求各关节的 q,qd,默认初始位置q和速度qd为零。

也可以设定关节角度、角速度的初值,并且确定力矩函数中所含的参数,如下:
[T,q,qd] = R.fdyn(T, torqfun, q0, qd0, ARG1, ARG2, …)
在这里插入图片描述

mdl_puma560;
torqfun = [1 2 3 4 5 6];
p560 = p560.nofriction();%为了加快求解速度,选择使用不考虑摩擦的动力学模型
[T,q,qd] = p560.fdyn(1,torqfun);
for kk = 1:65
    qdd(kk,:) = p560.accel(q(kk,:),qd(kk,:),torqfun);
end

4. 机器人动力学方程

在这里插入图片描述
在这里插入图片描述

>> mdl_puma560;
>> p560.gravload([1 2 3 4 5 6])%给定关节角度,求解出重力载荷

ans =

    0.0000   -7.9683    8.4581   -0.0197    0.0027         0
>> mdl_puma560;
>> p560.inertia([1 2 3 4 5 6])%给定关节角度,求解出关节空间惯性矩阵

ans =

    2.6152   -0.6550   -0.0363    0.0001    0.0010    0.0000
   -0.6550    4.3038    0.2953   -0.0008   -0.0017    0.0000
   -0.0363    0.2953    0.9366   -0.0009   -0.0006    0.0000
    0.0001   -0.0008   -0.0009    0.1926    0.0000    0.0000
    0.0010   -0.0017   -0.0006    0.0000    0.1713    0.0000
    0.0000    0.0000    0.0000    0.0000    0.0000    0.1941
>> mdl_puma560;
>> qd = [0.1 0.1 0.1 0.1 0.1 0.1];%给定关节速度
>> C = p560.coriolis(qn,qd)%给定关节角度、关节速度,计算科式力和向心力的耦合矩阵

C =

   -0.0267   -0.1291    0.0170   -0.0000   -0.0003    0.0000
    0.0627    0.0386    0.0771   -0.0002   -0.0000   -0.0000
   -0.0361   -0.0387   -0.0001   -0.0001   -0.0003   -0.0000
    0.0000    0.0001   -0.0000    0.0000    0.0000   -0.0000
   -0.0000    0.0001    0.0002   -0.0000   -0.0000   -0.0000
    0.0000    0.0000    0.0000    0.0000    0.0000         0

有效载荷,顾名思义就是机械手末端的载荷,施不施加有效载荷会影响到关节空间惯性矩阵的值
在这里插入图片描述

>> mdl_puma560;
>> p560.inertia([1 2 3 4 5 6])%没有施加有效载荷时的惯性矩阵

ans =

    2.6152   -0.6550   -0.0363    0.0001    0.0010    0.0000
   -0.6550    4.3038    0.2953   -0.0008   -0.0017    0.0000
   -0.0363    0.2953    0.9366   -0.0009   -0.0006    0.0000
    0.0001   -0.0008   -0.0009    0.1926    0.0000    0.0000
    0.0010   -0.0017   -0.0006    0.0000    0.1713    0.0000
    0.0000    0.0000    0.0000    0.0000    0.0000    0.1941

>> p560.payload(1,[0,0.1,0.2])%施加有效载荷
>> p560.inertia([1 2 3 4 5 6])%施加有效载荷后的惯性矩阵

ans =

    2.8033   -0.8506   -0.0951    0.0079    0.0778    0.0368
   -0.8506    4.6513    0.4828   -0.0858   -0.1011   -0.0584
   -0.0951    0.4828    1.1338   -0.0988   -0.0169   -0.0214
    0.0079   -0.0858   -0.0988    0.2416    0.0029    0.0082
    0.0778   -0.1011   -0.0169    0.0029    0.2120    0.0192
    0.0368   -0.0584   -0.0214    0.0082    0.0192    0.2041

5. 赋予机器人动力学参数

在这里插入图片描述
注意:所赋的值是固定量,如动力学方程中的惯性矩阵等会随着角度的变化而变化,这种量是不能给赋值的,在属性中也没有该项。


版权声明:本文为huangjunsheng123原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。