Usar el método geométrico para resolver la cinemática inversa de un robot industrial es convertir el nudo del robot en el espacio en un método de solución geométrica bajo varios planos ortogonales, que tiene efectos simples e intuitivos. Sin embargo, para la situación en la que una posición espacial y una postura del robot pueden tener múltiples ángulos de articulación, la solución que utiliza el método geométrico puede causar una consideración insuficiente y el resultado de la solución se reduce. Pero basado en sus ventajas e intuición, creo que todavía puedo compartir mis ejemplos de soluciones con ustedes. Tomo el robot industrial staubli como ejemplo. Las primeras tres articulaciones del robot determinan la posición del robot, las últimas tres articulaciones determinan la postura del robot y el sexto sistema de coordenadas articulares se establece en la articulación de la muñeca del robot. .
La solución del primer ángulo de articulación se muestra en la siguiente figura: el
código de matlab correspondiente es el siguiente:
primero defina la relación de actitud del robot:
n1 = -1; % 'l'
n2 = -1; % 'u'
n4 = -1; % 'n'
if sol(1)==1%~isempty(strfind(configuration, 'l'))
n1 = -1;
end
if sol(1)==2%~isempty(strfind(configuration, 'r'))
n1 = 1;
end
if sol(2)==1%~isempty(strfind(configuration, 'u'))
if n1 == 1
n2 = 1;
else
n2 = -1;
end
end
if sol(2)==2%~isempty(strfind(configuration, 'd'))
if n1 == 1
n2 = -1;
else
n2 = 1;
end
end
if sol(3)==1%~isempty(strfind(configuration, 'n'))
n4 = 1;
end
if sol(3)==2%~isempty(strfind(configuration, 'f'))
n4 = -1;
end
La postura se describe a continuación:
El código de solución inverso de theta1 es:
r = sqrt(Px^2 + Py^2);
if sol(1) == 1
theta(1) = atan2(Py,Px) + pi - asin(d3/r);
else
theta(1) = atan2(Py,Px) + asin(d3/r);
end
if theta(1)>pi
theta(1) = theta(1)-2*pi;
end
La solución de la segunda articulación se muestra en la siguiente figura:
El código de solución inverso de theta2 es:
V114 = Px*cos(theta(1)) + Py*sin(theta(1))-a1;
r = sqrt(V114^2 + Pz^2);
Psi = acos((a2^2-d4^2-a3^2+V114^2+Pz^2)/(2.0*a2*r));
if ~isreal(Psi)
theta = [];
else
theta(2) = atan2(Pz,V114) + n2*Psi;
La solución de la tercera articulación es la siguiente:
El código de solución inverso de theta3 es:
num = cos(theta(2))*V114+sin(theta(2))*Pz-a2;
den = cos(theta(2))*Pz - sin(theta(2))*V114;
theta(3) = atan2(a3,d4) - atan2(num, den);
Lo anterior es mi derivación y está escrito haciendo referencia al código en la caja de herramientas del robot. No se han encontrado problemas por el momento. Si encuentra algún problema durante el proceso de referencia, por favor critíqueme y corríjame.