机器人基础之雅克比矩阵
- 概述
- 雅克比矩阵的构造
- 微分运动和广义速度
- 微分变换法
- MATLAB实现
概述
雅克比矩阵是从关节空间向操作空间的速度传递的线性关系,借助于机械原理中的概念,可以理解为广义传动比。
对于个关节的机器人,其雅克比矩阵是阶矩阵。其中前3行代表机器人末端坐标系线速度的传递比;后3行代表对手爪的角速度的传递比。另一方面,每一列代表相应的关节速度对末端坐标系线速度和角速度的传递比。因此,可将雅克比矩阵分块,即
雅克比矩阵的构造
微分运动和广义速度
刚体或坐标系的微分运动包含微分移动矢量和微分转动矢量。前者由沿三个坐标轴的微分移动组成,后者由绕三坐标轴的微分转动组成。将两者合并为6维列矢量,称为刚体或坐标系的微分运动矢量。 相应地,刚体或坐标系的广义速度是由线速度和角速度组成的6维列矢量。即 微分运动矢量D和广义速度V也是相对于某坐标系而言的,在不同坐标系中表达式不同。若坐标系{T}相对于基坐标系的齐次变换矩阵为 则坐标系{T}中的微分运动和基坐标系中的微分运动之间的关系为: 上式简写为 其中 反对称矩阵定义为 类似的,任意两坐标系{A}和{B}之间微分运动的坐标变换为
微分变换法
下面采用构造性的方法,不需要求导而直接构造出和。
以六自由度机械臂为例。
- 首先计算出各连杆变换矩阵、、、、、。
- 然后利用公式计算得、、、、、。
- 依次计算末端坐标系在各连杆坐标系中的变化矩阵、、、、、。
- 利用公式9计算微分运动变化矩阵。
- 若关节为直线运动,则取微分运动变化矩阵的第三列作为雅克比矩阵的第列;
若关节为旋转运动,则取微分运动变化矩阵的第六列作为雅克比矩阵的第列;
对于六自由度机械臂而言,显然取微分运动变化矩阵的第六列作为雅克比矩阵的第列。
至此,构造出机器人的雅克比矩阵。
MATLAB实现
function J = calJacobi(DH_parameter)
% 计算雅克比矩阵
% DH_parameter:DH参数表;
[dim_row, dim_col] = size(DH_parameter);
J = zeros(6, dim_row);
for i = 1 : dim_row
T = calT(DH_parameter, i - 1, dim_row);
R = T(1:3, 1:3);
P = T(1:3, 4);
DiffM = [R', -R' * antiSymMatrix(P); zeros(3, 3), R'];
J(:, i) = DiffM(:, 6);
end