Thank you everyone for attending the in-person tutorial at ICRA 2023. We had a great turnout of 100+ attendees. All materials used for the tutorial are available in the links below.
We had breakout group discussions of around 10 people each. All the groups took community notes linked below, which we hope can help you see what software others are using for their projects.
Please make sure to set up your laptop environment BEFORE the conference, if you plan on attending the hands-on session, as the conference WiFi will not support everyone downloading 2-4 GB on the day of the tutorial. See Quick Start below.
This GitHub repository: bit.ly/icra23_ros_git
Docker Hub repository: bit.ly/icra23_ros_docker
Presentations and tutorial slides: bit.ly/icra23_ros_slides
Breakout discussions: community notes
Post-tutorial survey: bit.ly/icra23_ros_survey
Software development, an end in itself in industry, is often a means to an end in academic robotics research, where the goal is to create a prototype, which happens to require software, to illustrate that a novel method works in most cases, downscoped by its assumptions.
Whereas academic users expect software to "just work" out of the box, including sophisticated features such as advanced mathematics, to demonstrate a "good enough" nominal case, industry users require all corner cases of vanilla features to be robust or even guaranteed by certification for mission-critical production software. On the other hand, academic research has lately imposed stronger requirements on robustness in simulation, for large-scale long-duration machine learning training.
While industry users can afford the engineering to exactly suit their needs, academic users are motivated by factors such as a timeline characterized by transient student graduation cycles and limited software development time between short publication cycles, development toward software prototypes as opposed to robust long-term reliable or mission-critical production software, sophisticated algorithmic developments that potentially depend on multiple large existing packages simultaneously (for example, ROS, Gazebo, MoveIt, and OpenAI Gym) to create cutting-edge research innovations, typically smaller software packages and development teams, and smaller fleets of robots compared to large warehouse logistic operations, to name a few.
These factors mean that academic users have less time to understand the foundations of software tools, for example, network communications underlying middleware, physics and rendering underlying robotics simulation, software design paradigms and performance, and proper development process for open source software. As a concrete example, Data Distribution Service (DDS) is a critical building block of ROS 2 when it comes to basic usage and performance. For Gazebo, it means understanding how physics engines differ and choosing the one with the numerical stability or performance best for the specific robotics sub-domain. These choices can affect simulation and real robot results dramatically. Without understanding these differences and choices, it could make a software appear unsuitable or even unusable, when the solution is simply proper configuration.
After 8 distribution releases of ROS 2 and with ROS 1 official support coming to an end in 2025, at ICRA 2022 Philadelphia, we found that many current ROS 1 users in academia still had questions about whether and when they should migrate to ROS 2.
While ROS 2 has seen wide industry adoption, including mission-critical space applications and autonomous vehicles, academic users have been uncertain. In this tutorial, we hope to address the uncertainty by exposing attendees to new features in ROS 2 and the new Gazebo (formerly Ignition) through hands-on exercises using examples developed for real-world applications.
Audience:
Clone this repository:
git clone https://github.com/osrf/icra2023_ros2_gz_tutorial.git
We will be using Ubuntu Jammy (22.04), ROS 2 Humble, and Gazebo Garden.
Follow the installation instructions in docker/README.md
to get set up and running.
Here's a list of open source products and projects publically known to be using ROS 2 and/or new Gazebo.
If you would like to submit your project to be added this list, please follow the directions below.
The list is meant to serve as usage examples for the community’s reference and interactions in their own time. It is not meant for for-profit advertisement. We do not promise to feature any of the entries live on the tutorial day.
This is not a contribution in the formal sense. We are simply asking for a project title, URL, and a one-line description (please keep it short).
These should be substantial projects beyond hello-world tutorials and examples we already provide.
For example projects, see recent monthly Gazebo Community Meetings and ROS News for the Week, e.g.
Open a pull request in this repository. Your code change should be a short one-line bullet list item added to the PROJECTS.md file. Fill out the pull request template for Project Contribution. Prefix your pull request title with [Project].
Visibility for your open source project and community interaction.
There is no formal deadline in the conventional sense of workshop contributions. View this as an open source contribution, where pull requests are opened and reviewed on a reasonable timeline.
Thank you for your contribution.
While it is impossible to cover all of the software foundations underlying ROS 2 and Gazebo (or other simulators), we hope to expose attendees to such factors, the new features in ROS 2 and Gazebo, and give them an avenue of resources to follow when they encounter obstacles while using these software in their robotics research.
In the first half of the day, we will first discuss reasons one might choose ROS 2, feature comparisons between ROS 1 and ROS 2 [1], whether ROS 2 is right for different applications, and our migration resources. Then, we will have a short breakout discussion for attendees to share and discuss their use of ROS and ROS 2. The main portion of the tutorial is a hands-on session for the attendees to try out ROS 2 on their laptops, using our Dockerfiles, which is part of our regular infrastructure and is automatically updated nightly on Docker Hub.
In the second half of the day, we will have a similar discussion about migrating from Gazebo-classic to the new Gazebo (formerly Ignition), and hands-on practice.
References
[1] Steven Macenski, Tully Foote, Brian Gerkey, Chris Lalancette, and William Woodall. Robot Operating System 2: Design, architecture, and uses in the wild. Science Robotics, May 2022. Volume 7, issue 66. DOI 10.1126/scirobotics.abm6074
Welcome and Intro (9:00 am, 5 mins, Mabel Zhang)
ROS 2 - What's New? (9:05 am, 50 mins, Chris Lalancette)
ROS 2 breakout discussions (10:00 am, 30 mins)
Refreshment break (10:30 am, 10 mins)
ROS 2 hands-on guided session with Dockerfile (10:40 am, 105 mins)
Lunch (12:30-1:30 pm)
All about the new Gazebo, "Alter Ego of Gazebo" (1:30 pm, 50 mins, Mabel Zhang)
Gazebo breakout discussions (2:20 pm, 30 mins)
Gazebo hands-on guided session with Dockerfile (2:50 pm, 90 mins)
ros_gz
gz sim
using out-of-the-box worls on Gazebo splash screen
gz sim levels.sdf --levels
gz topic -t "/model/vehicle_blue/cmd_vel" -m gz.msgs.Twist -p "linear: {x: 4.0}"
gz topic -t "/model/vehicle_red/cmd_vel" -m gz.msgs.Twist -p "linear: {x: 2.0}"
Refreshment break (4:20 pm, 10 minutes)
Conclusion (4:30 pm)
Please take notes here.
Suggested discussion topics for ROS 2 breakout:
Suggested discussion topics for Gazebo breakout:
Mabel Zhang, Open Robotics team at Intrinsic
Chris Lalancette, Open Robotics team at Intrinsic
The organizers thank the following facilitators (alphabetical by first name) from the community for helping to make the tutorial happen: