Ir al contenido

Seguimiento de objetivos

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.

  • Uso de la librería OpenCV
  • Conversión del espacio de color
  • Algoritmos de detección de objetivos
  • Control de seguimiento en tiempo real
Artículo Cantidad Descripción
Drone ESP32-S3 1 -
Módulo de cámara OV2640 1 -
Bola roja 1 De 10cm de diámetro

Descomprime esp32_opencv.zip y copia los archivos de la librería a la carpeta components del 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;
}
}

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);
}
}
  1. Mueve la bola roja y observa si el drone la sigue de forma estable
  2. Reto: haz que el drone siga la bola roja dando una vuelta alrededor de una mesa
  • Ajusta los umbrales de color
  • Mejora las condiciones de iluminación
  • Optimiza los parámetros de control
  • Añade un algoritmo de predicción

¡Enhorabuena! Has implementado un sistema de seguimiento de objetivos, ¡una aplicación importante de la inteligencia del drone!

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.

ImagroveMás tutoriales sobre ESP32 · ESP32 IoT Tutorial

© 2026 ESP32 Drone. Todos los derechos reservados.