J'ai le projet de réaliser un compas pour voilier. J'utilise une imu witmotion wt901c.
Pour le moment je fais des tests en python. J'ai calibré correctement l'imu. mais quand je fais giter l'IMU le cap Z varie en moyenne de 1° pour 10° de gite sur l'axe Y ou X.
Le calcule avec Quaternion ou par l'IMU donne la même chose ...
Y a t'il des librairies ou formules qui permettent de compenser l'effet de gite sur le cap ?
mon code python pour test :
import math
import time
from witmotion import IMU
Offset_z = 0
def callback(msg):
q = imu.get_quaternion()
if q is not None:
yaw = math.atan2(2 * (q[1] * q[2] + q[0] * q[3]), q[0] * q[0] + q[1] * q[1] - q[2] * q[2] - q[3] * q[3])
yaw *= 180 / math.pi
if yaw < 0 :
yaw = -yaw
yaw += Offset_z
print('quaterion z : ', round(yaw))
print(imu.get_angle())
imu = IMU('/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0',9600)
imu.subscribe(callback)
Il faudrait étudier des filtres de fusion tels que un filtre de Kalman ou un filtre de Mahony. Ces filtres peuvent aider à combiner les données provenant des capteurs de l'IMU de manière à réduire les erreurs, y compris celles induites par le mouvement du bateau.
Je ne connais pas ce composant, peut être n’est il pas de si bonne qualité que la pub semble indiquer… (si vous avez bien calibré et pas introduit une boîte métallique ensuite comme pivot)