• Stars
    star
    225
  • Rank 173,348 (Top 4 %)
  • Language
    Dockerfile
  • License
    Apache License 2.0
  • Created almost 2 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

ICRA 2023 tutorial on ROS 2 and the new Gazebo (MT28, ICC Capital Suite 14)

Tutorial: "All about ROS 2 and the new Gazebo"

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.

Quick Links

Overview

Quick Start

Contributing

Schedule

Breakouts

Organizers

Quick Links

This GitHub repository: bit.ly/icra23_ros_git

Docker Hub repository: bit.ly/icra23_ros_docker

Presentations and tutorial slides

Breakout discussions: community notes

Post-tutorial survey: bit.ly/icra23_ros_survey

Overview

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:

  • ROS 1 users wondering whether to to migrate to ROS 2 users new to ROS
  • ROS 2 users
  • Gazebo-classic users wondering whether to migrate to new Gazebo
  • Users wondering whether the new Gazebo is right for them
  • Users of other simulators looking to learn about the new Gazebo and existing infrastructure we worked on with Nvidia, DeepMind, and Toyota Research Institute in the past few years to handle format conversions between SDF and formats used by OmniVerse, MuJoCo, and Drake.

Quick Start

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.

Contributing

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.

Criteria

  • Must use ROS 2 or the new Gazebo (formerly Ignition), i.e. if the project uses ROS 1 and Gazebo-classic, it does not satisfy this criterion.
  • Open source
  • Preferably, there is a visual representation (image, video, etc) in the URL you provide.

What to submit

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.

How to submit

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

Why submit

Visibility for your open source project and community interaction.

When to submit

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.

Schedule

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

