Este proyecto es un engine modular en Python diseñado para interactuar con el simulador FIRASim (Very Small Size League – VSSL), siguiendo una arquitectura similar a la del engine SSL de Sysmic Robotics, pero adaptada y simplificada para Python.
Este enfoque me permite aprender los conceptos fundamentales de visión, estrategia y control en un entorno más accesible antes de escalar a una versión en C++.
- Recibir datos de visión desde FIRASim (UDP + Protobuf)
- Aplicar una estrategia básica sobre la información del campo
- Realizar planificación de movimiento (path planning)
- Generar y enviar comandos de control a FIRASim
- Comprender el ciclo completo: percepción → decisión → acción
engine\_vssl/
├── vision\_receiver.py # Recibe y parsea datos de FIRASim
├── command\_sender.py # Envía comandos UDP al simulador
├── planner.py # Path planning / navegación
├── strategy.py # Lógica de juego o skills
├── engine.py # Orquestador principal del sistema
├── proto/ # Archivos .proto compilados a Python
│ └── fira\_messages\_pb2.py
├── config.ini # Parámetros de red y simulador
└── main.py # Punto de entrada de la ejecución
- Visión funcionando y parseando Protobuf (
vision_receiver.py) - Módulo de planificación de movimiento (
planner.py) - Lógica de estrategia simple (
strategy.py) - Módulo para envío de comandos (
command_sender.py) - Loop principal que integra todo (
engine.py)
- Implementar
planner.pycon un algoritmo simple (ir a la pelota) - Crear
command_sender.pyque use el.protode FIRASim para enviar comandos UDP - Implementar lógica de juego muy básica (
strategy.py) - Integrar todo en
engine.pycon un bucle de ejecución (~60 FPS) - Agregar visualización en consola o matplotlib para depurar
- Modularizar el uso de estrategias (soporte futuro para
.luao múltiples estrategias)
Este proyecto nace de la necesidad de comprender profundamente cómo se estructura un engine competitivo para RoboCup, en lugar de sólo utilizar uno existente.
Al trabajar con Python:
- Me concentro en la lógica y no en la sintaxis o punteros de C++
- Desarrollo más rápido con pruebas inmediatas
- Gano claridad sobre cómo se conectan visión, lógica y control
- Creo una base que luego puede ser portada a C++ con mayor confianza
Este enfoque también me permite aportar mejoras futuras al engine SSL del equipo con una base sólida.
- Implementar estrategia modular cargada desde
.lua(como en el engine SSL) - Añadir soporte para simulación síncrona si FIRASim lo permite
- Incorporar control PID o seguimiento de trayectoria con curvas suaves
- Evitación de obstáculos entre robots
- Portar toda la arquitectura a C++ para integrarla con el engine principal
- Diseñar un sistema de evaluación o benchmarking de estrategias
- Python 3.8 o superior
- FIRASim ejecutándose en modo simulador
- Paquetes de Python:
protobufgoogle.protobuf
- Archivos
.protode FIRASim compilados a Python conprotoc - Recomendado: entorno virtual con
venv - Editor: VS Code con soporte para WSL2
Instalación de dependencias en entorno virtual:
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtRodrigo Sierra (RRoSierra) Sysmic Robotics - Universidad Técnica Federico Santa María Proyecto personal de aprendizaje y soporte al equipo VSSL