As de la evasión
Visión general
Sección titulada «Visión general»La evitación de obstáculos en tiempo real es una garantía clave para el vuelo seguro del drone. En este proyecto aprenderás a desarrollar un sistema de evitación de obstáculos en tiempo real.
Lo que aprenderás
Sección titulada «Lo que aprenderás»- Principios de los algoritmos de evitación
- Método de campos potenciales artificiales
- Histograma de campos vectoriales (VFH)
- Método de la ventana dinámica (DWA)
Materiales necesarios
Sección titulada «Materiales necesarios»| Artículo | Cantidad | Descripción |
|---|---|---|
| Drone con sensores de distancia | 1 | Sensores VL53L0X, TOF |
| Ordenador | 1 | Con entorno VS Code + ESP-IDF |
| Cable de datos USB | 1 | Para programar |
| Espacio interior | 1 | Para colocar obstáculos |
Paso 1: Conocer el sistema de evitación
Sección titulada «Paso 1: Conocer el sistema de evitación»El sistema de evitación detecta los obstáculos circundantes mediante sensores, planifica una ruta segura y controla el drone para que los esquive.
Algoritmos de evitación habituales:
- Método de campos potenciales artificiales
- Histograma de campos vectoriales (VFH)
- Método de la ventana dinámica (DWA)
Paso 2: Disposición de los sensores
Sección titulada «Paso 2: Disposición de los sensores»Instala varios sensores de distancia alrededor del drone (delantero, trasero, izquierdo, derecho) para lograr una detección de obstáculos en todas las direcciones.
Paso 3: Implementación del algoritmo de evitación
Sección titulada «Paso 3: Implementación del algoritmo de evitación»Elige DWA (método de la ventana dinámica):
void obstacleAvoidance() { // Leer los datos de los sensores y detectar obstáculos float dist_front = readDistanceSensor(FRONT); float dist_left = readDistanceSensor(LEFT); float dist_right = readDistanceSensor(RIGHT);
// Construir la lista de obstáculos Obstacle obstacle_list[10]; int obs_count = 0;
if (dist_front < 200) { obstacle_list[obs_count].x = current_x + dist_front; obstacle_list[obs_count].y = current_y; obs_count++; }
// Usar el algoritmo DWA para planificar una velocidad segura float vx, vy, vz, yaw_rate; dwaPlanner(&vx, &vy, &vz, &yaw_rate, obstacle_list, obs_count);
// Controlar el drone para ejecutar la maniobra de evitación commanderSetVelocitySetpoint(vx, vy, vz, yaw_rate);}Paso 4: Compilar, grabar y probar
Sección titulada «Paso 4: Compilar, grabar y probar»- Compila y graba el código
- Prueba en un espacio interior con obstáculos colocados
Solución de problemas
Sección titulada «Solución de problemas»La evitación responde con lentitud
Sección titulada «La evitación responde con lentitud»- Optimiza la frecuencia de lectura de los sensores
- Simplifica el algoritmo de evitación
La ruta de evitación no es razonable
Sección titulada «La ruta de evitación no es razonable»- Ajusta los parámetros de DWA
- Añade más sensores
Sensación de logro
Sección titulada «Sensación de logro»¡Enhorabuena! Has implementado un sistema de evitación de obstáculos en tiempo real, ¡una garantía importante para el vuelo seguro del drone!
Siguiente paso
Sección titulada «Siguiente paso»En el siguiente proyecto aprenderás a implementar el seguimiento en tiempo real de objetivos por color con la librería OpenCV.
Publicado por primera vez endrone.imagrove.com/es/advanced/obstacle-avoidance/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.