求大神指点!
以下为源代码:
clear;
clc;
z0=0;
z1=0;
%随机产生位置点,求该点位置逆解,再求该点对应的角度矩阵
随机点往往在实际工作空间内,但不能求得逆解;而且示教机器人与实际工作空间不符
for i = 1:10
pop(i, = 1.3+rand(1,4)
x0=pop(i,1);
y0=pop(i,2);
x1=pop(i,3);
y1=pop(i,4);
alp=2*pi*rand;
L1 = Link('d', 0, 'a', 0.35, 'alpha', pi/2);
L2 = Link('d', 0, 'a', 0.85, 'alpha',0,'offset',0);
L3 = Link('d', 0, 'a', 0.145, 'alpha', pi/2,'offset',0);
L4 = Link('d', 0.82, 'a', 0, 'alpha', -pi/2);
L5 = Link('d', 0, 'a', 0, 'alpha', pi/2);
L6 = Link('d', 0.17, 'a', 0, 'alpha', 0);
% b=isrevolute(L1); %Link 类函数
robot=SerialLink([L1,L2,L3,L4,L5,L6]); %SerialLink 类函数
robot.name='KUKA KR60';
a=0.5;
b=0.5;
zm=z1;
x2=x1+cos(alp)*a;
y2=y1+sin(alp)*a;
x3=x2-cos(pi/2-alp)*b;
y3=y2+sin(pi/2-alp)*b;
xm=(x1+x3)/2;
ym=(y1+y3)/2;
am=atan2(ym,xm);
T11=transl(xm,ym,zm)*troty(pi/2)*trotx(pi+am); %根据给定起始点,得到起始点位姿
a0=atan2(y0,x0);
T00=transl(x0,y0,z0)*trotx(pi)*trotz(pi/2+a0);%根据给定终止点,得到终止点位姿
%对应的始末位置角度
init_ang=robot.ikine(T00)
targ_ang=robot.ikine(T11)
j0=robot.jacob0(init_ang);
j1=robot.jacob0(targ_ang);
附件为报错和机器人说明附图。
恳请各位指点,困惑好久了。
捕获.PNG
2.PNG |