Seguimiento de objetivos
Visión general
Sección titulada «Visión general»El seguimiento de objetivos es una aplicación importante de la inteligencia del drone. En este proyecto aprenderás a implementar el seguimiento en tiempo real de objetivos por color con la librería OpenCV.
Lo que aprenderás
Sección titulada «Lo que aprenderás»- Uso de la librería OpenCV
- Conversión del espacio de color
- Algoritmos de detección de objetivos
- Control de seguimiento en tiempo real
Materiales necesarios
Sección titulada «Materiales necesarios»| Artículo | Cantidad | Descripción |
|---|---|---|
| Drone ESP32-S3 | 1 | - |
| Módulo de cámara OV2640 | 1 | - |
| Bola roja | 1 | De 10cm de diámetro |
Paso 1: Instalar la librería OpenCV
Sección titulada «Paso 1: Instalar la librería OpenCV»Descomprime esp32_opencv.zip y copia los archivos de la librería a la carpeta components del proyecto.
Paso 2: Abrir el proyecto
Sección titulada «Paso 2: Abrir el proyecto»Descomprime color_tracking.zip y ábrelo con VS Code.
Paso 3: Implementar la función de seguimiento por color
Sección titulada «Paso 3: Implementar la función de seguimiento por color»Abre color_tracking.c e implementa el seguimiento por color:
void color_tracking(uint8_t* frame, int width, int height, int* target_x, int* target_y) { // 1. Convertir la imagen RGB al espacio HSV cvt_color_rgb2hsv(frame, width, height);
// 2. Aplicar el filtro por umbral de color (rojo) uint8_t mask[width * height]; hsv_threshold(frame, width, height, mask, 0, 10, 100, 255, 100, 255);
// 3. Buscar los contornos y calcular el centro del objetivo find_contours(mask, width, height); if (has_contours()) { *target_x = get_largest_contour_center_x(); *target_y = get_largest_contour_center_y(); } else { *target_x = -1; *target_y = -1; }}Paso 4: Añadir la lógica de seguimiento
Sección titulada «Paso 4: Añadir la lógica de seguimiento»Abre flight_control.c y añade en el bucle principal:
int target_x, target_y;color_tracking(frame, width, height, &target_x, &target_y);
if (target_x != -1) { // Objetivo a la izquierda → el drone gira a la izquierda if (target_x < width / 2 - 20) { motorsSetRatio(MOTOR_M1, current_ratio * 0.8); motorsSetRatio(MOTOR_M2, current_ratio * 1.2); motorsSetRatio(MOTOR_M3, current_ratio * 0.8); motorsSetRatio(MOTOR_M4, current_ratio * 1.2); } // Objetivo a la derecha → el drone gira a la derecha else if (target_x > width / 2 + 20) { motorsSetRatio(MOTOR_M1, current_ratio * 1.2); motorsSetRatio(MOTOR_M2, current_ratio * 0.8); motorsSetRatio(MOTOR_M3, current_ratio * 1.2); motorsSetRatio(MOTOR_M4, current_ratio * 0.8); } // Objetivo en el centro → el drone avanza else { motorsSetRatio(MOTOR_M1, current_ratio * 1.1); motorsSetRatio(MOTOR_M2, current_ratio * 1.1); motorsSetRatio(MOTOR_M3, current_ratio * 1.1); motorsSetRatio(MOTOR_M4, current_ratio * 1.1); }}Paso 5: Probar
Sección titulada «Paso 5: Probar»- Mueve la bola roja y observa si el drone la sigue de forma estable
- Reto: haz que el drone siga la bola roja dando una vuelta alrededor de una mesa
Solución de problemas
Sección titulada «Solución de problemas»El reconocimiento es impreciso
Sección titulada «El reconocimiento es impreciso»- Ajusta los umbrales de color
- Mejora las condiciones de iluminación
El seguimiento es inestable
Sección titulada «El seguimiento es inestable»- Optimiza los parámetros de control
- Añade un algoritmo de predicción
Sensación de logro
Sección titulada «Sensación de logro»¡Enhorabuena! Has implementado un sistema de seguimiento de objetivos, ¡una aplicación importante de la inteligencia del drone!
Siguiente paso
Sección titulada «Siguiente paso»En el siguiente proyecto aprenderás a desplegar modelos de IA en el ESP32-S3.
Publicado por primera vez endrone.imagrove.com/es/advanced/target-tracking/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.