Schedule:

  1. Welcome and Intro (9:00 am, 5 mins, Mabel Zhang)

  2. ROS 2 - What's New? (9:05 am, 50 mins, Chris Lalancette)

    1. Cross-platform (Linux, Windows, macOS)
    2. Rolling release
    3. Pluggable comms/rmw layer at runtime (default middleware is DDS)
    4. Client Libraries (rclcpp, rclpy)
    5. Parameters
    6. Composable nodes
    7. Lifecycle nodes
    8. Launch in Python, XML, YAML
    9. Security (SROS2)
    10. DDS
    11. Present and elaborate on points of whether people should switch to ROS 2
      1. Community projects built on top of ROS 2
        1. microROS for running on embedded systems
        2. navigation2
        3. MoveIt 2
        4. ros2_control
      2. Support cycle
      3. Package availability
      4. ROS 2 in different domains
        1. Open Robotics Middleware Framework (Open-RMF) for indoor robot fleets (GitHub)
        2. MBZIRC for surface vessels (GitHub)
        3. VIPER for space (publicly announced, code not public)
        4. SpaceROS
        5. Deep reinforcement learning manipulation ROS 2 + MoveIt2 + Gazebo + OpenAI Gym (Andrej Orsula GitHub)
    12. Resources - links to tutorials, API documentation, design documents, Discourse, list of Working Groups, simple ROS 2 DDS configurations, ROSCon (all past videos free online), Diversity Scholarships, etc.
    13. Q&A (5 mins)
  3. ROS 2 breakout discussions (10:00 am, 30 mins)

  4. Refreshment break (10:30 am, 10 mins)

  5. ROS 2 hands-on guided session with Dockerfile (10:40 am, 105 mins)

    1. Getting started
    2. Quick demo of things that should work
    3. Beginner CLI Tools
    4. Beginner Client Libraries
    5. Intermediate Tutorials
    6. MoveIt 2 Tutorials
  6. Lunch (12:30-1:30 pm)

  7. All about the new Gazebo, "Alter Ego of Gazebo" (1:30 pm, 50 mins, Mabel Zhang)

    1. What is the new Gazebo
      1. Releases
      2. Showcase per-release demo worlds: Edifice, Fortress, Garden
      3. Installing with ROS
    2. Showcase projects from different application domains: land, space, sea, manipulation
      1. DARPA SubTerranean Challenge (GitHub, 3D model collection on Fuel): physics-based rendering (PBR), levels (LOD), distributed simulation, cloud simulation
      2. Rubicon Trail world 3D model on Fuel, snowy model on Fuel: runs with gazebo-web/gzweb (web portion not public yet)
      3. MBARI Wave Energy Converter (GitHub, DockerHub): high-fidelity wave dynamics, physics just as accurate in 400x faster than real time
      4. Community-contributed wave visualization by Rhys Mainwaring
      5. MBARI Long-Range Autonomous Underwater Vehicle (GitHub, DockerHub): 100x faster than real time, point cloud visualization, 3D plotting
    3. Tools
      1. 2D plotting
      2. 3D plotting
      3. Native point cloud visualization
    4. Gazebo Fuel: a free online 3D models dataset
    5. Blender resources for modeling - SDF export, procedural generation (community-contributed, Andrej Orsulo)
    6. Migration from Gazebo-classic: feature comparison, migration tutorials (scroll to bottom)
    7. Format conversions with other simulators
    8. Resources - Documentation, Tutorials, API, Gazebo Community site, monthly Gazebo Community Meetings, etc.
    9. Q&A
  8. Gazebo breakout discussions (2:20 pm, 30 mins)

  9. Gazebo hands-on guided session with Dockerfile (2:50 pm, 90 mins)

    1. Quick demo of things that should work
    2. Developer resources
      1. Documentation
      2. Tutorials & library API. gz-sim is entry point library
      3. Gazebo Fuel, free online database of 3D models and worlds
      4. Feature comparison with Gazebo-classic
      5. gazebosim GitHub org, GitHub Project board
      6. Development roadmap and processes (CI, contributing guidelines, release process)
      7. Integration with ROS 2 with ros_gz
    3. Pair up. At your own pace, choose one or more from the following tutorials:
      1. Command line interface, bash completion
      2. GUI intro gz sim using out-of-the-box worls on Gazebo splash screen
        1. Component inspection panel: physics time step, real time factor
        2. Real time factor detailed panel on lower-right
        3. Entity tree panel
        4. Camera views: Move To, Follow
        5. Reset button
        6. Other example worlds that ship with Gazebo
      3. Levels (concept similar to Level of Detail) rendering
        1. Levels tutorial
        2. gz sim levels.sdf --levels
        3. gz topic -t "/model/vehicle_blue/cmd_vel" -m gz.msgs.Twist -p "linear: {x: 4.0}"
        4. gz topic -t "/model/vehicle_red/cmd_vel" -m gz.msgs.Twist -p "linear: {x: 2.0}"
        5. Model tiles defined in SDF will load and unload in the proximity of moving vehicle
      4. Using sensors tutorial
      5. Developing a Gazebo system plugin
        1. Entity Component System (ECS)
        2. API for system plugins, PIMPL
        3. Simple system plugin walkthrough: thermal camera
        4. All system plugins live here
      6. Other tutorials
        1. Tutorials page on website
        2. gz-sim library tutorials
  10. Refreshment break (4:20 pm, 10 minutes)

  11. Conclusion (4:30 pm)

    1. Ways to get involved with us
      1. For hands-on questions with the community: ROS Answers (migrating to Robotics Stack Exchange), Gazebo Answers
      2. For high-level discussions: ROS Discourse, Gazebo Community
      3. ROS News for the Week, Monthly Gazebo Community Meetings
      4. Pull requests to our GitHub repositories: ros2, gazebosim, Gazebo GitHub Project Board
      5. Participate in ROS Working Groups - Navigation, Manipulation, Control, Embedded, Real-time, Safety, Maritime, etc. See Project Governance
      6. Summer internships through Google Summer of Code (GSoC) and Google Season of Docs (GSoD)
      7. ROSCon annual developers conference, and Diversity Scholarships to attend ROSCon
    2. Open-floor Q&A and discussions

Breakouts

Please take notes here.

ROS 2

Suggested discussion topics for ROS 2 breakout:

  1. What ROS version are you using, ROS 1 or 2? If you are not using ROS, what middleware are you using?
  2. What is your application domain?
  3. What problems have you encountered with ROS 1, if any? To your knowledge, does ROS 2 solve any of them?
  4. If you are using ROS 1, what stops you from migrating to ROS 2?
  5. If you have used both ROS 1 and ROS 2, what do you like and dislike about each? Are there problems in one version that are solved in the other?
  6. What problems have you encountered with ROS 2?

Gazebo

Suggested discussion topics for Gazebo breakout:

  1. What simulator do you currently use? Why did you choose it? Which other simulators have you evaluated before choosing it, if any?
  2. If you are using a simulator, what are you using it for? Are you using it for development? For testing? For continuous integration?
  3. Have you ever used Gazebo-classic? Have you heard of the new Gazebo (formerly Ignition)? What do you know about the new Gazebo?
  4. What are the most important problems that your current simulator DOES address for your use case?
  5. What are the most important problems that simulators do not address for your use case? This can be a limit of the state of the art, or of the particular simulators you have tried. For example, contact physics, deformable objects, approximate hydrodynamics, rendering of specific environments, etc.

