You are viewing content from a past/completed QCon

Presentation: Open Source Robotics: Hands on with Gazebo and ROS 2

Track: Future of Human Computer Interaction

Location: Seacliff ABC

Duration: 2:55pm - 3:45pm

Day of week: Wednesday

Slides: Download Slides

Level: Intermediate

Persona: Backend Developer, Developer, General Software

Share this on:

This presentation is now available to view on InfoQ.com

Watch video with transcript

What You’ll Learn

  1. Find out what is Gazebo and ROS, tools from Open Robotics to set up and run robots.

  2. Learn how to use some of the existing robotics tools.

  3. 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.

Question: 

Tell us about the work that you do today.

Answer: 

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.

Question: 

What's this talk about?

Answer: 

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.

Question: 

What are some of the use cases that people are using ROS today?

Answer: 

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.

Question: 

Is ROS written with C++, and what is the code used against ROS?

Answer: 

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.

Question: 

What is the persona you are targeting with this presentation?

Answer: 

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.

Question: 

What do you want this developer to walk away with?

Answer: 

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.

Question: 

When you say 'get started' what do you mean? Tools or design constructs?

Answer: 

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?

Speaker: Louise Poubel

Software Engineer @OpenRoboticsOrg

Louise Poubel is a software engineer at Open Robotics working on free and open source tools for robotics, like the robot simulator Gazebo and the Robot Operating System (ROS). Louise first got involved with Open Robotics through GNOME’s Outreach Program for Women. Louise grew up in Brazil and went to college in Japan, where she received her BS in electromechanical engineering from Chiba University. She also holds a joint MEng in advanced robotics from École Centrale de Nantes and Warsaw University of Technology, where her research focused on real-time, whole-body human motion imitation by humanoid robots.

Find Louise Poubel at

2020 Tracks

  • Java, The Platform

    Mobile, Micro, Modular: The platform continues to evolve and change. Discover how the platform continues to drive us forward.

  • Security for Engineers

    How to build secure, yet usable, systems from the engineer's perspective.

  • Modern Data Engineering

    The innovations necessary to build towards a fully automated decentralized data warehouse.

  • Machine Learning for the Software Engineer

    AI and machine learning are more approachable than ever. Discover how ML, deep learning, and other modern approaches are being used in practice by Software Engineers.

  • Inclusion & Diversity in Tech

    The road map to an inclusive and diverse tech organization. *Diversity & Inclusion defined as the inclusion of all individuals in an within tech, regardless of gender, religion, ethnicity, race, age, sexual orientation, and physical or mental fitness.

  • Architectures You've Always Wondered About

    How do they do it? In QCon's marquee Architectures track, we learn what it takes to operate at large scale from well-known names in our industry. You will take away hard-earned architectural lessons on scalability, reliability, throughput, and performance.

  • Architecting for Confidence: Building Resilient Systems

    Your system will fail. Build systems with the confidence to know when they do and you won’t.

  • Remotely Productive: Remote Teams & Software

    More and more companies are moving to remote work. How do you build, work on, and lead teams remotely?

  • Operating Microservices

    Building and operating distributed systems is hard, and microservices are no different. Learn strategies for not just building a service but operating them at scale.

  • Distributed Systems for Developers

    Computer science in practice. An applied track that fuses together the human side of computer science with the technical choices that are made along the way

  • The Future of APIs

    Web-based API continue to evolve. The track provides the what, how, and why of future APIs, including GraphQL, Backend for Frontend, gRPC, & ReST

  • Resurgence of Functional Programming

    What was once a paradigm shift in how we thought of programming languages is now main stream in nearly all modern languages. Hear how software shops are infusing concepts like pure functions and immutablity into their architectures and design choices.

  • Social Responsibility: Implications of Building Modern Software

    Software has an ever increasing impact on individuals and society. Understanding these implications helps build software that works for all users

  • Non-Technical Skills for Technical Folks

    To be an effective engineer, requires more than great coding skills. Learn the subtle arts of the tech lead, including empathy, communication, and organization.

  • Clientside: From WASM to Browser Applications

    Dive into some of the technologies that can be leveraged to ultimately deliver a more impactful interaction between the user and client.

  • Languages of Infra

    More than just Infrastructure as a Service, today we have libraries, languages, and platforms that help us define our infra. Languages of Infra explore languages and libraries being used today to build modern cloud native architectures.

  • Mechanical Sympathy: The Software/Hardware Divide

    Understanding the Hardware Makes You a Better Developer

  • Paths to Production: Deployment Pipelines as a Competitive Advantage

    Deployment pipelines allow us to push to production at ever increasing volume. Paths to production looks at how some of software's most well known shops continuous deliver code.