Kit en chino para replicar el robot bípedo Microduck, adaptado a servos Feetech HD1910, con guías de montaje, piezas imprimibles en 3D, placas HAT/IMU personalizadas y herramientas de entrenamiento con RL.
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
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
Framework open source para programar perros y gatos robóticos cuadrúpedos con Arduino y Raspberry Pi, con control de marcha, servos e integración de IMU.
Robot cuadrúpedo mini de código abierto e imprimible en 3D, basado en ESP32, con cara OLED y movimiento mediante servos.
Firmware alternativo para placas ESP8266 y ESP32 con configuración web, actualizaciones OTA, automatización local y control por MQTT, HTTP, Serial o KNX.
Un compilador de Go basado en LLVM que genera código para microcontroladores, WebAssembly (WASM/WASI) y herramientas de línea de comandos.
Herramienta de línea de comandos y sistema de compilación multiplataforma para desarrollo embebido, con gestión de bibliotecas, compatibilidad con varias placas y frameworks, depuración y pruebas unitarias.