Organizers

Mabel Zhang, Open Robotics team at Intrinsic

Chris Lalancette, Open Robotics team at Intrinsic

Facilitators

The organizers thank the following facilitators (alphabetical by first name) from the community for helping to make the tutorial happen:

  • Andrej Orsula, University of Luxembourg
  • Rakesh Vivekanandan, Oregon State University
  • Rhys Mainwaring
  • Timothy R. Player, University of Washington Applied Physics Lab

More Repositories

1

gazebo_models

Gazebo database of SDF models. This is a predecessor to https://app.gazebosim.org
HTML
799
star
2

rocker

A tool to run docker containers with overlays and convenient options for things like GUIs etc.
Python
525
star
3

car_demo

C++
496
star
4

rosbook

Example code to accompany the book Programming Robots with ROS
Python
473
star
5

docker_images

A repository to hold definitions of docker images maintained by OSRF
Dockerfile
457
star
6

vrx

Virtual RobotX (VRX) resources.
C++
383
star
7

subt

This repostory contains software for the virtual track of the DARPA SubT Challenge. Within this repository you will find Gazebo simulation assets, ROS interfaces, support scripts and plugins, and documentation needed to compete in the SubT Virtual Challenge.
C++
288
star
8

rvizweb

RVizWeb: RViz on the browser
HTML
275
star
9

subt_hello_world

Hello World for DARPA SubT Challenge
C++
199
star
10

ovc

the Open Vision Computer
C
196
star
11

gazebo_tutorials

Tutorials for gazebo
C++
141
star
12

ros2multirobotbook

TypeScript
110
star
13

rmf_core

Provides the centralized functions of RMF: scheduling, etc.
C++
102
star
14

tensorflow_object_detector

Tensorflow Object Detector
Jupyter Notebook
97
star
15

autodock

ROS packages for automatic docking
Python
74
star
16

rmf_demos

Demos to showcase the capabilities of RMF
C++
70
star
17

osrf_wiki

69
star
18

mbzirc

Simulator for the MBZIRC Maritime Grand Challenge
C++
64
star
19

gzweb

Web client for Gazebo classic simulation
JavaScript
62
star
20

ros2_serial_example

C
61
star
21

citysim

Example city simulation for autonomous vehicles in Gazebo Classic.
HTML
61
star
22

rosbag_direct_write

C++ API for (potentially) faster writing of rosbag's using O_DIRECT with memory alignment.
C++
59
star
23

lrauv

Packages for simulating the Tethys-class Long-Range AUV (LRAUV) from the Monterey Bay Aquarium Research Institute (MBARI).
C++
54
star
24

homebrew-simulation

Homebrew tap for osrf simulation software
Ruby
49
star
25

vehicle_gateway

A pluginlib-based C++ library that interfaces with several vehicle SDK's
C++
43
star
26

vorc

Virtual Ocean Robot Challenge (VORC) resources
Python
39
star
27

ros_dds

(Deprecated) Prototype system using DDS as the middleware for a ROS like API.
C++
37
star
28

drone_demo

C++
36
star
29

osrf_testing_tools_cpp

Common testing tools for C++ which are used for testing in various OSRF projects.
C++
32
star
30

baxter_demos

Demos showing the functionality of the Baxter Research Robot.
Python
29
star
31

gazebo_osm

OpenStreetMap support for Gazebo
Python
28
star
32

dynamic_message_introspection

C++
27
star
33

uctf

Unmanned Capture the Flag (U-CTF) project.
Python
24
star
34

ros2_raw_dds_example

A project showing how to connect a raw DDS program to a ROS 2 graph
C++
23
star
35

yolo_object_detector

Object detector in ROS using deep learning in Darknet - Yolo
C
22
star
36

TSC-RMW-Reports

ROS 2 Middleware evaluation reports for each ROS release
Jupyter Notebook
22
star
37

nodelet_rosbag

C++
20
star
38

robocup_3d_simulation

A repository for Gazebo and ROS based robocup_3d_simulation.
C++
19
star
39

uav_testing

A collection of worlds for UAV testing
CMake
18
star
40

mbari_wec_gz

Simulation of wave energy harvesting buoy
C++
16
star
41

bzip2_cmake

libbz2 built with cmake
C
16
star
42

ros2_test_cases

Tracking of tests to be performed on a ROS 2 release
16
star
43

rviz_aerial_plugins

C++
15
star
44

www.ros.org

Old design work for new www.ros.org website
PHP
15
star
45

drcsim

Repository for the DRC project.
C++
14
star
46

multiarch-docker-image-generation

Shell
13
star
47

