[GSoC 2024]: Migration of Project Dave and building Physics-based Sonar Simulation for Underwater Robotics
Organization: Open Robotics
Mentors: Mabel Zhang, Woen-sug Choi
Student: Gaurav Kumar ( GauravKumar9920 (Gaurav Kumar) · GitHub, https://www.linkedin.com/in/gaurav-kumar-b7298220a/ )
Link to GSoC Project: Google Summer of Code
Hello Everyone,
This summer I was selected to work on The Project Dave along with Rakesh and Helena as part of the Google Summer of Code Program 2024. My primary focus was to migrate Project dave to ROS 2 Jazzy and Gazebo Harmonic and to develop physics-based multi-beam sonar simulation, adapting it to ROS 2 and Gazebo environments.
Throughout the program, I worked closely with my esteemed mentors, Woen-sug choi and Mabel Zhang to make contributions to the Dave repository, we worked on a new branch for the project, documented and created demos that include most of the old DAVE plugins, such as the DVL, USBL and Sea Pressure sensor. Currently, we are working on the migration of the Multibeam Sonar Plugin and wrapping up the project.
My contribution included research about the various plugins available in open source and filtering out the important plugins and sensors we need to migrate during out GSoC journey. I also developed the Sea Pressure Sensor Plugin and underwater current plugin. 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 am a final-year undergraduate student at VJTI, Mumbai, with a strong passion for robotics. I was first introduced to robotics during my freshman year, where I had the opportunity to work with ROS (Robot Operating System) and Gazebo. This experience sparked my enthusiasm for the field and inspired me to contribute to open-source projects related to robotics.
About the project Dave
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.
Sea Sensor Plugin -
The Subsea Pressure Sensor Plugin is a sensor plugin designed to simulate the behavior of a subsea pressure sensor within a Gazebo simulation environment. The plugin integrates with Gazebo, using the Gazebo and ROS 2 interfaces to publish simulated sensor data. It can also Predict the Depth of the vehicle.
Related PR - [GSOC-79] Sea pressure plugin by GauravKumar9920 · Pull Request #13 · IOES-Lab/dave · GitHub
Link to the Documentation - Sea_Pressure_Sensor
Ocean Current Plugin -
(in progress)
The Ocean Current Plugin is an advanced physics plugin designed to simulate the complex behavior of ocean currents in a virtual environment. It features multiple layers, each dedicated to accurately modeling various aspects of ocean currents, such as constant and stratified flows. Additionally, the plugin is capable of replicating tidal oscillations, providing a comprehensive and realistic simulation of oceanic movements.
Related PR - Ocean Current Plugin by GauravKumar9920 · Pull Request #18 · IOES-Lab/dave · GitHub
Link to the documentation - Ocean_Current_plugin
Multibeam Sonar Plugin
(in progress)
The Multibeam Sonar plugin offers a sophisticated simulation of sonar sensors by utilizing a ray-based method rather than traditional image processing techniques. This approach effectively models acoustic signal behaviors, including phase, reverberation, and raw intensity-range data. Currently, we are developing a custom sensor leveraging the capabilities of the Gazebo GPU-Lidar and DVL (Doppler Velocity Log) sensor. The point cloud data from this sensor is accessible in Rviz, enhancing visualization and analysis capabilities.
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 underway, and there are several areas that need improvement, migration and development. Here are some of the challenges we’ve encountered:
- Identifying and selecting the sensors we need to migrate for our project involved evaluation of various options. our shortlisting criteria were based on testing what currently works, assessing which technologies are still in development, and determining how accurately the plugins represent real-world conditions and their overall reliability.
- Migration of the Ocean Current Plugin - Migration of the Ocean Current Plugin required understanding the complex framework used in the Dave project. During this process, I simplified the code, removed dependencies on other plugins, and enabled it to function as a standalone plugin. The migration also focused on improving existing features and functionality. It currently has the support for choosing between Constant/Stratified ocean current and can also Implement Tidal Oscillation Behaviour.
A few templates that we found useful during our project were -
- Template for our project - GitHub - gazebosim/ros_gz_project_template: A template project integrating ROS and Gazebo simulator
- Custom Sensor System - gz-sim/examples/plugin/custom_sensor_system at gz-sim8 · gazebosim/gz-sim · GitHub
- Custom Sensor plugin - gz-sensors/examples/custom_sensor at gz-sensors8 · gazebosim/gz-sensors · GitHub
Conclusion
This summer has been an incredible journey for me, filled with opportunities to explore underwater robotics and enhance my coding skills. Overall, the project was a success, laying a solid foundation for future developments, such as migrating additional plugins and implementing robotic manipulators.
A heartfelt thank you to my mentors, Woen-Sug Choi and Mabel Zhang, for their invaluable guidance, and to my colleagues Rakesh, Helena, and Abhi for the collaboration and shared learning over these past few months. I am also grateful to Open Robotics for their warm reception and unwavering support throughout this experience.