These are exciting times for robotics. In the past few years, we’ve started seeing robotic products make their way into our daily lives. We’re buying robotic vacuum cleaners and toy quadcopters. If you’re lucky enough, you’ve seen a robot dancing at a presentation, had a robot give you information at a store, or received a robot delivery at a hotel. Things that seemed like science fiction just a few years ago are looking like they could become reality in our lifetimes. We can more clearly see a future with package delivery drones and self-driving cars.
And it’s probably unexpected that a great part of this is due to open source tools. Research institutions, businesses, governments and individuals are all sharing code, complementing one another’s specialties and pushing the limits of what’s possible.
A major enabler of this global collaboration has been the Robot Operating System,1 or ROS. ROS is not an actual operating system, but a framework that lets you quickly set up the various parts of a robot and get the whole thing to work together. In ROS, the system is composed of various “nodes” which communicate through a common protocol. There are nodes for motors, for cameras, for decision making, and all the other parts of the robot application. Complex robots typically have hundreds of nodes talking to each other. Around the common transport layer, there are several tools built to help developers introspect and diagnose their robots with ease.
Read more: 12 Remarkable Robotics Reads
Another widely used open source tool is the Gazebo robot simulator,2 which is used for everything from prototyping and continuous integration to education and competitions, without the need for a physical robot. Gazebo works for roboticists like AutoCAD does for architects; allowing multiple people to work on a robot in simulation before having to physically build the robot.
Like most open source projects, the success of ROS and Gazebo wouldn’t be possible without the support of a global community that supports them. With this kind of software, it’s often difficult to estimate the total number of users, but to have an idea of the size of the community, note that there were over 3.2 million ROS package downloads just in July 2015,3 from every corner of the world. As the community grows, more capabilities are added, and the more robust the open platform becomes. Whenever the next awesome motor reaches the market, someone in the global community will write a ROS driver for it and freely distribute it online. And someone else will share a Gazebo simulation model for it. Even companies themselves are interested in having ROS and/or Gazebo support available for their hardware as soon as it reaches the market. For example, when Intel released its RealSense camera, which senses depth and color, they simultaneously released an accompanying ROS driver.4
In its early years — the mid-2000s — ROS was adopted most widely in academia and research institutes because these areas profited from freely accessible tools. But soon enough, companies began using ROS to quickly prototype new projects, and more recently, even ship products that run ROS. Perhaps the first commercial product to be built entirely on ROS was Baxter,5 a friendly pair of industrial arms that can work alongside humans. Since Baxter, we’ve seen a variety of ROS-based products, such as
- smart agricultural machines6
- hotel delivery robots7
- street mapping cars8
- selfie-taking quadcopters9
- warehouse management robots10
- retail inventory robots11
- and much more
Things get even more exciting when you take a peek at the bleeding edge of the state-of-the-art in robotics. Take, for example, the world’s largest competition for humanoid robots, the DARPA Robotics Challenge.12 In 2015, teams from all over the world competed in real-world search and rescue-inspired tasks such as manipulating tools and climbing stairs. Out of the 23 teams participating in the finals, 18 were running ROS and 14 used Gazebo in their development process!13 If that’s not impressive enough, listen to this: NASA’s Robonaut on the International Space Station runs ROS!14
How ROS does it
Why open source in the first place, and why ROS specifically?
To understand this, we must first consider that progress in robotics has historically been slow. Robots may not yet play a big part in our everyday lives, but the presence of robotics in factories has been established for decades. The reality in today’s factories, however, is that although they are highly automated, factory robots are fundamentally not very smart. Industrial robots are powerful machines with enormous potential, but at the moment, most of them repeatedly perform a single function. Such robots are unable to safely work with humans, and are typically kept behind cages. The flexibility and adaptability we’d expect from smart machines has been slow to come to fruition for robotics.
It takes time because robotics is hard. It involves several sciences, from mechanics, electronics, and software, to design and user experience. And each of these areas has a non-trivial number of branches. Software for example involves everything from the low-level motor controllers to the high-level image processing and path planning. If putting the best of each of these higher-level sciences into a product were not hard enough, imagine coordinating all of the underlying efforts. Hence, while the long-established strategy has been for one self-contained piece of software to cover all of the robot’s features, the ROS answer has been the opposite: modularity and collaboration.
Robots are complex systems composed of many connected parts, and it makes sense to keep these parts separate and general enough so they can be reused and recombined. A path planning algorithm that only cares about origin and destination can be reused by a robot with wheels, one with legs, and even one that flies. Modularity also means you can swap parts of a robot more easily. A new lidar from a different manufacturer came out? Sure, just swap it with the old one, make it spit out the same ROS messages you had before, and you’re ready to go.
Modular software makes even more sense in the context of a collaborative work effort. Historically, if you wanted to develop a computer vision algorithm to localize a robot, your team had to first put significant time and effort into just setting up all of the various parts of the robot. Only then could you even begin the specific task of developing the algorithm. It’s as if a group building a new text editor would first have to create their own Linux or Windows operating system. Needless to say, without a centralized framework, groups around the world were doing a tremendous amount of duplicate work. By using open source tools instead, they can now leverage from the larger community the parts that are not their specialty and have a robot up and running in a matter of days. Simbe Robotics, for example, estimated that the development of their robot would have taken 22 years without ROS. With ROS, they brought a robot to market in only 18 months.
One detail that is important to some and news to many is that you can collaborate but still keep your secret sauce, well, secret, if you’re so inclined. ROS is distributed under the BSD license, which means anyone can just take it and do proprietary work on top of it. But would you really want to miss the fun? I’ll be speaking on this topic at the upcoming IEEE Women in Engineering International Leadership Conference in San Jose on May 23, 2016.
Louise Poubel is a software engineer at the Open Source Robotics Foundation, working on GUI tools and user experience for the multi-robot simulator Gazebo.