Project · 2023 · Python · Webots
RoboCupJunior Soccer Simulation team
A controller for a three-robot team, written in Python on Webots with the high-school students coached for the competition. Leaderless role assignment, a message protocol between robots, ball prediction and PD steering.
What it is
A controller for a team of three robots in the RoboCupJunior Soccer Simulation league, written in Python on Webots together with the high-school students of the team.

The league
RoboCupJunior Soccer Simulation runs in Webots. Each team has three differential-drive robots. Each robot only knows what its own sensors tell it: an IR ball sensor, GPS, a compass and four sonars, all with noise. Teammates share a radio channel the opponents cannot hear. A match is two 10-minute halves with an automatic referee. The referee moves a robot that barely moves for 15 seconds, or that stays in its own penalty area for more than 15 seconds. The code is written in Python.
Leaderless role assignment
Every robot computes the role assignment itself, with the same function on the same shared data, so all three reach the same answer and no robot acts as leader.
- A message protocol between the robots shares positions and state.
- Ball position prediction, so robots move to where the ball will be.
- Three separate unsticking mechanisms. The referee relocates any robot that does not make progress for 15 seconds.
- PD steering, not PID.
Some names in the code are Finglish team jokes. The README explains them.
Result
With this code, team def End placed 3rd in the RoboCupJunior SoccerSim Challenge at RoboCup 2023 in France, and won the Best Technical Challenge and Best Poster awards.


