Copa FutBotMX 2026 — Team Lumen - Sponsored by CIATEQ

Autonomous robotic soccer for the Agile Category | June 24–26, 2026 · UPIITA-IPN, Mexico City

Competition Category Platform Framework Sponsor


The Team

We are a three-person student team from Mexico, sponsored and supported by CIATEQ — Centro de Tecnología Avanzada A.C., a leading applied research and technology center.

Member Role
Miguel (Team Leader) Software architecture, firmware, algorithms & control
Enrique Electronics design, PCB integration & software support
Norma Mechanical design, robot structure, chassis & hardware assembly

We are competing in the Categoría Ágil — the infrared ball detection category — where two fully autonomous robots per team play 2×10-minute matches with no remote control allowed.


What We're Building

Two fully autonomous soccer robots capable of detecting an IR-emitting ball, tracking it, making coordinated decisions, and scoring goals — all without any human intervention during play.

The robots communicate wirelessly with each other via ESP-NOW, share game state in real time, and divide responsibilities between an attacker and a defender role. Everything from ball detection to motor control runs on-board at ≥100 Hz.


Technical Overview

Hardware Platform

Component Specification
Microcontroller ESP32-S3
Drive system 3-wheel omnidirectional (holonomic)
Ball detection 7× VS1838B IR receiver array
Line detection 4× TCS34725 RGB color sensors (via TCA9545A I²C mux)
Orientation BMI160 6-axis IMU (gyro + accelerometer)
Actuator Solenoid kicker
Communication ESP-NOW (inter-robot), Wi-Fi AP (telemetry dashboard)
Max weight 1.4 kg
Max diameter 22 cm

Software Architecture

The firmware is written in C++17 using PlatformIO with the Arduino core for ESP32-S3. Key design principles:

  • Non-blocking main loop targeting ≥ 100 Hz — no delay() in loop()
  • FreeRTOS mutexes for thread-safe sensor data sharing
  • State machine for autonomous behavior: IDLE → SEARCH → APPROACH → DRIBBLE → SHOOT
  • Inverse kinematics for 3-wheel omnidirectional drive
  • Web telemetry dashboard served directly from the robot over Wi-Fi

Project Structure

Copa-FutBotMX-2026/
├── src/
│   ├── main.cpp                  ← Entry point, main loop
│   ├── config/
│   │   └── config.h              ← Pin definitions, PID gains, timing constants
│   ├── core/
│   │   ├── state.h / .cpp        ← Global robot state (role, FSM, sensor data)
│   │   └── SensorManager.h / .cpp← Unified sensor access layer
│   ├── drivers/
│   │   ├── motor_control.h / .cpp← Holonomic motor driver + inverse kinematics
│   │   └── kicker.h / .cpp       ← Solenoid kicker with cooldown logic
│   ├── sensors/
│   │   ├── ir_sensor_array.h / .cpp   ← IR ball detection + circular mean angle
│   │   ├── ColorSensorArray.h / .cpp  ← Line/boundary detection (TCS34725)
│   │   └── gyro.h / .cpp              ← BMI160 IMU integration
│   ├── behaviors/
│   │   └── strategy.h / .cpp     ← Game state machine + role logic
│   ├── comms/
│   │   └── comms.h / .cpp        ← ESP-NOW inter-robot communication
│   └── net/
│       ├── wifi.h / .cpp         ← Wi-Fi AP/STA management
│       └── web_server.h / .cpp   ← Async REST API + telemetry dashboard
├── shared/
│   ├── ir_protocol.h             ← ESP-NOW message structs (roles, states)
│   ├── field_constants.h         ← Field dimensions in cm
│   └── debug_utils.h             ← LOG() macro (disabled in production builds)
├── data/
│   ├── index.html                ← Telemetry dashboard UI
│   ├── style.css
│   └── script.js
├── docs/
│   ├── BOM.md                    ← Bill of Materials (required for registration)
│   └── poster/
└── platformio.ini

Project Highlights

IR Ball Tracking

The robot uses 7 infrared receivers arranged around its perimeter. A monostable retriggerable filter removes noise, and a circular mean algorithm calculates the precise angle to the ball — even when multiple sensors fire simultaneously.

Holonomic Drive

Three omni-wheels at 90°, 210°, and 330° allow the robot to move in any direction instantly — forward, sideways, diagonal — without rotating first. Full inverse kinematics implemented from scratch.

