Combine datos de giroscopio y acelerómetro

Estoy construyendo un robot de equilibrio usando el sistema NXT de Lego Mindstorm. Estoy usando dos sensores de HiTechnic, el primero es un acelerómetro y el segundo es un giroscopio. He filtrado con éxito el ruido de ambos sensores y los angularjs derivados para ambos en un rango entre -90 y 90 grados, con 0 grados perfectamente equilibrados.

Mi próximo reto es combinar ambos valores de los sensores para corregir la deriva del giroscopio a lo largo del tiempo. A continuación se muestra un ejemplo de gráfico que creé a partir de datos reales para demostrar la deriva del giroscopio:

enter image description here

El enfoque más comúnmente utilizado que he visto para hacer que la combinación de estos sensores sea sólida como la roca es mediante el uso de un filtro de Kalman. Sin embargo, no soy un experto en cálculo y realmente no entiendo los símbolos matemáticos, aunque sí entiendo las matemáticas en el código fuente.

Estoy usando RobotC (que es como cualquier otro derivado C) y realmente apreciaría si alguien me puede dar ejemplos de cómo lograr esto en C.

¡Gracias por tu ayuda!

RESULTADOS DE LA SOLUCIÓN:

De acuerdo, Kersny resolvió mi problema presentándome filtros complementarios. Este es un gráfico que ilustra mis resultados:

Resultado n. ° 1

enter image description here

Resultado n. ° 2

enter image description here

Como puede ver, el filtro corrige la deriva giroscópica y combina ambas señales en una sola señal suave.

Editar: Ya que estaba arreglando las imágenes rotas de todos modos, pensé que sería divertido mostrar la plataforma que utilicé para generar estos datos:

enter image description here

Los filtros de Kalman son geniales y todo, pero encuentro que el filtro complementario es mucho más fácil de implementar con resultados similares. Los mejores artículos que he encontrado para codificar un filtro complementario son este wiki (junto con este artículo sobre la conversión de sensores a unidades de ingeniería) y un PDF en el archivo comprimido en esta página (en Documentación técnica, creo que el nombre del archivo en el zip es filter.pdf);

PD. Si está atascado en un filtro de Kalman, aquí hay un código de syntax C para el Arduino que lo implementa.

Gamasutra.com publicó un artículo sobre el uso de filtros de Kalman para el filtrado de WiiMote .

Hay algunos enlaces al código fuente de C ++ al final del artículo.