docker_templates

EmberScript
13
star
48

mbari_wec

Entrypoint to wave harvesting buoy
Dockerfile
13
star
49

negotiated

C++
12
star
50

robocup3ds

Gazebo support for the RoboCup 3D simulation league.
C++
11
star
51

servicesim

Service Robot Simulator
HTML
11
star
52

nexus

Core packages of Nexus
C++
10
star
53

ariac-docker

Containerization of ARIAC competition server and competitors' code. See https://bitbucket.org/osrf/ariac/wiki/Home
Shell
10
star
54

srcsim

Space Robotics Challenge
C++
9
star
55

wandrr

Firmware and electronics for the WANDRR robot
C
8
star
56

collaboration

Repo for collaborating on documents
Jupyter Notebook
8
star
57

capabilities

Implements the concept of capabilities as part of the robots-in-concert system.
Python
8
star
58

mir100-client

Generated from mir100 rest api pdf
Python
7
star
59

osrf_pycommon

Commonly needed Python modules, used by Python software developed at OSRF
Python
7
star
60

rosprofiler

The rosprofiler package
Python
7
star
61

system_data_recorder

A rosbag2 recorder node that backs up split files to an external location during recording
C++
7
star
62

py3-ready

Tools for checking if code is ready for python3
Python
7
star
63

rqt_graphprofiler

An experimental visualization system for anonymous publish subscribe architectures.
Python
7
star
64

rmf_schedule_visualizer

Visualizer for trajectories in the rmf schedule database
C++
6
star
65

ros2-porting-heuristics

Scripts to estimate the amount of work needed to port a package to ROS 2.
Python
6
star
66

osrf_hw

HTML
6
star
67

disc_zmq

Simple library (with implementations in languages of interest) to do discovery on top of zeromq messaging. The intent is that this library would be incorporated into other projects, where things like message serialization would be added.
C++
6
star
68

vrx-docker

Containerization of VRX competition server and competitors' code. See https://bitbucket.org/osrf/vrx/wiki/Home
Shell
5
star
69

auto-abi-checker

Tool designed to facilitate the run the great ABI compliance checker by supporting easy inputs and no configuration files
C++
5
star
70

ros2_ign

Integration between ROS 2 and Ignition
C++
5
star
71

gsoc-ros-neural

Repository for the GSOC 2015 Neural Interfaces for ROS project, sponsored by OSRF.
Python
5
star
72

collision_map_creator_plugin

HTML
4
star
73

infrastructure

Repository for tracking issues across Open Robotics infrastructure
4
star
74

slow_bldc

C
4
star
75

mesh_to_sdf

Shell
4
star
76

gazebo-doc-index

A platform that brings together all of Gazebo's learning resources in one place, in an organised fashion, helping beginners and professionals to find the right help in terms of documentation content and resources quickly.
JavaScript
4
star
77

zenoh_evaluation

Zenoh evaluation / Bandwidth test application / Zenoh version
C++
3
star
78

gazebojs

C++
3
star
79

map_transformer

Transform points from one map to another to account for slight differences in maps
C++
3
star
80

ubuntu_armhf-docker

deprecated see https://github.com/osrf/multiarch-docker-image-generation
Shell
3
star
81

mininet_ros

Dockerfile
3
star
82

collision-benchmark

Benchmark tests for collision checking and contact
C++
3
star
83

cloudsim

Shell
3
star
84

oculussdk

C++
2
star
85

open_survey_data

A collection of survey data from the community.
2
star
86

bag_merger

Tool for merging multiple rosbag2 bags into one
C++
2
star
87

romi-js-core-interfaces

Python
2
star
88

vrx-events

Repository containing team submissions for VRX events.
Dockerfile
2
star
89

rosbag_ndk_player

C++
2
star
90

cmbml

C++
2
star
91

iron_irwini_discovery_modes_prototype

Shell
2
star
92

watchprocess

A tool for recording information about executed processes.
Python
2
star
93

buoy_examples

Control examples for wave energy harvesting buoy
C++
2
star
94

handsim

HAPTIX Simulation Utlities
C++
2
star
95

magnum_playground

A place to play with the Magnum rendering engine.
2
star
96

rba_scripts

scripts to help build rosbag for android
Shell
2
star
97

redf

Rust
2
star
98

buildfarm-tools

Ruby
2
star
99

createrepo-agent

Rapidly and repeatedly generate RPM repository metadata
C
2
star
100

ariac-gazebo_ros_pkgs

Fork of https://github.com/ros-simulation/gazebo_ros_pkgs with custom restrictions on which topics can communicate.
C++
2
star