AWS Open Source Blog

What’s new with the open source Robot Operating System in 2020

Not many people can say their job revolves around robotics and community, but Katherine Scott is one of them.Kat Scott, Open Robotics DA

Katherine Scottor Kat, as her teammates call heris a Developer Advocate at Open Robotics, an organization that develops open source software for use with robotics. Part of her job is helping developers stay focused on development and to be there to provide support to Robot Operating System (ROS). This means she goes out to prospective and active ROS user communities and talks about what ROS and Gazebo, a robot simulation tool, are capable of doing.

In this interview, Kat provides background on Open Robotic’s two products—ROS and Gazebo—and she explains upcoming changes planned for ROS documentation and websites in 2020.

Although ROS stands for Robot Operating System, it’s actually a Software Development Kit (SDK) that helps users develop robotics applications with software, libraries, and tools needed to develop, debug, test, and deploy robotics applications. Gazebo is a 3D, physics-based simulator for robotics apps, with the ability to simulate robot populations in complex indoor and outdoor environments.

Working with the ROS community is only one facet of Kat’s role. She spends almost as much time creating content for the ROS website properties, looking for opportunities for the ROS community, and administering and improving their current web properties. Because Open Robotics is a small organization, it runs somewhat like a startup, but instead of focusing on profits, Kat gets to focus on people organization and what they need from ROS.

Why does ROS 2 matter? What’s different from ROS 1?

One of the great differences between ROS 1 and ROS 2 is the ability to do things in simulation you were never really able to do before. In ROS 1, you had Gazebo, and you had some simulation capabilities, but the ROS integration was difficult and the Gazebo itself was fairly monolithic. With Ignition Gazebo and ROS 2, you can build a fully functional and fleshed out robot in a very dynamic environment. We’ve seen that pattern be successful in competitions, such as the DARPA SubT challenge [DARPA Subterranean Challenge], RobotX Challenge, and the recent AWS JPL Open Source Rover Challenge.

All these competitions are pretty cool because you don’t actually need a robot to learn about robotics anymore. You can create a robot in simulation—basically in a video game—and from there you can build your robot, without ever having to get dirty.

And what I think is exciting about this is that in the past, the way I’ve learnt robotics and have taught robotics, is you have this robot and you have your code, and half the time you don’t know if the thing that isn’t working is your robot or your code. Running a robot in simulation allows you to just worry about the software component and assume the hardware just works. Moreover, simulation allows you to test your robot in whatever environment you want, allowing you to focus on developing behaviors. I think that sort of changes the game in terms of education.

ROS itself is over a decade old, and so when ROS was starting out we didn’t have things like containers—we barely had even virtual machines. Now it is possible to stuff all of the tricky parts of building a system with ROS neatly into a container and give it to a student, collaborator, or coworker. This is a real game-changer in the sense that you no longer really need a robot right in front of you to work on the software for the robot. I think that will allow people to be a lot more effective in learning robotics an developing robots for specific applications.

Can you tell us more about what Gazebo is used for?

Gazebo’s current version is Ignition Citadel. I like to think of it as a video game that is built to simulate a real world. You can simulate physics, environmental constraints, and even sensors. For example, if you wanted to build a robot that mops floors, you would need to see if your robot can really navigate well around a very cluttered environment before you brought that product to market. Just a few years ago, you would have had to go and make that cluttered environment and run hundreds of tests of your robot. What Gazebo allows you to do is make fairly sophisticated simulation environment, and then test your robot in that simulated environment.

What’s great about this is that it has all of the ROS elements hooked right up to it. So if you have a virtual camera and a virtual LIDAR (Light Detection and Ranging) in your simulation environment, they’re going to return numbers that are fairly similar to what it would seem in the real world. So you’re not just simulating the environment and the robot, but you’re also simulating things like how sensors respond to that environment. My background is more in perception and computer vision, and what’s really cool is that if you’re doing a real robot out in the real world, and you want to do some sort of perception, you have to label a bunch of training data—so it’s really expensive and really time consuming. In a simulation environment, there’s stuff you can do to automate that process.

JPL NASA Open Source Mars Rover

Mars Rover in a sample Gazebo world simulation.

Can you tell us about upcoming changes to the ROS web properties?

Our web properties are not just one website, it’s a collection of websites. Some of them are fairly static, others are more dynamic.

The web properties are not only docs and tutorials—we have other content in the works. In terms of documentation, we’ve moved from ROS 1 to ROS 2. ROS 1 is starting to wind down. It’ll be around for a little while, but we’re really trying to focus people’s attention on new projects for ROS 2. We took all the current documentation with ROS 1 and went, “Well, this has got a natural analog of ROS 2, so let’s go ahead and make sure to port it over, make sure it all works.” That at least gave people a stepping stone, but we need to start putting together things that really help a whole bunch of disparate groups within the ROS community learn about ROS 2 and how to use it effectively. We can’t assume that everyone knows how to code with ROS.

Launching a ROS node

Example of a ROS project and ROS code.

Where are you looking for people to contribute more when it comes to coming up with more ROS 2 tutorials? And how are you building open source community around this?

Almost everyone wants to make something educational and to share their knowledge. Most of the ROS community has gone is this sort of organic, in the sense of it being layers and layers of people saying, “I built a thing, here it is.” To support that sort of community contribution, we built the ROS Discourse, which gives us a community forum where people can discuss projects and make announcements.

With ROS Discourse, it’s not people all over the place—there’s one centralized place where people can come and say, “Here’s my project. Here’s what I’m doing. Here’s where I put everything.” And then other people can actually look into the project and ask questions. We have ROS developers in China or Japan or Mexico or Europe and they all tend to function independently, and I feel like ROS Discourse at least gives us a starting point where these people can come together to say, “Here’s what I’m interested in, here’s what I’m working on.”

What are the top documentation links readers should be aware of?

We just released a bunch of documentation for ROS 2. We’re starting to put together a plan to not just release ROS 2 docs that are parity, but to actually bring out more tutorials, which will be rolled out over the course of the year. The other resources that I think are really important besides the docs is knowing where to get help, especially if you’re just starting out.

Robotics is hard and no one knows everything, and we want people to be aware that we have, which is similar to Stack Overflow, but specifically focused on ROS. There’s also the ROS wiki, and that’s actually where a lot of the old content for ROS 1 still lives. And lists all the robots you can purchase that are compatible with ROS.

Call for content

Kat is running a last call for content for ROS 2 documentation and a refresh and they want community input. They would like to know what type of tutorials and content folks will find most useful to smooth out the migration to ROS 2.

To leave your feedback for Kat, visit the ROS Discourse page.

Readers might also like

The Open Source Robot Operating System (ROS) and AWS RoboMaker

Alejandra Quetzalli

Alejandra Quetzalli

Alejandra is an AWS Developer Advocate focused on helping newer audiences get started on their cloud journey. If you’re new to foundational AWS services, reach out to her! (Service Dog is Canela?.) Follow her on Twitter @QuetzalliAle