Je lutte avec ce problème depuis des jours. J'espère vraiment que quelqu'un pourra me donner une idée du problème.
Le robot se compose de 5 axes. Le premier axe tourne autour de l'axe z et les 4 autres axes tournent autour de l'axe y. Et le solveur fonctionne essentiellement.
Voici ce que j'ai fait jusqu'à présent:
Je calcule le facteur de manipulabilité avec ma matrice jacobienne (uniquement la partie translationnelle, car seule la position est suivie ici. En fait, j'ai également essayé avec une matrice jacobienne combinée, donc non seulement la partie translationnelle mais aussi la partie rotationnelle. Mais le mouvement saccadé était là en tous cas):
Le facteur d'amortissement est alors:
Le facteur d'amortissement est alors intégré dans le calcul pseudo inverse:
Comme vous pouvez le voir, il s'agit simplement d'un solveur cinématique pseudo inverse classique avec la méthode des moindres carrés amortis. Le facteur de manipulabilité en fonction du deuxième mouvement (problème) est: La manipulabilité chute au début de la vidéo. Mais pourquoi? Pour autant que je sache, ce facteur de manipulabilité indique la dépendance linéaire des axes. Pour moi, les axes ne semblent pas être linéairement dépendants dans la partie de départ.
Ce mouvement saccadé me rend fou. Comme vous pouvez le voir dans la première animation, le solveur semble fonctionner correctement. Qu'est-ce que j'oublie ici?
atan
au lieu deatan2
, etc. Pourriez-vous modifier votre question pour publier le code que vous utilisez?Réponses:
Comme d'autres l'ont déjà souligné, il doit y avoir un problème avec votre implémentation de l'algorithme IK car il n'y aura pas de comportement singulier dans les descriptions que vous avez données.
Vous avez maintenant deux alternatives: soit vous commencez par déboguer le code, soit vous souhaitez exploiter le fait que le problème peut être facilement décomposé en deux sous-problèmes pour lesquels vous pouvez facilement utiliser la plus grande partie du code écrit jusqu'à présent.
Étant donné la cible 3D souhaitée , il est simple d'observer que la valeur souhaitée de la première articulation est: .(Xré,yré,zré) θ1 jour= arctan(yréXré)
La loi de commande pour conduire la première articulation du manipulateur vers peut être aussi simple que:θ1 jour
Soit alors la matrice qui rend compte de la rotation de autour de l' axe :R ∈ SO ( 3 ) θ1 jour z
Grâce à , vous obtiendrez la nouvelle cible qui établira un nouveau problème planaire IK 2D dans le plan .R (Xré, 0 ,zré)1=RT⋅(Xré,yré,zré)T x z
À ce stade, vous pouvez résoudre pour en utilisant le jacobien du manipulateur 4-DOF restant.(Xré,zré)1
la source
Je pense que vous avez introduit une singularité algorithmique au premier axe du poignet. Il me semble que, lorsqu'il atteint 90 degrés «vers le bas», au lieu d'aller à 91, il essaie de revenir de zéro à -269 degrés.
Bien sûr, cela est spéculatif sans voir le code.
la source