Repolode
hijimasa

hijimasa/cxd5602pwbimu_localizer_arduino

Proyecto para Arduino IDE en la placa Sony Spresense que estima la posición y la orientación con su IMU mediante navegación por estima con ZUPT.

Estrellas
29
Forks
6
Issues abiertos
1
Último commit
hace 21 horas

¿Qué es?

Este proyecto ejecuta localización inercial en la placa principal Sony Spresense con la IMU adicional CXD5602PWBIMU. Lee la aceleración y la velocidad angular a 1920 Hz y estima la orientación, la velocidad y la posición en un sistema de coordenadas NWU relativo a la Tierra. El trabajo se reparte entre los dos núcleos de Spresense: MainCore adquiere los datos de la IMU y muestra la salida por el puerto serie, mientras que SubCore1 ejecuta la biblioteca Fusion AHRS, las actualizaciones de velocidad cero (ZUPT), el aprendizaje de sesgos y la integración trapezoidal.

La estimación de posición parte de una calibración inicial con el dispositivo inmóvil, de unos 15 segundos, tras la cual el dispositivo imprime líneas CSV de 18 valores a 30 Hz. Los periodos de inmovilidad ponen la velocidad a cero y reducen la deriva; cuando se confirma una parada, se elimina de la posición el error de velocidad acumulado durante el movimiento anterior. El algoritmo está escrito en C++ independiente de Arduino para poder probarlo en una PC anfitriona con datos sintéticos, y las grabaciones del dispositivo se pueden reproducir con el mismo código.

El repositorio también incluye una calibración del sesgo del acelerómetro en seis orientaciones a través del puerto serie, una herramienta para grabar datos sin procesar del dispositivo y un nodo de ROS 2 que convierte la salida serie en mensajes estándar de ROS.

Funciones clave

  • 01Lee datos de la IMU a 1920 Hz y los transfiere entre los dos núcleos de Spresense mediante un búfer circular.
  • 02Estima la orientación con la biblioteca Fusion AHRS y elimina la gravedad de la aceleración.
  • 03Detecta periodos de inmovilidad mediante un método ZUPT basado en la varianza y la media, y pone la velocidad a cero mientras el dispositivo permanece inmóvil.
  • 04Aprende el sesgo del acelerómetro durante los periodos de reposo y compensa la rotación de la Tierra en el giroscopio.
  • 05Corrige retroactivamente el error de posición acumulado cuando se confirma una parada.
  • 06Incluye una calibración del acelerómetro en seis orientaciones que se guarda en la memoria flash SPI.

Casos de uso

  • Experimentar con navegación inercial por estima de bajo costo en una placa Spresense.
  • Estudiar implementaciones de ZUPT y fusión de sensores en C++ independiente de Arduino.
  • Enviar la salida serie de la IMU de Spresense a ROS 2 para visualizarla en RViz.

En colecciones

Temas

#imu#sensor-fusion#localization#arduino#embedded#zupt#spresense#robotics

Preguntas frecuentes

¿Qué es cxd5602pwbimu_localizer_arduino?
Proyecto para Arduino IDE en la placa Sony Spresense que estima la posición y la orientación con su IMU mediante navegación por estima con ZUPT. Este proyecto ejecuta localización inercial en la placa principal Sony Spresense con la IMU adicional CXD5602PWBIMU. Lee la aceleración y la velocidad angular a 1920 Hz y estima la orientación, la velocidad y la posición en un sistema de coordenadas NWU relativo a la Tierra. El trabajo se reparte entre los dos núcleos de Spresense: MainCore adquiere los datos de la IMU y muestra la salida por el puerto serie, mientras que SubCore1 ejecuta la biblioteca Fusion AHRS, las actualizaciones de velocidad cero (ZUPT), el aprendizaje de sesgos y la integración trapezoidal.
¿cxd5602pwbimu_localizer_arduino es gratuito? ¿Qué licencia tiene?
cxd5602pwbimu_localizer_arduino es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿cxd5602pwbimu_localizer_arduino sigue mantenido?
Mantenimiento activo. El último commit de cxd5602pwbimu_localizer_arduino fue el 6 nov 2026.
¿Para qué puedo usar cxd5602pwbimu_localizer_arduino?
Experimentar con navegación inercial por estima de bajo costo en una placa Spresense. Estudiar implementaciones de ZUPT y fusión de sensores en C++ independiente de Arduino. Enviar la salida serie de la IMU de Spresense a ROS 2 para visualizarla en RViz.
¿Dónde consigo cxd5602pwbimu_localizer_arduino?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/hijimasa/cxd5602pwbimu_localizer_arduino

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados