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
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:
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:
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:
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.