Robot Race to Hawaii Contest (How To)
This post contains all the information you need to know to participate at the Robot Race to Hawaii Contest.
This contest is about programming a simulated Nao robot to make the 10 meters race as fast as possible. The Nao robot is within a provided Webots simulation, and the controller must be written in Python accessing the interfaces that Webots provides to acces the robot motors. A default controller is provided to the participants, which can be improved or completely changed. You are completely free to create your own controller, as long as it is written in Python and uses Webots interfaces. For this competition, ROS is not allowed (sorry mates! We are preparing other competitions were ROS will be at the core).
The contest starts on November the 1st and ends on December the 30th of 2015. Winner will be announced on December the 31st of 2015.
To participate in the contest is completely free.
About the prize
The final winner will win a flight ticket to Hawaii for one person. The ticket is a go and return ticket starting and ending at the same place. This place could be anywhere in the world. In order to have the flight ticket, the winner has to indicate to The Construct the flying dates at least 6 months prior to the date of departure, and flight details will be directly sent to the winner from the flying company. The winner will have until to the end of December 2016 to indicate the dates. After that date, the ticket will be considered cancelled with no rights to be claimed.
If there is a tie between several participants, the fastest controller among the tied ones will be declared the winner.
If still there is a tie, a poll will be created. All internet users could vote for their preferred controller. A video of each tied participant Nao robot running the controller will be released, and internauts will be able to vote along a whole week based on that video. By the end of that week, the winner will be announced as the one who has more votes.
All the participants who achieve 20 points or more at the end of the contest, will receive a certificate from The Construct which certifies their achievements in robot walking in simulated robots.
How To Start
Enrol the contest
In order to participate you must first enrol the contest, by visiting the following link. You can enrol the contest at anytime. However, the soonest you enrol and start sending controllers, the more chances to win you will have.
Create an account at The Construct
The whole competition is hold at The Construct, the platform for robot simulations in the cloud.
You don’t need to install anything in your computer, everything is handled by The Construct. You can use any type of computer (Linux, Windows or Mac). You only need a WebGL enabled browser (most of current browsers are like Firefox, Chrome or Safari).
Hence, go to The Construct page and create an account(if you did not have one yet). You can select the free account to participate. Using a free account allows you to use the simulators for 10 hours each month. We do not know how much time you will need to win the contest. In case you need more than 10 hours, you will have to switch to a paid account starting from 19.99 per month. You can switch later or start now with a paid account. You can also cancel at anytime.
Now it is time to learn about robotics and simulators. The following links provide the basics you will need to win the contest.
- How to use The Construct
- How to use Webots
- How to make a humanoid robot walk
- How to code in Python
- How to change the Nao Python controller
How To Perform Trials and Tests
The normal procedure is that you log into The Construct Sim. Then you go to Choose Simulator in the panel of the left.
As a simulator, you have many options, each one represented with a cube. For the contest, there are two main cubes that interest you: the Webots 8 cube and the Robot Race to Hawaii Contest cube.
When you are testing, creating and building your controllers, you may select the Webots 8 simulator. This simulator will allow you to test and play with the controller until you are happy with it, and have it ready to be run in the competition.
Hence, to start developing your controller press over the Webots 8 cube and then Run this simulator! After a few seconds you will have the Webots simulator screen with a default world loaded. The default world is the Nao Race world, the one required for the contest.
This is the main screen of the simulator. You must see right now how the Nao robot is walking towards the end line, and if you let it, it will cross the line and keep moving to the infinite space.
The Nao robot is running a default controller that makes it run towards the end line.
Where is that controller and how to change it?
If you want to change the controller, press the IDE button in the simulation screen.
A new browser window will appear with an IDE showing the controller.
You should modify the nao_race.py file inside the nao_race/controllers/nao_race directory. You can modify it, add new files or change it completely, but always remember to put your main controller file within that specific directory with that specific name (nao_race.py). The rest of directories and their files are there for informational purpose, in order to let you know how to create a complete Nao Race contest. However, you should not modify them for the contest, because they will not be taken into account in the contest (they will be automatically discarded).
Example of modification
If you let the NAO robot run using the default controller, you can see that the robot will take xxx seconds.
You can quickly improve the controller by just moving the arms of the robot up instead of down. By doing this, the robot will hit the finish line detector a little bit earlier, winning a couple of seconds. How do you do that?
Look at the code of Python at the IDE where it says this:
# move the arms down
Then change the code to make it move the arms up by changing the code like this
# move the arms <span style="color: #ff0000;">up</span>
self.RShoulderPitch.<wbr />setPosition(<span style="color: #ff0000;">-</span>1.1)
self.LShoulderPitch.<wbr />setPosition(<span style="color: #ff0000;">-</span>1.1)
Once you are happy with your changes in the controller, you will want to test them on the simulation. For this, first save your changes of the IDE by pressing Ctrl-S. Then press the Reload button in the simulator screen to re-start the simulation with the changes you have just done.
The Nao Race world will be relaunched taking into account your changes in the controller. If everything was OK, your robot should be now running again from the starting point and running a little faster with the arms a little up.
If not, you can check the log console beneath the simulation screen to see what could have gone wrong.
You can change the controller at your will by creating new Python files and liking with the main nao_race.py file.
One way of improving may be changing the Python controller. Another way, may be changing the forward.motion file. That file contains the trajectory that each joint must follow in order to make the robot walk. You can plot it using Excel or Matlab, and try to optimize it.
Once you are happy with the performance of your robot walking, you may want to send your controller to the contest itself and see your score position at the leaderboard. For this, you need to store all your changes in your simulated world, and exit the simulator.
To store your changes, just press the Save button in the simulation screen. A pop up will appear asking you for the name. You can leave the same name or set another. We recommend to put the same, because it is faster to test later.
To finish the simulation, go to the left lateral panel and press Terminate Simulation. You will be redirected to the Dashboard screen.
How To Compete
Now that your controller is working as you want and you have saved it, you can test it on the competition itself. Go to the Select simulator screen again through the left panel options. Then select the Robot Race to Hawaii Contest cube. This will launch the Webots 8 simulator with the special configuration of the contest.
Once the Webots screen is shown, go to the left lateral panel and press the button of Launch a world.
On the screen that will appear, select the world you created in the previous stage for the competition, and then press Run selected world. Since you did not change the name of the simulation, it should be the nao_race.
After a while you should see the Nao robot racing using your controller. When the robot reaches the end, you will automatically get the time your robot did on the log console. This time will be recorded and showed in the Leaderboard of the competition. You can now go and check your status.
How To Score
There are three different sources of points.
- Score 0.2 points per day, by sharing your daily status on Facebook. There is a button at the Webots simulation screen that allows you to share your status at the contest at Facebook. You can share your status using the button as many times as you want per day, but you will only be awarded with 0.2 points once per day.
- Score 1 point per week, by doing the weekly simulation challenge. Each week we will send you a small simulation challenge, which consists of creating a model of an object. Examples can be … You will receive the challenge through email on Sunday, and you will have until next Sunday to send it. You can only score a point per week.
- Score up to 3 points per day by making the fastest walking controller. Walking faster is the main source of points. You get 0.125 points per each hour you stay in the number one fast controller (fractions of time calculated accordingly). This means that you can win up to 3 points per day (if you stay for 24 hours as the fastest robot). For your own interest, you should start sending fast controllers as soon as possible, and to keep an eye when a new contestant has taken the lead. An email will be sent to all participants when a new contestant is the fastest. If two or more contestants get the exact good time, the points will be awarded to the 1st contestant reaching that time.
The winner of the contest will be the person who has more total points.
You can check at anytime the Leaderboard to see your current classification status and that of your competitors. The Leaderboard includes your number of points per each category and your total number of points. Order is by fastest controller first.
An email will be sent to all participants each time a faster controller has been sent, taking position number one in the leaderboard.
You wont appear in the leaderboard unless you sent a controller to the contest, even if it is the default one. So what are you waiting for to send that one?!?!?!.
You can visit the Leaderboard here.
IMPORTANT: the walking score will only start on December. During the month of November, no score for running fast will be awarded. Along November you can test your walking controllers and send them to the contest but you wont score any point. This month of grace has been provided to allow the month of November for learning, testing and preparation.
Beware that the 1st of December many people will send their already built controllers in order to start collecting points. Schedule yourself for that purpose.
We have made a big effort to prevent cheating, but as we know human nature, some of the participants may try to cheat (like for example, identifying how to move the robot by a God supervisor, instantly moving the robot from start to end position).
If we discover a user cheating, the user will be disqualified. It may happen that we do not discover cheating (because you are a lot of contestants). Hence the 3 first controllers will be checked by us and run personally in order to check they do not contain cheat code.
We will also check the shares in Facebook of the winner.
Should you have questions or request, do not hesitate to contact us at email@example.com
You can also raise issues, discuss with the other competitors, ask for help using the forum of the contest, by visiting the page of the forum.
- Click to share on Twitter (Opens in new window)
- Click to share on Facebook (Opens in new window)
- Click to share on Reddit (Opens in new window)
- Click to email this to a friend (Opens in new window)
- Click to print (Opens in new window)
- Click to share on Google+ (Opens in new window)
- Click to share on Tumblr (Opens in new window)
- Share on Skype (Opens in new window)
- Click to share on Pinterest (Opens in new window)
- Click to share on WhatsApp (Opens in new window)
- Click to share on Telegram (Opens in new window)