Small Size League - Entry Level source code implementation for the Carrossel Caipira robot soccer team.
After the end of the vss-3v3 category, we began the development of a new codebase for the SSL-EL modality. This project was created to supply the need for a modern and functional implementation, with a fresh perspective. The new team is committed not only to building a working system, but also to delivering clean, maintainable, and up-to-date code that will be accessible to future generations of the team.
Based and structured in c++, the project uses the ROS2 (HUMBLE) framework to implement the communication of the following modules below.
As shown in the diagram above, ROS 2 plays a central role in our architecture, acting as a communication backbone between all internal modules.
It works like a postman: messages from external systems like SSL-Vision and the Game Controller are received by specific ROS 2 nodes (such as Vision and Referee), which are responsible for interpreting the data and triggering the flow across the rest of the system.
By leveraging ROS 2 Topics and Services, we ensure clean separation between the logic of our system and the communication layer. This modular approach isolates the project from external failures and simplifies debugging, testing, and development across the entire stack.
- Strategy: Implements the STP architecture (Skills, Tactics, and Plays). Upon receiving all necessary information, such as robot positions, IDs, and commands, this module organizes the flow using a state machine, defining which Play, Tactic, and Skill each robot should execute.
- Control: Responsible for the mathematical core of the project, this module calculates motion paths using the STOx path planning algorithm and computes velocity and angle commands. These commands are adapted according to the current segment of the path and then sent to the firmware. It is essentially the project’s low-level motion brain.
- Referee: Receives data from the official SSL Game Controller, parses the relevant information (such as game commands, team color, robot IDs), and publishes it as ROS2 messages to be used by the Strategy module.
- Communication: Divided into two parts. This module handles the connection between the system and the robots. It can communicate with the physical robots via radio, using the termios library to simplify message handling, or with the grSim simulator for testing purposes.
- GUI: The graphical interface of the system, developed using Qt, receives logs from the ROS2 nodes and organizes them to improve visualization and debugging. It also allows real-time testing of the strategy module, making it a powerful development tool.
- Vision: Receives raw data from SSL-Vision, and applies a Kalman filter to refine and smooth object tracking. This filtered information is then forwarded to the Strategy and Control modules.
Check the links below to install the dependencies.
- CMake / C++
- ROS 2 Humble
- Protobuf
- QT //coloquei aqui mas sla, acho que já instala quando vc instala o ros ou os outros bgl
$ git clone git@github.com:carrossel-caipira/SSL-EL.git
$ cd SSL-EL
$ colcon build
$ source install/setup.bash #(.sh for sh, .zsh for zsh)
Running an unique node:
$ ros2 run <module_name> <module_node>
Running all nodes together:
$ TODO: criar um script em python para usar o comando ros2 launch ou fazer algo pelo tmux


