Ir al contenido

Maestro del control

Los algoritmos de control avanzados son el núcleo de la optimización del rendimiento del drone. En este proyecto aprenderás a implementar los algoritmos de control LQR y MPC para mejorar la estabilidad y la velocidad de respuesta del drone.

  • Principios de LQR (Regulador Cuadrático Lineal)
  • Principios de MPC (Control Predictivo por Modelo)
  • Modelado e identificación de sistemas
  • Diseño e implementación de controladores
Artículo Cantidad Descripción
Drone ya ensamblado 1 -
Ordenador 1 Con entorno VS Code + ESP-IDF
Cable de datos USB 1 Para programar
MATLAB o Python 1 Para diseño y simulación de algoritmos

Paso 1: Conocer los algoritmos de control avanzados

Sección titulada «Paso 1: Conocer los algoritmos de control avanzados»

Diseña un controlador óptimo minimizando una función de coste cuadrática.

Basado en el modelo del sistema, predice los estados futuros y optimiza la secuencia de control.

  1. Construye un modelo linealizado del drone
  2. Incluye la dinámica de actitud y la dinámica de posición
  3. Usa MATLAB o Python para la identificación del sistema y la validación del modelo

Usa la función lqr() de MATLAB o la librería control de Python para diseñar el controlador LQR:

from control import lqr
# Matrices del sistema
A = [[...]] # matriz de estado
B = [[...]] # matriz de entrada
Q = [[...]] # matriz de ponderación de estado
R = [[...]] # matriz de ponderación de control
# Calcular la ganancia LQR
K, S, E = lqr(A, B, Q, R)

En el directorio components/core/crazyflie/modules/src/controller, crea un nuevo archivo de controlador:

controller_lqr.c
void controllerLQR(control_t *control, setpoint_t *setpoint, const state_t *state) {
// Calcular el error de estado
float error[12];
error[0] = setpoint->position.x - state->position.x;
error[1] = setpoint->position.y - state->position.y;
error[2] = setpoint->position.z - state->position.z;
// ... otros errores de estado
// Ley de control LQR: u = -K * error
float control_output[4];
for (int i = 0; i < 4; i++) {
control_output[i] = 0;
for (int j = 0; j < 12; j++) {
control_output[i] -= K[i][j] * error[j];
}
}
// Aplicar la salida de control
control->thrust = control_output[0];
control->roll = control_output[1];
control->pitch = control_output[2];
control->yaw = control_output[3];
}
  1. Compila y graba el código
  2. Realiza pruebas de vuelo y compara la diferencia de rendimiento entre el controlador avanzado y el controlador PID
  • Comprueba que el modelo del sistema sea preciso
  • Ajusta las matrices de ponderación Q y R
  • Aumenta la ponderación de estado Q
  • Reduce la ponderación de control R

¡Enhorabuena! Has implementado algoritmos de control avanzados, ¡la tecnología central del control de drones!

En el siguiente proyecto aprenderás a desarrollar un sistema de fusión de datos de múltiples sensores.

Publicado por primera vez endrone.imagrove.com/es/advanced/advanced-control/Al citar o reproducir, indica la fuente Imagrove y enlaza a esta página.

¿Dudas o problemas con este tutorial?

Inicia sesión con GitHub para comentar. Si un paso te falla, avísanos: lo verificamos y actualizamos el tutorial.

ImagroveMás tutoriales sobre ESP32 · ESP32 IoT Tutorial

© 2026 ESP32 Drone. Todos los derechos reservados.