Bonjour, je travaille actuellement sur un bras mécanique 3 axes suivant le yaw/pitch/roll d'un téléphone via bluetooth.
Je programme l'acquisition et le traitement de la trame Bluetooth sur Arduino UNO couplé au module HC06.
L'émission de la trame se fait sous Android avec une application codée (si on peut appeler ça coder) sur App Inventor.
Pour les axes roll et pitch, j'utilise l’accéléromètre sur les axes X et Y avec un filtre de Kalman. Je n'ai aucun soucis sur ces deux axes.
Le problème intervient au niveau du yaw. J'emploie le orientation sensor (magnétomètre je suppose) pour connaitre le yaw du téléphone mais il dérive (surement exponentiellement) lorsque le téléphone n'est plus à niveau (logique étant donné que le principe est celui d'une boussole si je ne me trompe pas), c'est à dire lorsque le pitch et le roll sont différents de 0, orientés. De plus sur app inventor, avec le orientation sensor, on a une variable nommée magnitude variant de 0 à 1, 0 quand le téléphone est à niveau et 1 lorsqu'il est perpendiculaire.
Voilà ma question : n'y aurait-il pas une équation mathématique liant la magnitude et l'accéléromètre sur les axes X et Y pour compenser le drift du yaw ?
Je tiens à préciser que je suis prêt à lire toute piste, étant donné que cela fait longtemps que je tente des formules tirées par les cheveux.
Merci pour vos futures réponses.
-----