Giter VIP home page Giter VIP logo

wrestling's Introduction

IROS 2023 Wrestling Competition

webots.cloud - Competition

This competition focuses on the development of advanced humanoid robot control software for a wrestling game. It relies on a calibrated simulation model of the NAO robot, running in the Webots simulator with realistic physics, sensor and actuator simulation.

Being spectacular and easy to get started with, this competition aims at gathering a large number of competitors, both on-site and remotely. The fully open-source competition software stack was designed to be re-used as a template for other simulation-based robot competitions.

Webots screenshot

Competition Information

  • Difficulty: Master or PhD
  • Robot: NAO
  • Programming Language: any
  • Commitment: a few weeks
  • Prize: 1 Ether

Important Dates

date description
June 23rd, 2023 registration opens and qualification games start
September 19th, 2023 selection of the best 32 teams
September 26th, 2023 - 3pm CEST code freeze for the finals
October 2nd, 2023 - 4pm EDT 1/16 finals
October 3rd, 2023 - 11am EDT 1/8 finals
October 3rd, 2023 - 4:30pm EDT 1/4 finals
October 4th, 2023 - 11am EDT semifinals, third place game and final

Finals

The finals will take place during the IROS 2023 conference in Detroit (USA) and will be broadcasted online in real time. Remote participation will be possible.

Selection for the Finals

On September 19th, at 9am EDT, we will select the best 32 teams from the leader board that will participate to the finals. These teams will have exactly one week of time to further improve their robot controller before their code is frozen and checked out for the finals. Meanwhile, other teams will not be allowed to run games any more.

On September 26th, between 9am EDT and 11am EDT, we will checkout the current version of the robot controller for each qualified participant. Please refrain from making any commit to your main branch during this period as it may have unexpected consequences on your controller. We will use exclusively this version for running all the final games from the 1/16 finals until the final.

Finals Games

All the finals games will be played in sets, in a best-of-five format, which means that players need to win 3 sets to win the game (like in Grand Slams ATP tennis tournaments). Therefore a finals game will have between three and five sets and the final score will be either 3-0, 3-1 or 3-2.

Here is the result page that will reflect in real-time the finals games, so that online competitors can follow the finals remotely. The Game columns will contain links to 3D playbacks of the sets.

Certificates

The 32 best ranked participants will receive an official certificate mentionning the robot controller name, team members and organization, as described respectively in the name, team and organization fields of their participant.json file.

Prize

