Soccer Software

Of programs and data.

The software is the fourth main part of our team, next to the electronics, hardware and strategy department. The task of the software is to provide the strategy department with a way to send commands to the robots in order to make the game as fluid and tactical as possible.

But how can a computer program fulfill this functionality? Before diving into the specifics, let’s first outline the general objectives behind the software.

Software goals

To participate in the RoboCup Small-Size League, we need software that effectively coordinates the robots. This requires the software to receive and process all data provided by the league, compute actions for the robots to perform, and finally send the corresponding commands to the robots. Given the complexity of this process, it is broken down into several modules, of which a large part is taken over by the Strategy.

The overall layout and data flow between these modules are illustrated in the graphic below. Additionally, a detailed description of each module can be found underneath.

Software Modules

Module: python_bindings

Strategy

To facilitate rapid development in the field of strategy, it is essential to use interpreted languages such as Python and Lua. However, since our main software is written in C++, ensuring seamless communication between the core software and the strategy layer is a significant challenge. To address this, we developed an interface using nanobind, enabling the strategy layer to make necessary function calls within our software.

Module: robot_control

Navigation

Navigation is a crucial component for enabling robots to reach their destinations. This is handled by the Planner, which computes the most efficient path between two points while accounting for obstacles and other moving robots. Additionally, it determines the optimal speed and rotation for the robots, minimizing the time required to reach their targets.

Module: ssl_interface and robot_interface

Communication

To participate in the competition, our system must receive data from the vision system and comply with commands from the referee. These tasks are handled by the communication modules. They convert incoming and outgoing data into the required formats. Additionally, these modules manage the transmission and reception of commands between our system and the robots.

Module: luhviz

Visualization

To monitor our software's actions and understand how our strategy is being executed, we require a visualization of the playing field along with supplementary data. This is handled by the "luhviz" module, which provides various control elements and data visualizations. Built using ImGui, the visualization is fully customizable, allowing us to modify and design it to suit our needs.

Module: game_data_provider and transform

Datenspeicherung & Filterung

The "game_data_provider" module serves as the central data storage for our software. This design minimizes dependencies across module boundaries and provides a centralized location for processing and filtering data. Filtering is crucial for extracting additional insights, such as robot and ball velocities, from the raw position-based input we receive.

Module: config_provider

Configuration System

The "config_provider" module serves as the central hub for managing configurations within the software. It ensures that all components have access to consistent and up-to-date configuration data. By centralizing configuration management, this module simplifies the adjustment and reading of configuration values and makes it possible for them to be adjusted using out visualization "luhviz".

Our Software is Open Source!

As part of the RoboCup 2023 Open Source Challenge, we published our software entirely on GitHub. Open Source for the Win! So if you like, feel free to check out our individual modules.

The Software-Team

Tim Füchsel

Tim Füchsel

Software Leader, Tooling
M.Sc. Computer science

Member since May 2022

Sebastian Knackstedt

Sebastian Knackstedt

Software Architecture, Build-Systems
M.Sc. Computer engineering

Member since October 2021

Malte Sparenborg

Malte Sparenborg

Navigation, Skills
B.Sc. Computer science

Member since January 2023

Fabrice Zeug

Fabrice Zeug

Navigation, Skills
M.Sc. Mechatronics and Robotics

Member since November 2019

Til

Til Jacob

Filter
B.Sc. Computer science

Member since November 2024

Andreas

Andreas Mückl

Filter
M.Sc. Mechatronics and Robotics

Member since November 2024

luhbots – Logo

Justus Gerken

Visualization
B.Sc. Computer science

Member since November 2024

Interested in joining the team?