Estoy tratando de hacer un ángulo de euler o cuaternión usando el sensor MEMS de LSM9DS1TR (similar a LSM9DS1) Archivo PDF
let accel_x = data.accel_x_mg/9.81, //velocity accel_y = data.accel_z_mg/9.81, //velocity accel_z = data.accel_y_mg/9.81, //velocity gyro_x = data.gyro_x_dps*0.07/57.295779513, //degrees per radians. gyro_y = data.gyro_z_dps*0.07/57.295779513, //degrees per radians. gyro_z = data.gyro_y_dps*0.07/57.295779513, //degrees per radians. magn_x = data.magn_x_mG, magn_y = data.magn_z_mG, magn_z = data.magn_y_mG; let thetaM = Math.atan2(accel_x, Math.sqrt(accel_y*accel_y+accel_z*accel_z)); let phiM = Math.atan2(accel_y, Math.sqrt(accel_x*accel_x+accel_z*accel_z)) console.log(thetaM*57.295779513, phiM*57.295779513)Con este código obtengo ángulos de grado perfectos. Pero esos son solo de -90 a 90. Y quiero mostrar un objeto para mostrar cómo se mueve el sensor. Entonces comencé a usar AHRS pero esto no funciona. Cuando lo hago
madgwick.update(gyro_x, gyro_y, gyro_z, accel_x, accel_y, accel_z, magn_x, magn_y, magn_z); let quat = madgwick.getQuaternion();Me sale perfecto 1 si lo hago
Math.sqrt(quat.w*quat.w+quat.x*quat.x+quat.y*quat.y+quat.z*quat.z);Pero si convierto el quat.x*57.295779513, sube un poco, pero cuando lo mantengo quieto, no permanece en ese ángulo de grado, vuelve a algo así como 1 o 0 cero grados.
¿Cómo puedo arreglar esto?