Matlab|Matlab Robotics Toolbox系列—使用篇(5)

Chapter 5 Jacobian
% 雅可比矩阵和差分运动,差分运动可以用一组向量表示[dx dy dz drx dry drz],可用公式表示为transl(dx, dy, dz) * trotx(drx) * troty(dry) * trotz(drz),当然更直接用 diff2tr() 函数
>> D = [.1 .2 0 -.2 .1 .1]';
>> delta2tr(D)
ans =

1.0000-0.10000.10000.1000
0.10001.00000.20000.2000
-0.1000-0.20001.00000
0001.0000
% 在其他坐标系下表示方法上,先给出坐标系变换矩阵,再用叉乘方式
>> T = transl(100, 200, 300) * troty(pi/8) * trotz(-pi/4);
>> DT = tr2jac(T) * D;

% 以puma560为例进行描述
>> mdl_puma560
>> q = [0.1 0.75 -2.25 0 .75 0]

% 计算该坐标系下的Jacobian矩阵
>> J = p560.jacob0(q)
J =

0.0746-0.3031-0.0102000
0.7593-0.0304-0.0010000
-0.00000.74810.4322000
-0.00000.09980.09980.99250.09980.6782
0.0000-0.9950-0.99500.0996-0.99500.0681
1.00000.00000.00000.07070.00000.7317

% 以关节末端为坐标系计算Jacobian矩阵
>> J = p560.jacobn(q)
J =

0.1098-0.7328-0.3021000
0.74810.00000.0000000
0.10230.33970.3092000
【Matlab|Matlab Robotics Toolbox系列—使用篇(5)】-0.6816-0.0000-0.00000.681600
-0.0000-1.0000-1.0000-0.0000-1.00000
0.73170.00000.00000.73170.00001.0000
% 右上角的3x3矩阵为0,表明了4-6关节的平移运动不会对末端产生影响
% 判断是否为奇异矩阵,可以用det()方法,不为0即可
>> det(J)
% 其逆矩阵为
>> Ji = inv(J)
Ji =
0.00001.3367-0.0000-0.0000-0.00000
-2.49460.6993-2.437400.00000
2.7410-1.21065.91250.00000.0000-0.0000
0.00001.3367-0.00001.4671-0.00000
-0.24640.5113-3.4751-0.0000-1.00000
-0.0000-1.95610.0000-1.07340.00001.0000

% Whitney's resolved rate motion controldQ/dt = J(q)^-1 dX/dt
>> vel = [1 0 0 0 0 0]'; % translational motion in the X direction
>> qvel = Ji * vel;
>> qvel'

% 计算末端的变换矩阵
>> T6 = p560.fkine(q);

% 将世界坐标系下的速度转换为T6坐标系
>> d6X = tr2jac(T6) * vel;

% 计算关节速度
>> qvel = Ji *d6X;

% 可以通过Jacobian的秩来描述
>> rank( p560.jacobn(qr) )

% 对于特定的一组关节角,其奇异性可以衡量为:
>> svd( jacobn(p560, qr) )

% 两种用于描述可操作性的方法
>> p560.maniplty(q, 'yoshikawa')
>> p560.maniplty(q, 'asada')%计入了惯量


    推荐阅读