The Humanoids Sumo Challenge
What is all about
The Humanoids Sumo Challenge is a worldwide contest created by The Construct and Cyberbotics. It consists of two simulated Darwin Humanoid robots that must fight against other in a simulated sumo dojo. Participants, must build a controller for their robot which should try to knock out the other robot or take it out of the dojo.
The contest starts on May 2016 and will last for 6 months. Along those 6 months, every week-day all the participants will automatically fight in the dojo, obtaining a result of the contest for that day (showed in the Leaderboard the final status). The winner on each Friday will receive a 20€ Amazon gift card. The winner of the last day of the contest will win a Webots Pro license.
The status of the contest can be checked anytime in the Leaderboard. The fights between participants follow a Bubble Sort algorithm. This means that any new participant that enters in the contest today can reach the top in a single day, provided that her controller is better than the rest (it will have to fight against all the others and win). By using this algorithm we are providing a chance to all new participants along the six months of the contest.
How to enrol the contest
Now you are in!
How to create and test your fighting controllers
Once you are enrolled, you can participate creating your controllers. However, in order to put it easy for you we provide an already working fighting controller. So the development strategy may be:
- Launch the default controller provided by us.
- Modify the default at will, improving it.
- Save changes.
- Relaunch the simulation with your changes and see results.
- Repeat from point n.2 until happy with the results.
- Store your controller in your simulations area of The Construct.
- Set your stored controller as your contest controller.
- See your controller fight with the other participants.
- If you are not happy with your performance, reload your stored controllers.
- Then repeat from point n.2.
Launch the default controller
To launch the default controller, log in into The Construct and start the Webots simulator. The default world that loads when Webots boots up is the default sumo controller (see video below). This is the example fighting controller that we provide to all the participants.
If you watch this simulation, you will see how the two robots start fighting against each other. The robots will keep fighting until one wins the contest. You can follow the status of the competition by looking at the messages displayed on the log console below the main simulation screen.
To restart the controllers again, just press the Reload red icon. The whole simulation will be loaded again and the robots will start fighting again.
Modify the default controller
The default controller makes the robot look for another robot, walk towards it and take it down. It is written in C++ and uses the Webots Darwin C++ API that you can learn here.
In order to modify the default controller, first open the development environment by clicking on the red IDE icon. The following screen will appear showing all the files that describe the sumo fighting simulation.
In the files displayed on the left part of the IDE you can see the sumo_fighter directory. This is the directory that contains the default fighter controller that we provide to you for your use. Use the IDE to modify the controller. Edit, add new files, delete… you can modify this controller at your will. The only thing that you need to keep is the name of the directory (sumo_fighter) and the name of the main.cpp file containing the main function. Remember to press Ctrl+S to save your mods.
On the files of the left you can also see two types of controllers: the sparring_fighter and the sumo_supervisor. You should not modify or touch the sumo_supervisor because it is the one that controls that the sumo simulation works properly. However, you can modify and change the sparring_fighter. The sparring_fighter is the controller of the other robot that is fighting against your robot. You can change that controller in order to train your sumo_fighter for a specific technique or else.
For each file that you have modified on the IDE, press Ctrl+S to save those mods.
Relaunch to see changes
Once you have done changes in the controllers and saved them, you can check how your saved mods behave on the simulation by pressing the Reload button in the simulation window (see picture). By pressing that button, the system will reload the changes you made and restart the simulation with those changes, so you can see how the robots behave now.
Keep doing changes, saving them and reloading this way until you are happy with the results. Then you have to store the whole simulation in The Construct.
Store your modified controller for later use
The default example controller we provide is just that, an example. In order to maintain your modifications in The Construct and keep working on it in the following days, you need to store your mods with your own selected name.
To store your simulation, press the Save button (see picture). A pop up will appear asking you for a name for your simulation. Here you have to provide a different name than the one of the default controller, in order to keep your own version of the controller.
Once this controller is saved, you will be able to load it the next time that you come to The Construct, and keep working from that point. You will also be able to define this controller as your controller for the contest.
You need to do this step every time you want that your mods stay for the next time you come to The Construct. Also, until you do not store, the mods won’t be used in the official contest.
Terminate your simulation
Once you are done for today, do not forget to terminate the simulation. VERY IMPORTANT: you need to finish your simulation once you are done for today. Otherwise you will loose simulation time for nothing.
The Construct provides free accounts that allow you to use the simulators for 10 hours per month. In case you need more hours to improve your controller, please consider subscribing for one of our plans.
NOTE: The Construct has a mechanism to detect inactivity that will automatically finish your simulation if it does not detect activity on it for half an hour.
Check your status in the competition
You can check your current position in the world competition by visiting the Leaderboard. Every week-day at 12:00 a.m. CEST the competition for that day will be executed and the results displayed on the Leaderboard. The actual combats will be displayed also on that page, so you can see in real time the different combats if you visit that page at that time.
The Leaderboard shows how fought with who, who won and why she won (see reasons for winning below).
Next time you come to work on the simulation
Next time you come to modify your controller, may be the next day after watching your result in the competition, you will have to start again the Webots simulator as described above. However, once the default sumo simulation is loaded, you will need to load your own controller instead of the default one.
To load your controller, open the scrolling menu and look for the name of your stored controller (see picture). Select your controller and then press the red Play button on the right of the scroll menu. The sumo contest with your controllers will be loaded and executed. Now you can keep working from the point you left last time.
How to send your controller for fighting in the contest
Up to now you have created and modified your own fighting controller. You need to indicate to the contest which one of your controllers will fight in the contest. For that, first go to your List of Simulations.
Once you are in the List of Simulations section, look for the simulation you created for the Humanoids Sumo Contest (in our case it was the PioneerSumoRingLine). As you will see, on the right hand side of the simulation a sumo icon appears. Press that icon to define the controller of your simulation as your controller for the contest.
By confirming this way, your controller will be taken each day automatically and make it fight against the rest of participants in a Bubble Sort style league.
You can modify your controller as many times as you want as described in the section above, but you do not need to set it every time. Only need to set your sumo contest once. You can modify it all the times you want, using the IDE (as described above).The competition will always take the latest version of it (if you stored it in The Construct with the same name).
Additionally, you can leave the contest at anytime. To leave the contest, just go to the List of Simulations page, and press again the sumo icon to de-select your controller. Then you will be out of the contest and the system will not take your controller for competition anymore.
You can re-enter the contest again at anytime by pressing the sumo icon once more.
How to win the contest
In order to win a fight there are three options:
- You kick the other robot out of the dojo.
- You knock out the other robot. Knocking out means that the robot is not upright for more than 10 seconds. It may happen that the reason why a robot is not upright is because the robot felt down by itself. It doesn’t matter. Any robot that maintains for more than 10 seconds a non standing position, it will be considered a knock out.
- If after 1 minute 30 seconds no robot has kicked the other out, or no robot has been knocked out, then the winner will be the robot that displaced more.
The following are the main rules for the contest:
- It is not allowed to cheat. You cannot do anything . Any participant caught cheating will be disqualified.
- You cannot exploit errors of the system. Any participant caught exploiting errors will be disqualified.
- You cannot modify the sumo environment. You can only modify the robots controllers.
- The organizers provide an already fighting controller made in C++. You can change it a will or completely replace it by your own. Just remember to maintain the name of the executable and directory that contains it.
- Controllers provided do not use ROS, but you can at your will.
- We will create videos of the winners in order to show how they win and check that they are not cheating. The organizers may require some of the participants to provide their controllers in order to check that they are not cheating.
Experiment with our Humanoids Sumo Contest, use it for your robotics courses, propose us modifications… enjoy it!
Questions, comments, errors, please contact us a firstname.lastname@example.org