Solución de cinemática inversa de robot basada en el método geométrico: las tres primeras articulaciones del robot industrial

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
Inserte la descripción de la imagen aquí
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:
Inserte la descripción de la imagen aquí
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:
Inserte la descripción de la imagen aquí
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:
Inserte la descripción de la imagen aquí
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.

Supongo que te gusta

Origin blog.csdn.net/Delan188/article/details/112431242
Recomendado
Clasificación