Skip to content

argArthur/SSL-El-clone

Repository files navigation

carrossel-caipira-logo robocup-logo

SSL-EL

Small Size League - Entry Level source code implementation for the Carrossel Caipira robot soccer team.

Overview

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.

Features

Based and structured in c++, the project uses the ROS2 (HUMBLE) framework to implement the communication of the following modules below.

Flow Diagram

carrossel-caipira-logo

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.

Modules

  • 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.

Running the project

Dependencies

Check the links below to install the dependencies.

Internal Dependencies

External Dependencies

Cloning and Building the Project

$ 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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors