RCJ Soccer Simulation at RoboCup Worldwide 2021: Qualification

Hello everyone,

We are excited to announce that after the Soccer Simulator Demo 2021 competition, a similar competition will take place at the RoboCup Worldwide 2021 in June!

In order to participate in the June competition, you first need to qualify in the Qualification Tournaments which will take place in May.

The deadlines look as follows:

  • Qualification registration deadline: May 17th 2021
  • Qualification code submission deadline: May 24th 2021

Registering for the Qualification Tournament will be free from charge. We will release more information on how to register and where to submit code in a few days.

In the meantime, feel free to take a look at the website below which contains more information on what will the qualification procedure look like:


And as always, should you have any questions/comments/feedback, please do not hesitate to contact us.


1 Like

Hi, Mareksuppa
My name is Lana and I´m a member of the Aperture Robotics Soccer. Do I need to pay a fee to participate in the competition? and if i go to international competition do I have to pay again?

Hi @Lana,

Thank you for the question!

The short answer is no, the registration for the qualification tournament will be free of charge.

The longer answer can be found at the qualification website:

Note: Registering for the Qualification Tournament will be free from charge. The registration and code submission forms for the Qualification Tournament will be linked here in a few days. Please come back here for registration late April.

Please let me know if this helps.


Thanks Mareksuppa, it helped a lot

Hello everyone,

Just a quick update: you can find more information on how to register for the qualification on the link below:


Should you have any questions, please don’t hesitate to ask.


Will there be wildcards for teams that didn’t participate in qualifying?

Hello everyone,

Just wanted to ask about the qualification results (I’m sure the TC is working on this but some info would be beneficial):

  1. As a team we received an email invite to the international event, does that mean we qualified?
  2. If not, has the result day been moved along with the code submission deadline?
  3. Will the results of the matches and the matches themselves be available anywhere?

Thank you very much,


Hey @Zvono,

The answers to your questions are Yes, No and Yes.

You can find the results at the following link:


Please do let me know if this help :slight_smile:


Hi @fabacam,

No, a team needs to participate in the qualification in order to be eligible for the international competition.

Hope this helps!

Hi there ,
I’m Confused :confused: because our code was completely work with with the latest version of RCJ world !
and we didn’t use any extra files or library
It’s work with base files in Controller folder .
Is there any test server like tournament server that we can test our code ?

Hello @mrssd

What is your team name? I can check the code and tell you what was wrong.

There is currently no test server where you could test your submission. (But there might appear one before the official competition)

hi @adrianmatejov
Thank you for answering mine
my team name is NOVA

Team NOVA - missing robot.py file.
You can check that at https://robocupjuniortc.github.io/rcj-soccer-sim/submission_check/ by uploading the zip file.

oh yes but I don’t understand what is “robot.py”.
we have below files in controller folder:

rcj_soccer_team_blue.py (or rcj_soccer_team_yellow.py)

We put all our algorithm code inside robot1 , robot2 and robot3
I don’t know which code does appear in “robot.py”
can you help me about that ?

Hi @adrianmatejov,

we have also the same problem. Could you please check what went wrong with our team?

@mrssd Your submission does not contain rcj_soccer_team_blue.py. The robot.py file should most probably look like this https://github.com/RoboCupJuniorTC/rcj-soccer-sim/blob/master/controllers/rcj_soccer_team_blue/rcj_soccer_team_blue.py - you need to execute the code from robot1, 2 and 3.

@abal Your folder structure is OK, but the problem is that within robot1.py, robot2.py and robot3.py you are trying to import rcj_soccer_robot, which does not exist in your submission and therefore the code crashes.

ok I see. But in the submission instruction you didn’t ask to include the rcj_soccer_robot.py. We thought that it was a default file.

Thank you very much for helping us :smiling_face_with_three_hearts:

we will send robot.py as you side with others our code for RoboCup Worldwide 2021 tournament.

Hi Teams,

Regarding the new files & folder structure, my team also had difficulties to completely understand it at the very first sight. Maybe it could help if I share what my team found out after investigating the new structure:

  1. The robot.py is the single and most important file which is used by the controller to load and run on behalf each of the three robots, one by one.
  2. The robot1.py and robot2.py and robot3.py are there at least for backward compatibility reason
  3. The demo code for robot.py imports robot1.py and robot2.py and robot3.py to run different codes for different robots if you wish.
  4. That’s not the only way to code, if you don’t need the backward compatibility or you have a single class to implement all three robot’s code, then you may simplify your code.
  5. For example my team left robot1.py and robot2.py and robot3.py almost empty and coded a single ORKASorccerBot class with the RCJSoccerBot ancestor class and had put all these codes to utils.py. After this their code for robot.py is simply this:
from controller import Robot
from utils import ORKASorccerBot

robot = Robot()
robot_controller = ORKASorccerBot(robot)

We assume that the robot folder name and the robot.py naming convention is mandatory to standardize the renaming procedure with all the 50+ ZIP files, when the TC prepares the controller folder structure to run the championship simulations. We assume that each team’s robot folder is extracted and renamed e.g. to a team_number folder and the robot.py is renamed to team_number.py while all the other files you uploaded in your ZIP will stay untouched in the team_number folder. So during packing the ZIP file all the other import files which you used should still remain in your robot folder and packed altogether to the ZIP file. So that after TC unpack your ZIP to the championship simulation folder structure, the controller could open and process the imported files as well.

After learning all these above my team found that this flat folder structure and naming conventions are quite straightforward, and finally found it much easier to work with than it was with the previous version.

I hope we could help some teams with sharing these & wish every team good luck!

Best regards,

Thanks @rlaszlo!

This requirement actually comes from Webots – the name of the directory and the name of the “endpoint” Python file needs to be the same. Hence robot/ and robot.py:


I probably won’t be able to do that today but I guess it may be worth adding to the docs (https://github.com/RoboCupJuniorTC/rcj-soccer-sim/blob/master/docs/docs/code_submission.md) – Pull Requests are most welcome!

Thanks for your patience everyone, we’ll try our best to sort this out :slight_smile: