Migrating Gazebo plugins to ROS2

Google Summer of Code 2019

Project: Migrating Gazebo Plugins to ROS2
Organization: Open Source Robotics Foundation
Mentor: Louise Poubel
Student: Shivesh Khaitan (shiveshkhaitan@gmail.com)

Working for Open Source Robotics Foundation as a Google Summer of Code 2019 Student Developer was a wonderful learning experience. I would like to thank my mentor @chapulina for guiding me throughout the course of the project.

Project Overview

The project aimed to migrate the existing gazebo_ros_pkgs in ROS1 to ROS2 with proper documentation, testing and demos. Gazebo ROS packages include ROS packages which provide a ROS interface to Gazebo simulations, so developers can test their ROS code in a virtual simulation instead of a physical robot.

What has been done?

The migration is complete and most of the work has been merged and even released. The work targeted ROS2 distro Dashing Diademata. All of the plugins (apart from those deprecated) have been migrated.

I. Gazebo Plugins

Gazebo Plugins package provides plugins for common mechanical drives, sensors and other utilities to be used in Gazebo for to ease interfacing with ROS. Following is a list of the contributions to the package:

Name Guide Link Status
gazebo_ros_video ROS-2-Migration:-Video #899 :white_check_mark: merged
gazebo_ros_tricycle_drive ROS 2 Migration: Tricycle drive #917 :white_check_mark: merged
gazebo_ros_ft_sensor ROS 2 Migration: F3D
ROS 2 Migration: FT Sensor
#921 :white_check_mark: merged
gazebo_ros_skid_steer_drive ROS 2 Migration: Skid Steer drive #927 :white_check_mark: merged
gazebo_ros_depth_camera (Eloquent) ROS 2 Migration: Camera #932 :white_check_mark: merged
gazebo_ros_multi_camera (Eloquent) ROS 2 Migration: Camera #939 :white_check_mark: merged
Dynamic Reconfigure ROS 2 Migration: Camera #940 :white_check_mark: merged
gazebo_ros_bumper ROS 2 Migration: Bumper #943 :white_check_mark: merged
gazebo_ros_harness ROS 2 Migration: Harness #944 :white_check_mark: merged
gazebo_ros_elevator ROS 2 Migration: Elevator #945 :white_check_mark: merged
gazebo_ros_joint_pose_trajectory ROS 2 Migration: Joint Pose Trajectory #955 :white_check_mark: merged
gazebo_ros_projector ROS 2 Migration: Projector #956 :white_check_mark: merged
gazebo_ros_hand_of_god ROS 2 Migration: Hand of God #957 :white_check_mark: merged
gazebo_ros_planar ROS 2 Migration: Planar Move #958 :white_check_mark: merged
gazebo_ros_vacuum_gripper ROS 2 Migration: Vacuum Gripper #960 :white_check_mark: merged
gazebo_ros_depth_camera (Dashing) ROS 2 Migration: Camera #967 :white_check_mark: merged
gazebo_ros_multi_camera (Dashing) ROS 2 Migration: Camera #984 :white_check_mark: merged

Apart from the migration, some new functionalities were also added to ROS2.

I. gazebo_ros_ackermann_drive
An additional plugin for car-like robots. #945
Status: :white_check_mark: merged

II. CUDA accelerated Depth Camera
GPU accelerated computationally expensive processes of depth_camera_plugin for better performance. #981
Status: :hourglass: under discussion

II. Gazebo ROS

Gazebo ROS package provides implementation of Gazebo Node, Executor, common conversion utilities, World and System Gazebo plugins. Following is a list of the contributions to the package:

Name Guide Link Status
gazebo_ros_paths_plugin ROS 2 Migration: Gazebo ROS Paths #925 :white_check_mark: merged
gazebo_ros_force_system ROS 2 Migration: Body Wrench and Joint Effort #941 :white_check_mark: merged
spawn_model ROS 2 Migration: Spawn and delete #948 :white_check_mark: merged
Launch Scripts ROS 2 Migration: Launch Scripts #962 :white_check_mark: merged
model_states (gazebo_ros_state) ROS 2 Migration: Entity states #968 :white_check_mark: merged
link_states (gazebo_ros_state) ROS 2 Migration: Entity states #969 :white_check_mark: merged
gazebo_ros_properties ROS 2 Migration: gazebo_ros_api_plugin #972 :white_check_mark: merged
physics_properties (gazebo_ros_properties) ROS 2 Migration: gazebo_ros_api_plugin #973 :hourglass: under discussion

Additional Work

Apart from the planned migration of gazebo_ros_pkgs, some work has been done on a new package ros2_ign which provides integration between ROS2 and the new ignition-gazebo. Following is a list of the contributions to it:

Name Guide Link Status
static_bridge ros2_ign_bridge #1 :hourglass: under discussion
parameter_bridge ros2_ign_bridge #3 :hourglass: under discussion

Future Plans

Though the planned milestones have been achieved, I would like to continue to contribute to OSRF in the future. As the packages have been recently released, I am waiting for the feedback from the users on the work and would like to address any bugs or reviews on it.

Important Links

Again I would like to thank OSRF and my mentor @chapulina for providing me this wonderful opportunity. Thank you for reading.

Regards
Shivesh Khaitan

15 Likes

Great work Shivesh! Glad to see those continued to be maintained (I had a very similar OSRF internship many years ago)

2 Likes

Thank you @davetcoleman