代码思路是首先建立SDH模型,因为ikine6s只能对SDH模型求解。
以下是我的机器人和SDH模型,有没有建错呢?


然后给定一个位姿,正运动学fkine函数得到齐次变换矩阵T_0。
再使用ikine6s求8组逆解。求出的逆解对应的齐次变换矩阵T_1-T_8。
Matlab代码:
%% ikine6s
clear all
close all
clc
%% SDH方法
L(1)=Link('revolute','alpha',-pi/2, 'a',350, 'offset',0, 'd',750, 'standard');
L(2)=Link('revolute','alpha',0, 'a',1250, 'offset',0, 'd',0, 'standard');
L(3)=Link('revolute','alpha',pi/2, 'a',55, 'offset',0, 'd',0, 'standard');
L(4)=Link('revolute','alpha',-pi/2, 'a',0, 'offset',0, 'd',1100, 'standard');
L(5)=Link('revolute','alpha',pi/2, 'a',0, 'offset',0, 'd',0, 'standard');
L(6)=Link('revolute','alpha',0, 'a',0, 'offset',0, 'd',0, 'standard');
L(1).qlim=[-185,185]/180*pi;
L(2).qlim=[-146,0]/180*pi;
L(3).qlim=[-29,245]/180*pi;
L(4).qlim=[-350,350]/180*pi;
L(5).qlim=[-125,125]/180*pi;
L(6).qlim=[-350,350]/180*pi;
KUKA_KR210_2=SerialLink(L,'name','KUKA KR210-2');
KUKA_KR210_2.display
%% 给定位姿求逆解
T_0=KUKA_KR210_2.fkine([-pi/6,-pi/3,5*pi/6,-pi/6,pi/3,-pi/6])
qrad_1=KUKA_KR210_2.ikine6s(T_0,'luf');
qrad_2=KUKA_KR210_2.ikine6s(T_0,'lun');
qrad_3=KUKA_KR210_2.ikine6s(T_0,'ldf');
qrad_4=KUKA_KR210_2.ikine6s(T_0,'ldn');
qrad_5=KUKA_KR210_2.ikine6s(T_0,'ruf');
qrad_6=KUKA_KR210_2.ikine6s(T_0,'run');
qrad_7=KUKA_KR210_2.ikine6s(T_0,'rdf');
qrad_8=KUKA_KR210_2.ikine6s(T_0,'rdn');
T_1=KUKA_KR210_2.fkine(qrad_1)
T_2=KUKA_KR210_2.fkine(qrad_2)
T_3=KUKA_KR210_2.fkine(qrad_3)
T_4=KUKA_KR210_2.fkine(qrad_4)
T_5=KUKA_KR210_2.fkine(qrad_5)
T_6=KUKA_KR210_2.fkine(qrad_6)
T_7=KUKA_KR210_2.fkine(qrad_7)
T_8=KUKA_KR210_2.fkine(qrad_8)
但是这样只有前3*3代表的腕部姿态部分是对的,第4列对应的腕点位置却与初始给定的不同,且8组逆解位置也各有不同。
不明白这里是什么原因?我的DH模型建错了吗?

