Sobre el proyecto
Este repositorio es un proyecto paraguas (Umbrella) de pila completa para control de vuelo que incorpora 9 subrepositorios independientes mediante git submodule, gestionando de forma centralizada la arquitectura global, la documentación de ingeniería y los métodos de integración. Los subrepositorios evolucionan de forma independiente; el proyecto paraguas solo registra instantáneas de versiones y documentación.
La composición del proyecto incluye:
- flyctrl/: firmware de control de vuelo (Rust no_std, con EKF, PID, modos de vuelo, FDIR, enlace ascendente MAVLink)
- fly-simulater/: plataforma de simulación física (fly-sim-core, con plant, controller, sensor, wind, SIL)
- mcu_simulater/: emulador a nivel de instrucciones de MCU (Unicorn STM32F407 + periféricos virtuales I2C/UART/USB)
- joc-base/: núcleo RTOS + capa de placa (STM32F407 minimal, base del ELF de firmware, rama dev)
- joc-rtos-app-sdk/: SDK de aplicaciones (Rust no_std, registro/dispositivos/tareas, búfer de registro de 180B)
- mavlink-core/: códec MAVLink (tramas/enumeraciones/COMMAND_LONG)
- physics/: motor físico phy-sdk (dependencia opcional de fly-sim-core, física real en SIL)
- groundctrl/: estación terrestre (Rust)
- joc-drvtest-app/: aplicación de prueba de controladores (depuración de controladores de periféricos)
Inicio rápido:
1. Inicializar submódulos: `git submodule update --init --recursive`
2. Compilar firmware: `./scripts/build.sh real-sensors` o `./scripts/build.sh hil`, los artefactos se generan en /tmp
3. Regresión en un clic: `./scripts/verify.sh`
4. Integración en un clic: `./scripts/integrate.sh` (todo) o pasos específicos como `unlock`, `firmware`, etc.
Las URL de los submódulos son todas en formato SSH; la descarga entre máquinas requiere permisos de clave SSH. Si se produce un error de file transport, se puede usar `git -c protocol.file.allow=always submodule update --init --recursive`.
Convención de rutas de artefactos de integración: se priorizan las variables de entorno (como JOC_BASE_ELF, JOC_APP_FLYCTRL, etc.), seguidas del diseño estándar del proyecto paraguas (como joc-base/build_hil/stm32f407_minimal.elf), y por último las rutas históricas de respaldo. Flujo en una máquina nueva: inicializar submódulos → compilar firmware → ejecutar toda la integración.
Las instantáneas de versiones están fijadas por el proyecto paraguas; los commits de los submódulos se consultan mediante `git submodule status`. Tras avanzar, es necesario registrar la nueva instantánea en el proyecto paraguas para garantizar la reproducibilidad.
Navegación de documentación:
- docs/architecture.md: arquitectura global (pila de simulación de tres capas/flujo de datos/responsabilidades)
- docs/engineering.md: explicación detallada de las funciones de cada proyecto
- docs/integration.md: métodos de integración (periféricos virtuales/SIL/HIL/inyección de fallos/vuelo desbloqueado)
- docs/postmortem-rtos-pendsv-fallback.md: retrospectiva de la corrección del defecto de reserva de cola vacía de PendSV
- scripts/integrate.sh: script de integración en un clic
- scripts/verify.sh: script de regresión en un clic
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.