Skip to content

About

Control de estabilidad en cabeceo para un cohete finless mediante TVC: PID robusto, control digital a 250 Hz, C99 para MCU, validación ±20 %, Matplotlib y MuJoCo 3D.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Control de estabilidad en cabeceo para un cohete finless

Proyecto técnico desarrollado para el reto de ingreso de Xavierian Aerospace Engineering (XAE). Implementa y valida un controlador de estabilidad de un grado de libertad para mantener el cabeceo de un cohete experimental aproximadamente vertical mediante control vectorial de empuje (Thrust Vector Control, TVC).

El vehículo es un cohete universitario representativo, rígido, sin aletas y aerodinámicamente inestable. El alcance se limita a la fase propulsada y a un punto de operación congelado; no representa el vehículo real de XAE ni una simulación completa de seis grados de libertad.

Controlador final

El controlador continuo final emplea las ganancias:

Parámetro Valor
Kp 0.33467811
Ki 0.48302948 1/s
Kd 0.07929096 s
Filtro de velocidad angular tau_f = 0.005 s
Actuador de primer orden tau_a = 0.03 s
Límite del gimbal ±5 deg

La implementación digital final opera a 250 Hz (T_s = 0.004 s) e incluye filtro bilineal de la velocidad angular, integral discreta, saturación, anti-windup condicional y comprobaciones de temporización y validez de sensores.

Resultados principales

Validación Resultado
Tiempo de establecimiento nominal continuo 1.816 s
Margen de fase continuo 47.000 deg
Frecuencia de cruce 13.594 rad/s
Tiempo nominal digital a 250 Hz 1.814 s
Monte Carlo continuo, 300 casos 100 % de cumplimiento; T_s,max = 1.916 s
Monte Carlo digital, 300 casos 100 % de cumplimiento; T_s,max = 1.913 s
Diferencia máxima Python–C 5.42e-8 en los estados/comandos evaluados
Diferencia angular nominal MuJoCo–modelo reducido 0.00690 deg

Los análisis One-at-a-Time (OAT), los 32 vértices del hipercubo y Monte Carlo aportan evidencia numérica de robustez dentro del dominio paramétrico estudiado de ±20 %; no constituyen una demostración matemática absoluta sobre todo el continuo paramétrico.

Estructura

xae/                 Modelo, control continuo/digital y utilidades
scripts/             Simulaciones, validaciones y demostraciones
tests/               Pruebas unitarias de las etapas digital y MuJoCo
mcu/                 Implementación equivalente en C99
mujoco/              Escena 3D, gimbal y recurso visual
results/data/         Métricas y tablas compactas reproducibles
results/figures/      Figuras finales en PNG

Instalación

Entorno de referencia: Python 3.8.10 sobre Ubuntu 20.04.

python3 -m venv .venv
source .venv/bin/activate
unset PYTHONPATH
python -m pip install --upgrade pip
python -m pip install -r requirements_mujoco.txt
python -m pip install -e .
python -m pip check

Verificación

python -m unittest discover -s tests -v
make -C mcu clean all test
python scripts/validate_discrete_controller.py
python scripts/validate_mcu_implementation.py
python scripts/validate_mujoco_model.py

La medición temporal incluida para C99 se obtuvo en el computador anfitrión y no debe interpretarse como Worst-Case Execution Time (WCET) de un microcontrolador real.

Ejecuciones principales

python scripts/run_nominal.py
python scripts/run_disturbances.py
python scripts/run_frequency.py
python scripts/run_robustness.py
python scripts/interactive_demo.py
python scripts/run_mujoco_demo.py

Para comprobar MuJoCo sin abrir el visor:

python scripts/run_mujoco_demo.py --headless --duration 2

Limitaciones del modelo

El modelo nominal no incluye roll, yaw, traslación lateral explícita, consumo continuo de masa, combustión, flexibilidad, sloshing, aeroelasticidad, ruido de sensores, navegación ni recuperación. Las perturbaciones del modelo reducido se representan mediante un momento equivalente alrededor del centro de gravedad; en MuJoCo se realizan como fuerzas laterales aplicadas fuera del centro de gravedad.

About

Control de estabilidad en cabeceo para un cohete finless mediante TVC: PID robusto, control digital a 250 Hz, C99 para MCU, validación ±20 %, Matplotlib y MuJoCo 3D.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages