De alguna manera, no me di cuenta de esta pregunta en el momento en que se me hizo esta pregunta o la hubiera respondido antes.
Sí, lo que quieres hacer es definitivamente posible, y existe un software para ayudarte a hacerlo, pero desafortunadamente, parte de él es bastante caro.
Básicamente, necesitas usar algo como un filtro de Kalman para combinar todos tus datos (aceleración sin formato, velocidad angular) y lecturas de campo magnético) en un modelo completo del sensor que incluye tanto su posición relativa como su actitud absoluta (orientación). (Si también agrega algo como un receptor GPS, también puede obtener una posición absoluta).
El filtro funciona de tal manera que usa el magnetómetro para corregir los errores a largo plazo (por ejemplo, cambios de compensación y de escala) en los acelerómetros y giroscopios, y luego puede usar esta estimación de la actitud del sensor para compensar por inclinación las lecturas del campo magnético para obtener un rumbo magnético. Como beneficio adicional, también obtiene el verdadero "rumbo sobre el suelo" del sensor a partir de la secuencia de estimaciones de posición, que podrían diferir del rumbo si el nadador está nadando en una corriente cruzada de algún tipo.
En cuanto al software para realizar este tipo de procesamiento posterior, un ejemplo que conozco se llama Inertial Explorer , pero es muy caro y probablemente sea demasiado para su aplicación. Si busca, debería poder encontrar proyectos de código abierto que satisfagan sus necesidades.