[GSoC 2024] Migration of project DAVE to ROS 2 and Harmonic: Launch Files, Robot Models and Sensor Plugins

Organization: Open Robotics

Mentors: Woen Sug Choi, Mabel Zhang

Student: Rakesh Vivekanandan (Github, LinkedIn)

Link to GSoC Project: Google Summer of Code

Hello everyone,

This summer, Helena Moyen, Gaurav Kumar, and I were selected to work on migrating Project DAVE to Gazebo Harmonic and ROS 2 Jazzy, under the mentorship of Woen-sug Choi and Mabel Zhang, with valuable assistance from community volunteer Abhimanyu Bhowmik. Throughout the GSoC period, we developed a new project branch, documented our progress, and created demos that integrated most of the original DAVE plugins, such as the DVL, USBL, underwater current, underwater camera, and sea pressure sensor. We are now focusing on migrating the Multibeam Sonar Plugin and wrapping up the project.

My role involved creating a manual for installing DAVE in Docker, as well as migrating the DAVE launch files, robot models, and sensor plugins. Detailed project documentation, including instructions for native and Docker installations on Ubuntu Noble, Windows WSL, and macOS, is available on Notion.

Documentation: Dave ROS 2 Wiki, GSoC 2024 - Open Robotics - Dave/Multibeam Sonar

Native installation: Installation Manual (Local)

Docker installation: Installation Manual (Docker)

I also had the opportunity to present a summary of our migration work at the Maritime WG Meeting. You can watch the presentation here.

About me

I am a Robotics Ph.D. student at Oregon State University, working in the Robotic Decision-Making Laboratory under Dr. Geoffrey A. Hollinger. My work focuses on advancing the autonomy of underwater vehicles in dynamic marine environments. My research includes developing autonomous underwater docking, integrating wave and current models into control frameworks, and enabling real-time 3D reconstruction of free-floating objects to improve obstacle avoidance strategies. My interests lie at the intersection of perception, motion planning, and control.

About the project

DAVE (Aquatic Virtual Environment - Home | Project DAVE) is a simulation platform designed for the rapid testing and evaluation of underwater robotic solutions, specifically autonomous underwater vehicles (AUVs/UUVs) that perform missions involving autonomous manipulation. Originally built on ROS 1 Noetic and Gazebo Classic, which are set to reach their end of life in 2025, the project aims to migrate DAVE and its Multibeam Sonar plugin to the new ROS 2 and the Harmonic framework. This transition will ensure continued support and development for the simulation environment.

Launch File Migration

The goal of this task was to replace the xacro launch files with Python-based launch files. This migration offers several advantages, including improved readability, greater flexibility, and enhanced maintainability. Python-based launch files allow for more complex logic and conditional statements, making it easier to customize and extend the launch process. Additionally, this transition aligns with ROS 2’s best practices, ensuring better compatibility and future-proofing the project.

Robot Model Migration

Task 1: This task focused on converting URDF xacro files to the SDF format to align with the latest Gazebo standards. The conversion not only ensures compatibility with modern practices but also involved streamlining the models by removing outdated plugins, resulting in a more efficient and simplified base model.

RexROV in ROS 2 and new Gazebo

Task 2: The second task involved integrating the migrated plugins into the rexrov and glider_slocum robot models, enhancing their functionality and ensuring they are up-to-date with the new simulation framework.

plugins

Related PRs: rexrov, glider_slocum

Plugin Migration

I developed a custom ros_gz bridge to support the DVL message type, enabling communication between ROS and Gazebo. Currently, I am working on migrating the underwater camera plugin and the multibeam imaging sonar plugin.

Custom ros_gz bridge for DVL Plugin:
Although a Gazebo plugin for DVL exists, no existing ros_gz bridges supported the DVL message type. So, we created a custom bridge to fill this gap.

Documentation: Link

Related PR: [GSOC-95] Custom ros_gz bridge for DVL plugin by rakeshv24 · Pull Request #14 · IOES-Lab/dave · GitHub

Underwater Camera Plugin:
(in progress)
This plugin builds upon the existing Gazebo RGB-D camera sensor plugin, adapting it to simulate underwater conditions. It modifies the visual characteristics by adjusting attenuation parameters, which simulate the behavior of light underwater and influence the color and visibility of objects in the simulated environment.

Below are pictures with different attenuation parameters:



Multibeam Sonar Plugin:
(in progress)

The Multibeam Sonar plugin offers an advanced simulation of sonar sensors using a ray-based approach rather than traditional image processing. It accurately models acoustic signal behavior, including phase, reverberation, and raw intensity-range data. Currently, we are developing a custom sensor based on the Gazebo GPU-Lidar and DVL sensor, with the point cloud accessible in RViz.

The pending tasks include adding a plugin to translate Gazebo point cloud messages to ROS and addressing issues with point cloud visualization, with a focus on using the GPU Lidar sensor for accurate display. There’s also a need to add tag handles for reading multibeam sonar parameters from SDF and constructing a dataset for CUDA processing. This involves inserting a CUDA code wrapper function and implementing conditional CMake configurations to check for CUDA support. Additionally, a plugin is needed to translate sonar image messages to ROS.

Installation:

  1. Native
  2. Docker

Documentation on progress: Link

Related PR: Multibeam Sonar Migration Template by woensug-choi · Pull Request #15 · IOES-Lab/dave · GitHub

Challenges

The project is still underway, and there are several areas that need improvement and migration. Here are some of the challenges we’ve encountered:

  1. Certain upstream Gazebo system plugins, such as buoyancy and DVL, require integration at the world file level rather than at the model level. The rationale behind this design is unclear, but it has necessitated the creation of multiple world files instead of allowing plugin insertion at the model level for greater flexibility and modularity.
  2. Although the new standard for model description files is the SDF format, it lacks the feature of repurposing descriptions, resulting in a loss of modularity. This has led to large and cumbersome description files for robots. For example, we now have to manually specify tags for each thruster instead of using macros as we did with URDFs.
  3. Migrating sensor plugins has been particularly challenging, as it required the development of both a sensor plugin and a systems plugin. Helpful templates for this process can be found here: custom sensor plugin and custom systems plugin.

Conclusion

This project migration was essential as it supports the latest ROS 2 distribution (Jazzy) and the Gazebo Harmonic framework, incorporating recent advancements and improvements. The migration also reduces dependencies on the older UUV simulator, streamlining the system and minimizing potential issues related to outdated components.

I am grateful to my mentors Woen-Sug Choi and Mabel Zhang for their invaluable guidance, and to my colleagues Helena, Gaurav, and Abhimanyu for their collaboration and shared insights over the past few months. A special thanks to Open Robotics for their warm reception and ongoing support throughout this experience. Overall, working on this project has been a rewarding experience, and I look forward to continuing my contributions in the future.

5 Likes