Last week, the Humanoids 2015 was held in Seoul, Korea. It was the first Humanoids conference after the finals of the Darpa Robotics Challenge (DRC), and was hold at the winners country, the Team KAIST. Hence it was no surprise that the whole conference contained several activities related to that challenge, specially, demos of the Hubo robot, visits to the labs and a small version of the same contest as a life contest at the Humanoids (the mini-darpa challenge).
The Humanoids conference is a small conference when compared to others like IROS or ICRA. And I really appreciate that because it gives you the chance to interact more closely with people that is actually in the field of humanoids. Less people, less concurrent sessions and more interactions.
The conference lasted three days, being the first one dedicated to the workshops, and the other two, to the main conference itself.
As for the workshops there were many being hold at the same time. In my case I attended the Benchmarking bipedal functions of humanoids robots: towards a unified framework one, where I gave a talk about how to use cloud simulations for benchmarking in a general and unbiased way. Very interesting papers were presented at that workshop about how to build a general framework to benchmark walking in humanoids (presented by different partners of the Koroibot project)
The main conference was divided into plenary talks, papers presentation and interactive sessions (based on videos and/or posters). Additionally, along the day there were guided visits to the laboratories ofKIST (the Korean Institute for Science and Technology) and a full demo of the Hubo robot doing all the DRC tests.
I loved the two plenary talks, specially the first one given by Aude Billard from EPFL. She showed a beautiful path of research towards the creation of robots that can do better than humans (super-human competences). She showed her results towards that path with a robot that was able to grasp a racket when thrown towards it, by making use of dynamical systems. It was impressive to see how her robot was able to grasp rackets and even balls, when the human was not able to do it.
The second plenary talk was given by Russ Tedrake, one of the participants at the DRC. He explained several problems they faced when trying to control the robot for the DRC, basically using model-based control. He explained his quest towards trying to exploit the structure of the governing equations of model based control in order to create more robust control for robot dynamics. I really enjoyed his talk, even if I did not understand it very much.
The part of the papers was very well organised, since each author was allowed only with 10 minutes. Given the complexity of the subjects there, having a short presenting time was a very good idea, since it is not possible to explain correctly a paper in even the double of time. So 10 minutes gives you an idea of the paper and in case you decide it is interesting, you can always read the paper or go and talk to the author.
I recommend you to check the whole list of presented papers here.
The Technical Tours were about visiting some the KIST laboratories like the Center for Intelligent Robotics, and the Healthcare Robotics Research Group. The first lab was dedicated to the use of social robots to enhance cognitive abilities of the elder. Basically focused on small humanoids that engage the elder into games that stress their cognitive skills. The second lab was more about robots for surgery.
Now, the most impressive activity was the DRC demo. That was amazing to see how the KAIST team performed a complete demo from beginning to end without suffering any trouble. The robot was able to get into the car, drive, get out, open a door, close the valve, perform a drill, walk through the drevis, and finally climb the stairs. Everything in a row. And they did this three different days. Based on my experience at several Robocup competitions, I know how difficult is to make all work for a demo, so I cannot say anything but Bravo KAIST!
Evaluating the conference from my point of view, I feel that it is very (too much) focused on control for humanoids. The bast majority of the papers are dedicated to specific control problems that humanoids face and that make them so much complex than wheeled robots. I personally missed more cognitive related papers where the fact of having a humanoid might be used to create more complex behaviours for those robots.
Also I missed a kind of panel of experts that analized the results of the Darpa Robotics Challenge and how a second round of the contest would improve (or not) humanoids technology.
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.
Learn about
Now it is time to learn about robotics and simulators. The following links provide the basics you will need to win the contest.
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
self.RShoulderPitch.setPosition(1.1)
self.LShoulderPitch.setPosition(1.1)
Then change the code to make it move the arms up by changing the code like this
# move the arms up
self.RShoulderPitch.setPosition(-1.1)
self.LShoulderPitch.setPosition(-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.
Leaderboard
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?!?!?!.
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.
Cheating
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.
Contact Us
Should you have questions or request, do not hesitate to contact us at contest@theconstructsim.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.
Remote Pair Simulating means that you simulate with your peers, wherever they are located, AT THE SAME TIME, on THE SAME SIMULATION.
Inside The Construct, a Remote Pair Simulation is called a Shared simulation. You can share simulations easily with your peers and work all of you on it at the same time. This way of working is useful for different situations:
You are remotely discussing about some issues of your robot/simulation
You are developing different control programs for different parts of your simulated robot, each peer concentrated in one part.
You are giving an educational session.
You are hosting a competition where different teams must access the exact same setup and perform at the same time.
In all the situations above, a shared simulation is one of the best options. Fortunately this is very easy to do with The Construct.
How to Share
After login into your account at The Construct, select Choose a simulator on the left panel, and then start the simulator you want to work with.
Once the simulator is running, you will see an empty world in it. You can either share that empty world (if you are going to create a new simulation from scratch) or load an existing one (for this case, select the option Launch a World in the lateral panel). For any of those cases, you can check our previous post describing the process.
Once you are happy with the simulation that is running, you can share it with any other user. Select the option of Share Simulation in the left panel. You will reach the following screen
Type the username of the user you want to share the simulation with, and click on the + button. Add as many users as you want to share with. Once you are done, you can return to the simulator by selecting the option on the left panel Return to Simulation.
Take into account that the owner of the simulation is you, the one that has launched the simulator and it is sharing the simulation. This implies that:
The simulation time will only decrease for your account. Your peers will not have decrease their allowed simulation time.
The CPU power of the simulation will be that of the person that shares the simulation.
The network capacity of the simulation will be shared between all the users.
How to Access a Shared Sim
Now, your peers can access the simulation you are running. They just have to log in and select the option Select a simulator of the left panel. They will see a special cube in red in the list of available simulators, like in the picture.
Then, they have to select that cube in order to get into the simulation.
Once selected, your peer will access the simulation and be able to interact with it, as well as connect to the topics, services, etc.
How to Close a Shared Sim
In order to terminate a shared simulator, you must select the Terminate Simulation of the left panel. Remember that only the creator of the simulation, the one that has shared with the rest of peers, is the one that can stop the simulation.
Conclusion
It is possible to simulate with your peers at the same time by using The Construct. And the process is very simple and straight forward. Try it, and let us know about your experience.
In the meantime, you can watch the following video describing the whole process.
In The Construct we provide robotics simulators in the cloud. We have taken the Spotify business model and translated it to the robotics simulator world.
What can you expect from The Construct? Best than words, are images…
In The Construct, you do not have to install nor maintain any software. You just log into The Construct web page, select which simulator you want to use (Gazebo, Webots, DRC Sim, Morse, and many more) and the programming environment with it (which version of Ubuntu and which version of ROS). Then, you just simulate.
You can create simulations directly through the web browser by using a drag and drop panel or by uploading your own simulations from your computer, including controllers, plugins, models or else.
Our system allows to change simulator at a single click. No extra fees, no additional steps, no difficult configuration. Just change and simulate.
We will keep forever working versions of simulators, hence you do not have to upgrade your simulations even if your local computer system change because you upgrade. Your old simulations will always work.
Simulations can be run using any device equipped with a WebGL browser. This includes Windows, Linux and Mac computers, as well as Android and iOS devices.
Additionally you can share simulations with other mates and work at the same time on the same simulation. Collaboration between different locations becomes a lot easier. This feature can also be used with educational purposes, providing teaching lessons to a broad audience that access the same simulation environment, or to hold a worldwide simulation contest in real time.
However, the most interesting aspect of The Construct is the possibility of using the cloud to execute high demanding CPU simulations. At present, most robotics companies are limited to the power of their equipments. With The Construct, those limitations disappear since the power available is almost limitless.
Current working simulators include Webots 8.0, Gazebo 1.9, Gazebo 4.0 and DRC Sim 1.2. Next release will be Gazebo 5.0 along this month. Next month DRC Sim + Deep Learning support will be released. And so on. We expect to release two new simulators each month.
The Construct provides free and paid subscriptions, prices based on the amount of time available per week and the CPU power required.
You can visit us at www.whatistheconstruct.com and sign up for a for lifefree account to test our system, with 10 hours of simulation per month, with any of the simulators available.
Have a look at our web page for additional prices and configuration, and do not hesitate to contact us with questions and suggestions.
To my surprise, I recently discovered that many robotics companies barely use a simulator to simulate their robots. During my long experience at Pal Robotics developing humanoid robots, I understood how a good simulator can make a difference, speeding up the development and maintenance processes of robot building. In this post I would like to expose the reasons why you must use a simulator for your robot development.
Test ideas prior to building
Simulations are the best place to start when developing a new robot. By using a simulator to develop your robot, you can quickly identify if your idea is feasible or not with almost no expense. Additionally, you can easily test and discover which are the physical constraints that your robot must face in order to accomplish its goal.
Simulators allow the easy and quick test of many different ideas for the same robotic problem, test them and then decide which one to build based on actual data.
Paralelize development
Once your robot has been defined and tested in the simulator, you can start its physical construction. The good thing with simulators is that they allow to keep doing test even if your robot is not built yet.
While your mechanical or electrical departments are building the actual robot, your software department can start developing software and testing it on the simulated robot. Current simulators are closer to reality, hence you can develop your software for the simulated robot, make it work on it, and then transfer to the real robot once it has been constructed. Chances are that your software will work in the real with minor mods.
You do not have to wait for your robot to be built before developing its software.
Test in different environments
Your robot software can have many bugs that only appear once you take it outside your lab. By using a simulator you can test your robot in many other different environments than the one of your lab.
Debug in simulation
Bugs found in your robot software should be debugged first in the simulator. Actually, you should never allow a software engineer to test his software on the real robot if the software does not work on the simulator. It won’t work!
By debugging in simulator you will save a lot of time, since testing on the real robot is very time consuming. Furthermore, you can prevent that obvious mistakes and bugs are corrected using the real robot. Correcting basic errors on the real robot can end in the best case to a lot of wasted time, and in the worst case to breaking the robot.
Develop modifications and improvements
With your simulation in place, you can think about modifications for your robot and test them. What is the next feature that your clients are requesting? You can easily test if they are possible, in which extent and what it would require you to modify and add. Just use the simulation to see if they are possible or not.
Functionality testing suite
Once your robot is built and the software working properly in it you will have to maintain it. Correct bugs, add new features, adapt to changes in the frameworks you use… all those require that you change the software that already runs on the robot.
Chances are that by doing some of those changes, you will crash some of the functionality that already works in the robot. To prevent at maximum this effect, you must create a suite of functionality tests.
Functionality tests are tests that execute on a simulation of your robot and check whether the robot is still able to do in the simulation the functionality that you expect from it. The tests are performed at night. The suite must download the latests code from your repository, compile it, and executes it on the simulated robot.
For each functionality, the robot must be placed on a specific situation in the simulation that allows you to test that functionality. A reward function must check whether the robot was able to accomplish the functionality or not. In case not, the suit should send an email to the person in charge of that functionality, in order to make him aware of the functionality crash.
Make your robot popular
Either your company targets main public or specialized one, you want your robot to be used. By creating a simulation of your robot and freely providing it, you will give access to your robot to many people to experiment with it and find uses of your robot without being tied to expensive purchases. You will also allow to people publish stuff about your robot on the net, making you in return more popular and allowing you to reach more public.
Conclusion
Simulators are a powerful tool for robotics companies that can speed up the development process and prevent costly errors.
Based on the previous points, the whole process for a robot development that uses a simulator should be:
Do some drawings and design of the robot you want to build based on the task to solve.
Implement those designs in the simulator and perform some tests.
Modify the robot based on the simulator results.
Start building the real robot. At the same time use the simulator to develop its software.
Test your software on the real robot. If errors found, use the simulator to correct them and retest. Only use real robot once errors are corrected.
If customers require mods or improvements, use the simulator to test if they are (theoretically) possible or not.
Once your robot is built including software, build a functionality test suite that every night executes functionality tests over the simulation, to prevent that changes in the software shut down functions of the robot.
Finally, provide for free a model of your robot (including controllers) and help users to use it.
Are you following this process in your company?
If not, which steps are you doing differently and why?
With the proper tools, you can make more hypothesis, test faster, and debug effectively. The whole creative process can be speeded up by the use of proper tools. Tools are the key.
Tools for robotics.
For a long time, robotics lacked tools. To design was difficult, to test was difficult, to debug was difficult. Everything had to be done from scratch everytime a new robot was to be created.
Then it came ROS from Willow garage and the whole niche exploded. ROS provided visualization tools, simulation tools and debugging tools, and thanks to them, robotics experienced a big push.
Simulators are the tools
Among some of the robotics tools required, simulations are at the core. This has been already known by the chemical, medical, or architectonic industries. Always start your research/product with a simulation.
Simulations allow you to test before you build, to test after you build and to develop new features for your already existing robot without engaging in highly costs. They allow you to test your most crazy ideas without having any risk.
With robotics simulations you can automatically check for functionality errors in your code, or to let your robot learn and improve while you are sleeping. Simulations allow for distant teams to collaborate and cooperate over the same robot.
Robotics simulations should be at the core of any robot development.
Pushing simulations for robotics.
Thanks to some companies and groups simulators have experienced a big push in the last years. This is good.
Now it is time to bring simulators even further, to the big scale… to the cloud!
Use the cloud to build large and complex simulations. Share simulations with your colleagues. Use any device to simulate. And forget about simulator maintenance… Just simulate!