Live Telemetry Dashboard

Each robot hosts a web dashboard over its own Wi-Fi access point. From any browser on the same network you can monitor:

  • Robot role and game state
  • IR sensor array (radar view)
  • Gyro/IMU heading and orientation
  • RGB color sensor readings
  • Real-time uptime and emergency stop

Inter-Robot Coordination

Both robots communicate at ≥10 Hz using ESP-NOW (no router required). They share ball angle, confidence, heading, and role — enabling cooperative strategies like one robot defending while the other attacks.


Gallery

Photos and GIFs will be added as the build progresses.

Robot Build Telemetry Dashboard Field Test
(coming soon) (coming soon) (coming soon)

Getting Started

Prerequisites

  • PlatformIO (VS Code extension recommended)
  • ESP32-S3 board

Resources


Licencia / License

This project is developed for academic and competition purposes. See LICENSE for details.



🇲🇽 Versión en Español

For our sponsor, teammates, and the Mexican robotics community — here's a complete overview in Spanish.


Copa FutBotMX 2026 — Equipo CIATEQ

Este repositorio contiene el firmware completo y la arquitectura de software para nuestros dos robots de fútbol autónomos, con los que competimos en la Copa FutBotMX 2026, Categoría Ágil (24–26 de junio, UPIITA-IPN, Ciudad de México).


El Equipo

Somos un equipo de tres estudiantes mexicanos, patrocinados y apoyados por CIATEQ — Centro de Tecnología Avanzada A.C..

Integrante Área
Miguel (Líder) Software: arquitectura, firmware, algoritmos y control
Enrique Electrónica: diseño de circuitos, integración de PCB y apoyo en software
Norma Hardware: diseño mecánico, estructura del chasis y ensamblaje

¿Qué estamos construyendo?

Dos robots de fútbol completamente autónomos capaces de detectar una pelota emisora de IR, rastrearla, tomar decisiones coordinadas y marcar goles — sin ninguna intervención humana durante el juego.

Los robots se comunican entre sí de forma inalámbrica mediante ESP-NOW, comparten estado de juego en tiempo real y se dividen responsabilidades entre el rol de atacante y defensor. Todo el procesamiento ocurre en el robot a ≥100 Hz.


Resumen Técnico

Plataforma de hardware:

  • Microcontrolador ESP32-S3
  • Sistema de tracción omnidireccional de 3 ruedas (holonómico)
  • 7 receptores IR VS1838B para detección de pelota
  • 4 sensores de color TCS34725 para detección de líneas blancas
  • IMU BMI160 de 6 ejes para orientación
  • Patada solenoide
  • Comunicación ESP-NOW entre robots + dashboard de telemetría vía Wi-Fi

Software:

  • C++17 con PlatformIO y Arduino core para ESP32-S3
  • Loop principal no bloqueante a ≥100 Hz
  • Máquina de estados para comportamiento autónomo
  • Cinemática inversa para tracción omnidireccional
  • Dashboard de telemetría en tiempo real accesible desde el navegador

Estado del Proyecto

Subsistema Estado
Control de motores (holonómico) ✅ Implementado
Detección IR de pelota ✅ Implementado
Sensores de color / línea ✅ Implementado
IMU / giroscopio ✅ Implementado
Comunicación ESP-NOW ✅ Implementado
Dashboard de telemetría Wi-Fi ✅ Implementado
Patada (kicker solenoide) ✅ Implementado
Estrategia y lógica de juego 🔄 En desarrollo
Chasis + llantas + ensamble físico 🔄 En progreso
Pruebas de campo completas 🔜 Pendiente

🤝 Agradecimientos

Agradecemos a CIATEQ por el patrocinio, las instalaciones y el apoyo técnico brindado a lo largo de este proyecto. Su respaldo ha sido fundamental para llevar este equipo a la competencia.


Desarrollado con 💚 en México · Copa FutBotMX 2026

Built With

Share this project:

Updates

posted an update —

The competition started with a group stage, where only the top two teams from each group advanced to the quarterfinals. We made it through our group and into the knockout rounds.

We were sadly disqualified in the quarterfinals... by the team that went on to take first place! So, technically, we lost to the strongest opponent.

Log in or sign up for Devpost to join the conversation.