TL; DR: ¿Cuáles son algunas opciones para fusionar los datos adquiridos con controladores separados?
Estoy desarrollando mi propia IMU para un cuadrotor.
Mis entradas son un acelerómetro, un giro, un magnetómetro y un barómetro, todo a través de I2C y mi módulo GPS a través de una serie. Las actualizaciones de bus I2C & se transfiere mucho más rápido (~ pocos ms) que el serial (~ 1s, 4800 baudios).
Mis salidas serían comandos para 4 motores y registro de datos.
He estado leyendo las cosas de I2C con un AVR porque necesito actualizaciones rápidas para evitar la deriva de las cantidades que estoy integrando (giro, aceleración). Sin embargo, no puedo leer el gps con el mismo AVR a 4800 baudios sin saltarme una eternidad de datos de I2C. Llegué a la conclusión de que necesito leer el gps con otra cosa. (Actualmente una pi frambuesa)
Ya implementé un filtro kalman en el AVR para gyro / accel / mag / baro. Ahora quiero plegarme en GPS.
La opción más sencilla sería mover todo a la pi y ejecutar el I2C y la serie en subprocesos separados y guardar en variables globales. Pero alejarme de la adquisición de datos en tiempo real me preocupa.
Otra opción puede ser adquirir el I2C y el Serial con dos AVR independientes y guardar los datos en un módulo de memoria externo. Entonces necesitaría un tercer dispositivo para sacar todos los datos del módulo de memoria y ejecutar los cálculos. (¿Quizás esta es una versión loca de 'hardware' de una variable global?)
Simplemente tengo la sensación de que lo estoy haciendo de la manera incorrecta, incluso si pudiera hacerlo por fuerza bruta. ¿Existe una forma "correcta" de resolver este problema?