2017-03-14 5 views
1

J'ai un capteur IMU qui me donne l'orientation en termes de Quaternion et je voudrais le changer en angles RPY lisibles.Comment éviter le blocage de cardan lors de la conversion de Quaternion à Roll Pitch Yaw

Je trouve la formule pour les convertir intrinsèquement de Wiki

pour un quaternion q = qr + qi + QJ + qk

roll=atan2(2(qr*qi+qj*qk),1-2(qi^2+qj^2)) 
pitch=arcsin(2(qr*qj-qk*qi)) 
yaw=atan2(2(qr*qk+qi*qj),1-2(qj^2+qk^2)) 

Je comprends qu'il peut y avoir problème de verrouillage Cardan lors de la représentation en RPY. Comment pourrais-je éviter cela lorsque le pas approche de +/- 90 degrés?

P.S. Je code dans LabVIEW

+0

N'est-ce pas une propriété fondamentale des angles RPY? Voir http://www.chrobotics.com/library/understanding-euler-angles – nekomatic

Répondre

2

Nekomatic a raison, le verrou à cardan est un problème fondamental avec les angles d'Euler. Soit s'en tenir à Quaternions (que je conseillerais), une bibliothèque LabView téléchargeable gratuitement peut être trouvée ici: https://www.winemantech.com/blog/quaternions-for-rotations-in-native-labview, la boîte à outils labview robotics prend également en charge les quaternions mais est payée.

Sinon, gardez une trace lorsque vous approchez d'une singularité (verrou de cardan). Dans les angles de singularité peuvent basculer instantanément de 90 à -90 degrés, puisque dans le monde réel, vous savez que cela ne peut pas arriver, vous pouvez coder autour d'elle. Des exemples comment faire ceci peuvent être trouvés ici: http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToEuler/