Solution de cinématique inverse de robot basée sur la méthode géométrique - les trois premières articulations du robot industriel

Utiliser la méthode géométrique pour résoudre la cinématique inverse d'un robot industriel consiste à convertir le nœud du robot dans l'espace en une méthode de résolution géométrique sous plusieurs plans orthogonaux, ce qui a des effets simples et intuitifs. Cependant, pour la situation dans laquelle une position spatiale et une posture du robot peuvent avoir plusieurs angles d'articulation, la solution utilisant la méthode géométrique peut entraîner une prise en compte insuffisante et le résultat de la solution est réduit. Mais sur la base de ses avantages et de son intuitivité, je pense que je peux toujours partager mes exemples de solutions avec vous. Je prends comme exemple le robot industriel staubli. Les trois premières articulations du robot déterminent la position du robot, les trois dernières déterminent la posture du robot et le sixième système de coordonnées articulaires est établi au niveau de l'articulation du poignet du robot. .
La solution du premier angle d'articulation est montrée dans la figure ci-dessous: le
Insérez la description de l'image ici
code matlab correspondant est le suivant:
définissez d'abord la relation d'attitude du 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 posture est décrite comme suit:
Insérez la description de l'image ici
Le code de solution inverse de theta1 est:

 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 solution du deuxième joint est illustrée dans la figure ci-dessous:
Insérez la description de l'image ici
Le code de solution inverse de theta2 est:

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 solution de la troisième articulation est la suivante:
Insérez la description de l'image ici
Le code de solution inverse de theta3 est:

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);

Ce qui précède est ma dérivation et écrit en se référant au code dans la boîte à outils du robot. Aucun problème n'a été trouvé pour le moment. Si vous rencontrez des problèmes pendant le processus de référence, veuillez me critiquer et me corriger.

Je suppose que tu aimes

Origine blog.csdn.net/Delan188/article/details/112431242
conseillé
Classement