What we are seeing now is ROS as the de facto standard certainly in research labs, both academic and industrial; but more interestingly over the last few years we’ve seen a lot of uptake in industry itself. You are starting to see companies from small startups who are designing brand new robots to do new tasks from hotel delivery to warehouse logistics, building products based on ROS, to big established companies like BMW, Bosch [and] Qualcomm, really putting effort into either using ROS in their R&D efforts or to explicitly support ROS running on their hardware because they expect people to build robots using their hardware and they want to make sure that ROS is well supported. We are seeing a lot of attention from industry at a time where the robotics industry itself is really exploding.
What other factors have contributed to the robotics industry taking off?
Well, it certainly helped the field a couple of years ago when Google made a big public investment in robotics by acquiring a number of companies, setting up a substantial robotics program within Google. I think it caused some people to really sit up and pay attention and say, “Well if Google is putting money into this, then maybe we should really get involved.” There is a public perception aspect of it that I think is going in the right direction.
On the technical side, there have just been some real improvements over the last five to 10 years that have made certain things possible today that weren’t possible before.
Around 2011, Microsoft released the Xbox Kinect, which was an awesome 3D sensor for robots. As soon as it was released, everybody in the robotics lab went down to their local electronics store and bought as many as they could and immediately threw away the game that came with it, cut the cable and hooked it onto a robot to give it 3D sensors. It was astonishing that you could now have 3D sensor of a quality and a frame rate that you really couldn’t before. It was really the first entry into making 3D sensors that are good, small, low-powered and affordable, which meant robots could have a much better perspective of the world.
Another aspect is better actuation, specifically robot arms or manipulators that are safe to use around people. In the last five to 10 years we have seen a new generation of robot arms, whether it is designing robot arms that are capable of doing useful things, but are also intrinsically safe and can be used with people around them.
The third thing is the availability of very capable high-quality open-source platforms like ROS that you can use to build an application. Ten years ago, if you were going to build a robot company, you really had to start from scratch by writing all the device drivers, all the communication systems, all the logins, all the diagnostics, and all the visualization tools. Now, as part of this overall ROS ecosystem that we are stewarding (but which is really contributed by thousands of people around the world), you just have a much better starting point.
How does developing for robotics make it different from software?
Robot programming has all the same difficulties and challenges as any software engineering exercise, except you also have the difficulty of interacting with a wide array of peripheral devices that are either sensors giving you information about the world, or they are actuators that you’re sending commands to cause change in the world such as moving the robot around or moving something around in the world using the robot’s arm. One of the more difficult software engineering tasks out there is to write good robot software, and you need a lot of infrastructure to help you do that.
Why should developers get involved in the ROS community?
Well, I personally think that robotics generally is one of the most interesting things that you can do in computer science. If you are going to get into robotics, you are going to need infrastructure and you should at the very least give ROS a try to see if it will do what you need.
All the code we write is open source, you can do whatever you like with it, you can put it in your proprietary product, you don’t have to give any changes back, it doesn’t affect any license you put on your code, and so on. I always encourage people whenever they can [to] contribute back. There are often aspects of a system that you are building: Either you are improving some of the core infrastructure that everybody else is relying on, and that improvement is probably not your added value, so you might as well roll all those improvements back and then give those back to the community. Also, you will get feedback back and improvements from the community for free.