[GSoC 2024] Migration of project DAVE to ROS 2 and Harmonic: Worlds, Models and Plugins
Organization: Open Robotics
Mentors: Woen-Sug Choi, Mabel Zhang
Student: Helena Bianchi Moyen (Github, LinkedIn)
Link to GSoC project: https://summerofcode.withgoogle.com/programs/2024/projects/agiVoKmm
Hello everyone,
This summer, Rakesh Vivekanandan, Gaurav Kumar, and I were selected to work on migrating Project DAVE to the new Gazebo Harmonic and ROS 2 Jazzy, with guidance from mentors Woen-Sug Choi and Mabel Zhang and assistance of community volunteer Abhimanyu Bhowmik. Over the past four months, we developed a new branch for the project, documented our work, and created demos that include most of the old DAVE plugins, such as the DVL, USBL, and Sea Pressure sensor. Currently, we are focused on migrating the Multibeam Sonar Plugin and wrapping up the project.
My role included working on DAVE worlds and models, uploading them to Fuel, and migrating the USBL, Spherical Coordinates, and Multibeam Sonar plugins, which I will elaborate on below. The project documentation is available in Notion and includes details on Native and Docker installations for Ubuntu Noble, Windows WSL, and Mac OS X.
Documentation: GSoC 2024 - Open Robotics - Dave/Multibeam Sonar
Native installation: Installation Manual (Local)
Docker installation: Installation Manual (Docker)
About me
I’m a third-year Computer Engineering student at the University of São Paulo, Brazil. Currently, I am enrolled in software development for autonomous drones with the student team Skyrats. That’s how I got to learn ROS and Gazebo and began my passion for robotics. Through some exposure to Naval Engineering in my university labs, I developed a new interest in maritime robotics, which has grown throughout the project and makes me very excited to contribute more to open-source projects like DAVE in the future.
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.
Worlds and Models migration
The first part of the project was stripping all the models down and removing the plugins. Also, as described in the instructions of migration from Gazebo Classic to Harmonic, some changes had to be made especially to the texture of some of the models, which used material script. The bare models were all uploaded to the following collections:
- DAVE: https://app.gazebosim.org/hmoyen/fuel/collections/DAVE
- Multibeam Sonar: https://app.gazebosim.org/hmoyen/fuel/collections/Multibeam Sonar
This made the DAVE repository much cleaner, since all the models are called directly from Fuel and don’t need to actually be in the local repo.
You can check some progress documentation here:
Fuel Upload Research and Manual
Upload Multibeam Sonar Models to Fuel
Plugins Migration
During GSoC, I was responsible to migrate three main DAVE plugins:
- USBL
- Spherical Coordinates
- Multibeam Sonar
USBL Plugin
USBL (ultra-short baseline) facilitates underwater navigation and positioning by utilizing a transceiver and one or more transponders (or beacons). The transceiver is usually mounted on a stationary structure or a mobile central node, while the transponders are attached to the objects being tracked. The USBL DAVE plugin simulates a demo of the USBL system by enabling users to obtain the locations of transponders at a specified data frequency, which is also influenced by factors such as sound speed, temperature, depth, and the distance between the transceiver and transponder. This plugin was migrated and now works in the ROS 2 and Harmonic environment.
Documentation on how to use it: Usbl Migration
PR: [GSOC-67] Migration of USBL plugins by hmoyen · Pull Request #11 · IOES-Lab/dave · GitHub
Spherical Coordinates Plugin
The SphericalCoords
plugin for Gazebo integrates spherical coordinate manipulation capabilities into the Gazebo simulation environment. It allows users to get, set, and transform spherical coordinates within the simulation and, for example, change the world’s origin. The plugin was designed to interface with ROS 2, providing services to interact with the Gazebo spherical coordinates system.
Documentation on how to use it: Spherical Coordinates Plugin Migration
Multibeam Sonar Plugin
(in progress)
The Multibeam Sonar plugin provides an advanced simulation of sonar sensors using a ray-based approach instead of traditional image processing. It 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 and accessing its point cloud in RViz.
Some documentation of the work in progress:
Multibeam Sonar: Native Installation
Multibeam Sonar Plugin Migration Memo
PR: Multibeam Sonar Migration Template by woensug-choi · Pull Request #15 · IOES-Lab/dave · GitHub
Challenges and implementation
The project is still in progress, so there is much to be improved and migrated. Here are some of the migration challenges we’ve encountered:
- Custom Script Material: Migrating the models and world files has been challenging, particularly with adapting textures to the new Gazebo version. Many models used the custom script material tag, which is no longer supported (see Migration support for models with material scripts - #5 by azeey - General - Gazebo Community). We had to use workarounds with albedo maps and tags like ambient, emissive, specular, and diffuse, which worked out well.
- Changes in Class Structure: While migrating the plugins, we noticed significant differences in the source code structure between Gazebo Classic and Harmonic. A useful template for this was ros_gz_project_template/ros_gz_example_gazebo at main · gazebosim/ros_gz_project_template · GitHub, along with the Gazebo Documentation (Gazebo Sim: Class Index).
- Creating a Custom Rendering Sensor: We are currently migrating the multibeam sonar plugin by developing both a system and a custom Gazebo sensor. The challenge lies in implementing the rendering part, as it is still under development (see Attempted Custom Rendering Sensor Example by JEller98 · Pull Request #2406 · gazebosim/gz-sim · GitHub).
You can also check out some issues to be resolved in our Notion page (Issues).
Conclusion
Overall, the project was successful and provided a strong basis for future development, including the migration of additional plugins and the implementation of manipulators in robots.
A big thank you to mentors Woen-Sug Choi and Mabel Zhang for their guidance, and to colleagues Rakesh, Gaurav, and Abhi for the collaboration and shared learning over the past few months. Also, many thanks to Open Robotics for their reception and support throughout this experience.