Experto en fusión de sensores
Visión general
Sección titulada «Visión general»La fusión de sensores es la tecnología clave para mejorar la precisión de la estimación de estado del drone. En este proyecto aprenderás a desarrollar un sistema de fusión de datos de múltiples sensores.
Lo que aprenderás
Sección titulada «Lo que aprenderás»- Principios del filtro de Kalman (KF)
- Filtro de Kalman extendido (EKF)
- Filtro de Kalman sin perfume (UKF)
- Fusión de múltiples sensores
Materiales necesarios
Sección titulada «Materiales necesarios»| Artículo | Cantidad | Descripción |
|---|---|---|
| Drone ya ensamblado | 1 | Con sensores MPU6050, BMP280, VL53L0X, etc. |
| Ordenador | 1 | Con entorno VS Code + ESP-IDF |
| Cable de datos USB | 1 | Para programar |
Paso 1: Conocer la fusión de sensores
Sección titulada «Paso 1: Conocer la fusión de sensores»El objetivo de la fusión de sensores es combinar la información de varios sensores para obtener una estimación de estado más precisa.
Algoritmos de fusión de sensores habituales:
- Filtro de Kalman (KF)
- Filtro de Kalman extendido (EKF)
- Filtro de Kalman sin perfume (UKF)
- Filtro de partículas (PF)
Paso 2: Elección del algoritmo
Sección titulada «Paso 2: Elección del algoritmo»Elige un algoritmo de fusión adecuado para el drone, como EKF (para sistemas no lineales).
Diseña el vector de estado y el vector de observación, y construye el modelo del sistema.
Paso 3: Implementación en código
Sección titulada «Paso 3: Implementación en código»En el directorio components/core/crazyflie/modules/src/estimator, crea un nuevo archivo de estimador:
typedef struct { float x[12]; // vector de estado float P[12][12]; // matriz de covarianza float Q[12][12]; // covarianza del ruido de proceso float R[6][6]; // covarianza del ruido de medición} EKF_State;
void ekf_predict(EKF_State *ekf, float dt) { // Paso de predicción // x = f(x, u) // P = F * P * F' + Q}
void ekf_update(EKF_State *ekf, float *measurement) { // Paso de actualización // K = P * H' * (H * P * H' + R)^-1 // x = x + K * (z - h(x)) // P = (I - K * H) * P}
void ekf_fuse_sensors(EKF_State *ekf, MPU6050_Data *imu, BMP280_Data *baro, VL53L0X_Data *tof) { // Fusionar los datos de la IMU ekf_predict(ekf, 0.01);
// Fusionar los datos del barómetro float z_measurement[1] = {baro->altitude}; ekf_update(ekf, z_measurement);
// Fusionar los datos TOF float tof_measurement[1] = {tof->distance}; ekf_update(ekf, tof_measurement);}Paso 4: Compilar, grabar y probar
Sección titulada «Paso 4: Compilar, grabar y probar»- Compila y graba el código
- Realiza pruebas de vuelo y compara la precisión de la estimación de estado del nuevo estimador frente al original
Solución de problemas
Sección titulada «Solución de problemas»La estimación diverge
Sección titulada «La estimación diverge»- Comprueba las matrices de covarianza de ruido Q y R
- Confirma la calidad de los datos de los sensores
Retardo en la respuesta
Sección titulada «Retardo en la respuesta»- Optimiza la eficiencia de cálculo del algoritmo
- Reduce la dimensión del vector de estado
Sensación de logro
Sección titulada «Sensación de logro»¡Enhorabuena! Ya dominas la tecnología central de la fusión de sensores, ¡clave para la estimación de estado del drone!
Siguiente paso
Sección titulada «Siguiente paso»En el siguiente proyecto aprenderás a implementar la localización en interiores con los datos de flujo óptico de la cámara.
Publicado por primera vez endrone.imagrove.com/es/advanced/sensor-fusion/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.
© 2026 ESP32 Drone. Todos los derechos reservados.