The winning team will receive one Ether crypto-currency (priced around USD 1'742 on June 14th, 2023) and an official IROS certificate. The second and third place will receive an official IROS certificate.

Participation Conditions

Participation is free of charge, including the finals. Anyone can participate: there is absolutely no restriction on the quality and number of team members. A team may perfectly have only one single member. However, an individual cannot be a member of several teams in the leaderboard. Also, sharing code privately with another team is not allowed. But, sharing code publicly is allowed as long as it is immediately announced on this GitHub Discussions. Any team suspected to break any of these rules will be removed.

Get Started Now

To get started programming your wrestling robot, you will have to:

1. Create your own Participant Repository from this Template

Click here to create your own repository automatically or do it manually by clicking on the green button "Use this template". If you get a 404 page it's probably because you are not connected to your GitHub account.

  • Fill the "Repository name" field with a name for your controller.
  • Set the visibility of your repository to "Private" unless you don't care about people looking at your code.
  • Finally, click on the green button "Create repository from template".

You should continue reading this document on your own repository page and not this one. This is important in order to be able to use the links in the following sections. Remember that you can open a link in a new tab by middle-clicking the link.

2. Add omichel as a Collaborator

You can skip this step if you created your repository as "Public" instead of "Private".

Otherwise, you must grant access to your repository to the competition organizer so that your code can be checked out to evaluate its performance and the organizer can post issues on your repository in case of problems with your code.

  • Click here to go to the "Collaborators" setting page. You might need to confirm the access by re-entering your GitHub password.
  • You should see a "Manage access" box where you will see the current collaborators of the repo. Click on the "Add people" and search for "omichel". When you found the organizer, add him to the repository.

3. Modify your Robot Controller

You can now edit your participant.json file to set your name, description and country information and also modify your main robot controller file or create new files in this folder and push the modification to the main branch of your repository. A series of automated actions will take place in a few seconds. If everything went well, your repository should appear after some time in the leader board of the competition. If there was a problem, an issue will be open automatically on your repository by the organizer. You will have to read it, fix what is wrong and push the changes to your main branch to re-run the automated verification.

Rules

Note: the rules might be slightly adapted to fix minor issues until September 1st, 2023. Past this date, no change will be made to rules.

The rules of game are implemented in the referee supervisor. They can be summarized as follow:

A game lasts until one of these two conditions occurs:

  • Knock-out: If the altitude (along Z axis) of the head of a robot remains below a given threshold and below the one of the other robot for more than 10 seconds, then the other robot is declared the winner and the game is immediately over. This may happen if a robot falls down and cannot recover quickly or if it falls off the ring.
  • Time-out: If no knock-out happened after 3 minutes, the robot having the greater ring coverage is declared the winner and the game is over. In the unlikely case of coverage equality, the winner is determined randomly.

The coverage reflects how far a robot has moved inside the ring. It is computed over the time frame of a game from its maximum and minimum positions along the X and Y axes, respectively X_max, X_min, Y_max and Y_min, using the following formula:

coverage = X_max + Y_max - X_min - Y_min

Demo Robot Controllers

A series of simple examples are provided using different programming languages or frameworks and different complexity levels:

Language / Framework Examples
Python Alice, Bob, Charlie, David, Eve, and Fatima
C Alice
C++ Alice
Java Alice
ROS 2 Alice, Bob
Rust Ferris

Recommendation to Competitors

The earlier you start working on the competition, the better. The ranking algorithm allows a very good robot controller to climp-up to the top of the leader board in one day. However, in practice, it is recommended to enter the leader board rankings as early as possible. This allows you to compare your robot controller to others and have time to improve its performance.

Include Dependencies in your Docker Container

Your controller is run in a Docker container. If your robot controller has dependencies, such as some specific libraries, python modules, a Java programming interface or a complete ROS framework, be sure to update the controllers/Dockerfile to include all these dependencies. The default Dockerfile includes the tools needed to run and compile simple C, C++ and Python controllers.

Ranking System

Each time you push a commit on your main branch, a series of games is started on the runner machine. If you are ranked number 1, no game will take place. Otherwise, you will first play a game against the competitor ranked just above you in the leader board. If you loose, nothing will be changed in the leader board ranking and no further game will be played. Otherwise, you will swap your position in the leader board with the competitor just above you and you will play another game with the competitor just above your new position. This will be repeated as long as you win until you reach the first rank of the leader board.

Checking the Log File of an Evaluation Run

When there is a problem with your repository, an issue is opened automatically on your repository to invite you to check the log of the evaluation run. However, if your controller crashes for some reason, no error will be reported to you, but the animation of your robot will show your robot not moving at all (and your robot will likely loose the game). It that case, you should check the log file of the evaluation run to understand why your controller crashed. All the log files are available on https://github.com/cyberbotics/wrestling/actions

Friendly Test Games

It is possible for the participants to start a friendly test game against another participant of their choice. This can be achieved from the Actions tab of the participant repository: select the Trigger Test Game action and click the Run workflow button. Enter the name of your opponent as it appears in the leader board and click the green Run workflow button. Once complete, friendly test games can be viewed from the Test buttons in the leader board.

Runner Machine Configuration

The runner machine will host a single game at a time. It will run 3 docker containers:

  1. One with Webots and the wrestling supervisor.
  2. One with the controller of the red player (participant).
  3. One with the controller of the blue player (opponent).

Each docker container running a robot controller has 3 virtual CPU cores, 6 GB of RAM and shared access to the GPU hardware. However, we request that participants do not exceed 1 GB of GPU RAM usage for their robot controller. Participant exceeding this limit will be disqualified without prior notice.

The runner machine configuration is the following:

Acknowledgements

opendr_logo

Supported by OpenDR - Open Deep Learning Toolkit for Robotics. More information: opendr.eu

eu_flag

This project has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement no. 871449.

wrestling's People

Contributors

andrejorsula avatar jean-eudes-le-retour avatar omichel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wrestling's Issues

Improvement of the competition for the IROS edition

This issue lists the improvements that we are going to implement before starting a new edition of the wrestling competition.

  • Add team members in the participant.json file, e.g., "team":["John Smith", "Robert Young", "Paul Parker"]
  • Add an optional organization in the participant.jsonfile, e.g., "organization": "The University of Edinburgh"
  • Allow more time at the end of the qualification for the participant to update their controllers.
  • Run the final games as best of 5 games (instead of best of 3).
  • Use a better CPU core partitionning:
    • Webots could be assigned CPU 0 (physical) via docker run --cpuset-cpus=0,4 ...
    • The controller of RED robot could run on CPU 1 (physical) + share CPU 3 (physical) via docker run --cpuset-cpus=1,5,3 ...
    • The controller of BLUE robot could run on CPU 2 (physical) + share CPU 3 (physical) via docker run --cpuset-cpus=2,6,7 ...
  • Limit GPU RAM usage (mentioned in the README.md).
  • Reduce a lot the height of the stage to give a chance to robots who fell off to recover by climbing up one small step (done in #96).
  • Reduce the strength of the motors to be more realistic. After checking, the current value seems to be correctly calibrated.
  • Lower the basic time step to 10 ms (instead of 20) to allow for a 100Hz refresh rate of the sensors, including the IMU.
  • Improve the KO countdown algorithm: when a robot gets below the height threshold, start the countdown for this robot. However, if the other robot gets below the first one, then stop the countdown for the first robot and start it for the second one, etc.
  • Leave a little bit more time to the controller dockers to start-up before the game actually starts.
  • Allow a participant to start a game versus another participant of their choice.
  • Give awards to the second and third place.

Repository's fork cannot be turn private

Hi, I did a fork from the main branch and I were unable to turn the repository private.
I was looking some info and I can duplicate the repository to create a private one from the beginning, but will not appear as a fork of the main repo.
There is any workaround for this to participate?

Failure

There was a problem with your controller program.
Look at the action logs for more details.

Failure

There was a problem with your controller program.
Look at the action logs for more details.

[question] hardware specs limitations?

Hi!
I was reading the document about the competition, and it is unclear about the hardware available to run the codes.
There will be some CPU, RAM, or GPU limitations?

Failure

There was a problem with your controller program.
Look at the action logs for more details.

Exiting with error 1

I am encountering following error:
1m 20s
Run cyberbotics/competition-record-action@v1
Run cp -r /home/olivier/actions-runner/_work/_actions/cyberbotics/competition-record-action/v1/metascript .
GPU detected on runner machine: nvidia-docker version 20.10.21
Cloning participant repository: amirhnourian/WebotsNaoWresteling
Cloning opponent repository: cyberbotics/wrestling-david
Building Webots docker
Building participant docker (Amir Hossein Nourian)
Building opponent docker (David (Python))
Running game in Webots: Amir Hossein Nourian versus David (Python)
Notice: Amir Hossein Nourian lost over David (Python)
participants.json was uploaded.
animation.json was uploaded.
Error: Process completed with exit code 1.

What is the problem? my simulation works well on my machine

No access to the utils library in the online test

On the try page of the wrestling competition we can only access the robot controller and not the utils folder nor the motion folder. It would be nice if people could directly use them online to help them making functioning controllers.

We would need to change the dockerCompose field in webots.yml but then this will break the default controller name fetch in competition-record-action so it might take a bit of work. What do you think?

Failure

There was a problem with your controller program.
Look at the action logs for more details.

Add more Docker information

In the competition template we emphasized the use of a Dockerfile for the eventual dependency needs of the participants. Maybe we could add back this subchapter to the README of the wrestling competition:

Docker

Your controller is evaluated in a Docker container. If your robot controller has dependencies, such as some specific libraries, python modules or a complete ROS framework, be sure to update the controllers/Dockerfile to include all these dependencies. The default Webots Docker container includes the tools needed to run and compile simple C, C++ and Python controllers.

Are There Restrictions on Participants Per User/Org?

Hey there, I found this a couple days ago and I think it's an amazing project!

I'm in the middle of bootstrapping what's necessary to create competitors in Rust, and I just pushed a Rust wrestler template.

Before I created the robot for my team, I just wanted to make sure the system wasn't going to have problems with me publishing multiple robots from my GitHub organization ( at least one for the public template, and one private one for my team ). There aren't any rules against having multiple robots are there?

Thanks!

Edit: I'm sorry, I just realized GitHub Discussions were enabled for this repository. This should probably be converted to a discussion.

Failure

There was a problem with your controller program.
Look at the action logs for more details.

Unexpected KO countdown outside the ring

Hello,

During one of the games earlier today, I noticed a "potential" issue with the knockout countdown algorithm when one of the players fell off the ring.
The game was evaluated during CI run #7245, and the full replay of the game is attached below (the important bit starts from 1:45).

wrestling_potential_issue_with_ko_countdown_algo.mp4

I was confused at first, but I believe the KO countdown for the player outside the ring was not continuously triggered because the position of their head was higher compared to the other player (Z coordinate). This change was introduced via #96 according to the following description in #95.

Improve the KO countdown algorithm: when a robot gets below the height threshold, start the countdown for this robot. However, if the other robot gets below the first one, then stop the countdown for the first robot and start it for the second one, etc.

It is probably too late to discuss/change the knockout counter algorithm for the current edition, but I just wanted to bring it to your attention for future reference. :)

Competiton next year

Dear authors,

thank you very much about orgianizing this competion!
As a big fan of both mixed martial arts and robotcs and autonomous drving, I can't wait to take part in the next competion.
Will you plan to have a competition next year?

Thank you!
Best regards, Kailin

name of robots for the finals

@omichel
My code was working when I was the participant, but failing when I was the oppoonent. Investigating this, it turned out that using the ROS 2 webots controller, the topics get namespaced by the robot name (as defined in wrestling.wbt), and I was only listening to ROS 2 topics from the participant.

I can get around this, by remapping both /opponent/... and /participant/... topics onto a topic with the same name, but coulld you please clarify that in the finals, the name of the wrestlers willl only be "opponent" or "participant"?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.