在建立三自由度机器人模型时,制定T1为一个位置,对这个位姿进行ikine反解,得到q1这个关节变量,但是再用fkine检验时得到的的矩阵却不相同了,是不是欠驱动机器人无法用工具箱求位姿的逆解呢?
clc;
clear;
%建立机器人模型
% theta d a alpha offset
L1=Link([0 0 1 0 0 ]); %定义连杆的D-H参数
L2=Link([0 0 1 0 0 ]);
L3=Link([0 0 0.3 0 0 ]);
robot=SerialLink([L1 L2 L3 ],'name','manman'); %连接连杆,机器人取名manman
T1=transl(0,1.5,0)%根据给定起始点,得到起始点位姿
T2=transl(0,0.5,0)*rpy2tr(0,0,pi/2);%根据给定终止点,得到终止点位姿
M=[1 1 0 0 0 0];
q1=robot.ikine(T1,'mask',M)%根据起始点位姿,得到起始点关节角
T3=robot.fkine(q1)
下面是运行结果:
T1 =
1.0000 0 0 0
0 1.0000 0 1.5000
0 0 1.0000 0
0 0 0 1.0000
q1 =
0.5942 1.8429 -0.6423
T3 =
-0.2222 -0.9750 0 0
0.9750 -0.2222 0 1.5
0 0 1 0
0 0 0 1