The year is 2019, and we still don’t have the robots that we’ve imagined would help us with all the tedious and dangerous tasks that we have to suffer through. A lot has improved since the early days of robotics, but the autonomous intelligent robot is not here. And it looks like such a robotics development is still a long ways off.
One of the first problems that delayed the arrival of intelligent robots was the lack of standards in terms of software and hardware.
When I started in the world of robotics about 15 years ago, most parts had to be custom-made. Every roboticist had to create his or her own routines from scratch to access a robot’s devices. Everyone was creating different localization and mapping software. Everybody was creating their own object-recognition systems. Everyone was creating a grasping routine.
As you can see, building a single one of those systems can be a huge task in itself. So teams dedicated to building complete robotic systems that could navigate, identify objects, and grasp them were overloaded with all the parts that they had to create.
Providing a robotics standard
Global robotics standards have been lacking for both hardware and software, never mind artificial intelligence or machine learning.
Historically, we have not had a well-defined interface for connecting components from different makers into a single robot.
This robotics development problem can be overcome by following the model of software standards. In the same way that different printers can work with a Windows system — because the operating system itself takes care of introducing a compatibility layer — different robot pieces should work under the same system. That software already exists and is one of the biggest steps forward in the past 10 years for developing robotics for the masses. I’m talking about the Robot Operating System (ROS).
ROS has allowed people from around the world to share code and prevent the reinvention of the wheel that every lab infamously suffered in the early 2000s. By declaring a common interface for accessing hardware, ROS allows the same programs to work in different robot implementations.
Still not fast enough
Even if you create ROS-based programs, that does not mean that they will work in any “ROSified” robot. For many cases, downloading some ROS-based code is just the first in a list of steps that you need to take to adapt that code to your particular machine.
True, using ROS code made by someone else is a lot faster than starting from scratch, but it is still not enough for fast robotics development.
Typical problems found when trying to replicate the ROS code results downloaded from a repo include the following:
- Different versions of third-party libraries required by the ROS program (and that you cannot change, or your whole system will not work).
- Code made for a different version of ROS. This may imply that you are trying to access some functionalities that are not available for your currently installed version of ROS. The solution is to change to the newest version, which may be not possible because other systems depend on the current version. Or, changing the code to work for whatever ROS version you have may require a lot of work.
- Code made for a different version of Linux. Remember that ROS only works under very specific versions of Linux. You can make running your ROS code on a different Linux version, but only with extra adaptation work. The same happens if you want to run the code of different versions of ROS.
- “It works on my computer” (IWOC) effect. This is when some specific configuration of a machine makes the program work, but nobody else can reproduce it even if copied until the last screw of the computer. A typical situation for works presented in scientific papers that nobody can reproduce, not even the next researcher that has to continue on that work, so he or she has to start from scratch.
As a result, since you must get the ROS code and make it run on your robot, sharing ROS code can take a lot of time and effort.
Reproducibility of robotics results
What I propose is the creation of a unified robotics development system that allows the creation, testing, and sharing of robotics software. By allowing the reproduction of robotics results with just a click, we can expect people to more rapidly verify the results of other developers and build from an already working base.
This system would allow developers to share the code that’s already running with anybody else with a simple procedure. Recipients could then reproduce the exact same results instantly — regardless of whether the machine they are using runs on Linux, Windows, or Mac OS.
With this solution, nobody will have to waste time making the code work, because it would work off the shelf. Instead, robotics developers could continue from the current results and improve forward, with zero movement back. For this to be possible, we have to move to cloud robotics.
Cloud robotics development platform
A cloud robotics development platform would need to meet the following conditions:
- It has to be based on the cloud. This requirement is mandatory because only then can we guarantee that the execution conditions will be the same for all cases. The conditions for the execution of the code will be the ones of the cloud computer, not the local computer. The provider of the cloud computer is the one that ensures the same conditions for all the instances of the software.
- Proof of concept has to work on robot simulations. This requirement allows seeing in simulation how the proposed solution can actually work. Even if simulations are not the same as real robots, they provide a good first overview of the function. Also, simulations provide a good way to compare results in a massive way, which will allow us to benchmark solutions (that is the topic for another post).
- It must allow transfer to the real robot with a standard procedure. In the end, the programs must be able to work on the real robot. During the process of sending the controllers to the robot, many steps can occur that change the code-execution conditions. To ensure the same results in the real robot for any developer, the transfer procedure must be standardized.
The ROS Development Studio
- Runs on the cloud
- Provides a robotics development environment with simulations that already work
- Allows the transfer to real robots in a standardized procedure
- And, of course, it is based on ROS!
When you create a ROS program in the ROSDS, you can use any of the already provided simulation, or you can create your own. What is interesting is that, when you make your code work with the selected simulation, that work can be shared and reproduced by anyone under the same exact conditions. If it worked for you, it will work for anybody else that gets your ROSDS project.
ROSjects: ROS Projects
A ROSject contains all the code and data necessary to reproduce your result. It contains the ROS packages you developed, the datasets you created, the simulations, and the instructions in the form of notebooks.
A ROSject can be shared with a single Web link. Whoever who received the link will get an exact copy of your ROSject, including code, simulations, datasets, and notebooks. For example:
- Here we have a ROSject that trains a cart pole to balance the pole, using reinforcement learning. If you click on the link, you will get a copy of it and will be able to run it in one minute.
- Here we have a ROSject that provides a simulation of an industrial environment, with all the controllers and systems working
- Here you have a ROSject that provides the simulation of a robotics water vehicle.
When you share a ROSject via a link, the person that opens the ROSject will be able to see your code and instructions and reproduce your results. Since the execution of the code is done in the robotics cloud, no dependencies on the user computer exist.
We have successfully used this link-sharing feature for many different purposes. See below for robotics development examples.
- To reproduce scientific results of robotics papers and allow people to get the code. In this ROSject, we reproduced the results of a well-known paper, Domain Randomization for Transferring Deep Neural Networks from Simulation to the Real World. If you click on the link, you will get the full code with simulations for generating data sets and using the dataset to train a neural network with Keras+Tensorflow. You can also use the trained model to make a Fetch robot distinguish the spam object among many distractors, grasp it, and throw it to the trash. Everything is already working, and the full code provided. You only have to follow the instructions of the notebook included. People who get that ROSject will be able to improve domain randomization from that point.
- To share robotics courses lessons with the students or send them exams. As a teacher, you can create a ROSject containing the lesson, simulation, and some template code that the students have to complete. When you prepare the ROSject, you know that it will work for all your students, independently of their computers. Here an example of a lesson I prepared for students of University of LaSalle about Dead Reckoning navigation.
- To compare results for the same robotics problem. Since the simulation environment for testing is always the same, regardless of the user computer and location, you can use this feature to compare different solutions to a given robotics problem and identify the one that produces best results.
- To teach live classes through YouTube and share with the attendees all the code, notes, and simulations. Every Tuesday at 18:00 CET, we deliver a free ROS live class, where we teach a subject about programming robots with ROS.
About the author
Ricardo Tellez is co-founder and CEO of The Construct. Prior to this role, he was a postdoctoral researcher at the Robotics Institute of the Spanish Research Council. Tellez worked for more than seven years at Pal Robotics developing humanoid robots, including their navigation system and reasoning engine. He holds a Ph.D. in artificial intelligence and aims to create robots that really understand what they are doing. Tellez will be a speaker at the Robotics Summit & Expo in Boston from June 4 to 6, 2019.