Presentation: Open Source Robotics: Hands on with Gazebo and ROS 2
This presentation is now available to view on InfoQ.com
Watch video with transcriptWhat You’ll Learn
-
Find out what is Gazebo and ROS, tools from Open Robotics to set up and run robots.
-
Learn how to use some of the existing robotics tools.
-
Watch a demo on how to prototype a robot.
Abstract
In large part, the recent advancements in robotics have been made possible by open source tools. Open Robotics, a nonprofit organization dedicated to the development, distribution, and adoption of open source software in robotics, supports two main projects — ROS (Robot Operating System) and Gazebo, a multirobot simulator — both of which are widely used by the global robotics community, including industry, academia, and hobbyists.
ROS is a framework that lets you quickly set up the various parts of a robot and get them all to work together as a meaningful application. ROS does this by setting a common transport layer for all the software inside the robot, from sensors and actuators to decision making. Around the common transport layer, there are several tools built to help developers introspect and diagnose their robots with ease. Gazebo is a simulator that calculates rigid-body dynamics, generates all kinds of sensor data, and allows user interaction through both a programming API and a powerful graphical interface. Some of the uses for Gazebo include robotics competitions, continuous integration, prototyping, machine learning and education.
In this talk, Louise will give an overview of ROS and Gazebo, the problems they've been solving so far and what's in the roadmap for the future. In the second half of the talk, a hands-on demo will walk through the creation of a robot in simulation and controlling and inspecting it using ROS 2, the next generation ROS.
Tell us about the work that you do today.
I've been working at Open Robotics for almost four years now. Since the beginning, I was a contributor to the software. I started as an intern remotely. Since I joined I have been in the Gazebo team, which is the simulator team. That's where the big chunk of my work is, both on the simulator itself which is in C++ (I’ve worked on a lot of graphical tools for the simulator), and also a lot of web. We have a web client that runs on mobile or on desktop, which is in JavaScript and I was very involved with it. Most recently I started joining the ROS team effort as well. We have two big projects, Gazebo and ROS. On the ROS side, we are focused mostly on ROS 2 right now, which is the next generation that is bringing a lot of updated features to ROS. One of the most recent projects I’ve been involved with was integrating Gazebo with ROS 2, so you can simulate ROS 2 robots easily.
What's this talk about?
The idea was to do a general overview of Gazebo and ROS, where they came from, who is using them, what you can do with them. Very high level, not so focused on the technical details. Then, in the second half of the talk, jumping into a live demo, how we go about constructing a robot in simulation, and then showing some of the tools that you can use in ROS to control them, using the command line, or some of the visualization tools to take data from the simulation and visualize that as if it was data from the real robot. I’ll talk about how you can share the same tools that you would use in simulation with the real robot. And also if we have time, look a little bit into the C++ code to see how to integrate custom controllers.
What are some of the use cases that people are using ROS today?
ROS can be used for all sorts of robots. They're using it with quadcopters, self-driving cars, with warehouse robots, agricultural robots, home robots. It's not tied to one specific shape of a robot, or one specific application. It's more general purpose than that. Yeah, people are using it all over the place.
Is ROS written with C++, and what is the code used against ROS?
There's ROS 1, which is the code most common right now, and there's ROS 2, this next generation that is under active development. The original code was both in C++ and Python, having the same API, and besides that, the community would implement other languages like Java, JavaScript, Lisp... If there is a community interested in that language people would write wrappers for that language. For ROS 2 we are using C to make the client libraries for different languages as thin as possible, so they all share the underlying C implementation. We are moving the C++ and Python libraries on top of that, and there are members of the community already writing wrappers for Java, Rust, C# and others.
What is the persona you are targeting with this presentation?
It's a bit technical, so I'm going to say it's someone who's a developer, probably not very familiar with the robotics space and wants to know what's going on, what are people doing, how people in robotics approach problems, what kind of tools they are using, and the kind of problems they are dealing with. There are a lot of problems in robotics which are different from other types of software development since we have these real-world components to deal with. That's where the simulation comes in. It's a very powerful tool that’s being used for CI of robots for example, because you can't easily have CI running on real robots. Or when training machine learning algorithms; you need thousands of iterations of your robot, you are not going to run that in real time in a physical robot, you're going to do it in a simulation, so you can speed up and run thousands of iterations.
What do you want this developer to walk away with?
I want people to get a good idea of what developers are using in robotics. I hope they get a good idea of how to start if they want to start. It would be cool if they got excited with some of the problems robot developers are facing right now. If you're doing mobile and you watch this robotics talk maybe you bring a different point of view to that, you can combine your previous view with the robotics view. It would be nice if people would see themselves programming robots in the near future.
When you say 'get started' what do you mean? Tools or design constructs?
A little bit of both. I'll start with some pointers on languages and tools, I'll give links where to start. Then I'll jump into more specific robotics stuff. If you want to develop a mobile robot, it’s useful to know how to prototype it very quickly in simulation to start running something, and then how would you tie that into ROS. Gazebo is a separate application, so you need to make that bridge. Once you’re in ROS land, how do you get the data you need to train your machine learning algorithms, or how do you control your robot?
Similar Talks
License Compliance for Your Container Supply Chain
Open Source Engineer @VMware
Nisha Kumar
Observability in the SSC: Seeing Into Your Build System
Engineer @honeycombio
Ben Hartshorne
Evolution of Edge @Netflix
Engineering Leader @Netflix
Vasily Vlasov
Mistakes and Discoveries While Cultivating Ownership
Engineering Manager @Netflix in Cloud Infrastructure
Aaron Blohowiak
Optimizing Yourself: Neurodiversity in Tech
Consultant @Microsoft
Elizabeth Schneider
Monitoring and Tracing @Netflix Streaming Data Infrastructure
Architect & Engineer in Real Time Data Infrastructure Team @Netflix
Allen Wang
Future of Data Engineering
Distinguished Engineer @WePay
Chris Riccomini
Coding without Complexity
CEO/Cofounder @darklang
Ellen Chisa
Holistic EdTech & Diversity
Holistic Tech Coach @unlockacademy