Lógica de control, navegación avanzada y rutinas para la World Robot Olympiad.
Este repositorio contiene el código fuente completo para la operación del robot en la competencia WRO 2026. El código está escrito en Python y utiliza el framework Pybricks (MicroPython) para la comunicación con el PrimeHub.
El proyecto está estructurado de manera modular para separar el control de bajo nivel del hardware (robot.py) de la orquestación de las misiones específicas en la pista (app.py). El enfoque principal del equipo es la estabilidad de navegación mediante algoritmos PID y un sistema de detección de color preciso y anti-rebote.
El robot está construido sobre la plataforma LEGO Education SPIKE Prime, utilizando un PrimeHub con la siguiente distribución de puertos:
- Puerto A: Motor Izquierdo
- Puerto B: Motor Derecho
- Puerto C: Garra Trasera
- Puerto F: Garra Delantera / Pala
- Puerto D: Sensor de Color Principal (Frontal)
Nota técnica sobre potencia: Las rutinas de las garras que utilizan topes mecánicos (funciones
run_until_stalled) deben ejecutarse con potencia y velocidad al máximo para vencer la resistencia de los hules tensores e inercia del mecanismo.
Se ha estandarizado la recolección de bloques utilizando un flujo directo con la garra trasera, eliminando secuencias complejas. El estado actual de las tareas es el siguiente:
- Construcción Inicial: [OK] Despliegue estable del bloque de cemento y la llana.
- Bloques Blancos: [OK] Rutina de recolección unificada completada.
- Mosaico: [OK] Escaneo exitoso y detección de combinaciones de colores (integrado con el sensor frontal).
- Bloques Amarillos y Azules: [OK] Recolección y reubicación operativa.
- Armado de Mosaico: [Parcial] Soporte inicial (Caso 1: verde-verde, 4/12 bloques).
- Llevada de la pala: Está pendiente desarrollar una mejor solución para el transporte de la pala en el inicio, debido a la ausencia de los brazos frontales con los que se agarraba en iteraciones anteriores del diseño.
El núcleo del robot (robot.py) ha sido optimizado con las siguientes funciones personalizadas para superar las limitaciones del hardware estándar:
- Detección de Color Avanzada (HSV): Se migró a un sistema de detección basado en valores HSV (
detectar_color_preciso) con lógica anti-rebote (debouncing). Esto elimina lecturas inconsistentes (especialmente en los bordes de la línea negra/blanca) y hace al robot mucho más predecible. - Seguidores de Línea PID: Implementación de múltiples seguidores de línea (por distancia o por color) para máxima estabilidad. Incluye una función de frenado progresivo (
seguidor_linea_distancia_desacelerado) para lograr detenciones milimétricas. - Navegación y Detección de Cruces: El sistema utiliza un modelo optimizado de seguimiento mediante un solo sensor frontal para la detección de intersecciones y finalización de tramos.
- Manejo de Fricción (Sacudidas): Implementación de inyección de voltaje directo (
dc) con la funciónsacudirpara asentar bloques pesados venciendo la fricción sin causar un estancamiento del código.
El repositorio está configurado para un flujo de trabajo ágil utilizando Visual Studio Code y la extensión pybricksdev.
- Enciende el PrimeHub y asegúrate de que el Bluetooth esté activo.
- Abre el repositorio en VS Code.
- Utiliza la configuración incluida en
.vscode/launch.jsonejecutando la tarea "Python Debugger: Module" (F5). Esto compilará y enviará el script principal vía Bluetooth. - El punto de entrada es
app.py.