Hi! I am a student interested in the project Physics-based Sonar Simulation for Underwater Robotics of GSoC 2024. I have been writing my proposal and following some instructions to build the Project Dave setup with Gazebo. While studying the code structure, I was wondering if what should be done for this project is something similar as this:
That project is a little different in that it’s work on the actual gazebo_ros_pkgs, which is a base stack that everybody else depends on, including DAVE. The notes from the project are helpful though, in the syntax and boiler plate changes.
A good example of prior work we have done to migrate a marine project from Gazebo-classic and ROS 1 to new Gazebo and ROS 2 can be found in VRX. It still has both ROS 1 and ROS 2 branches.
For Gazebo-classic to new Gazebo migration, we have migration tutorials for worlds, plugins, etc.
For ROS 1 to 2 migration, we have a migration guide. Usually for complex systems, we recommend using the ros1_bridge to help migrate one part of the system at a time, until the entire system is migrated, at which time you can stop using the bridge. I think the sonar plugin is not that involved and probably does not need the bridge.
Thanks for the answer! I’ll check out the links and the branches in VRX!
About the CUDA calculations, I found this link that I thought was interesting. I don’t have much experience with CUDA and could not run the demo’s with the multi beam sonar (I think my NVIDIA graphics card does not support CUDA feature). However, I wonder which files would have to be modified, is this one an example that would require changes? @mabelzhang
I don’t know the answer to that. @WoenSug_Choi is the expert with CUDA. I don’t know if he’s monitoring activities on this board, but I can ping him.
Re not being able to run the demos - it sounds like you are maybe unsure whether your NVIDIA card supports CUDA? In case it helps, do you have the CUDA dev toolkit installed? Sometimes it’s just a bit tricky to get all the NVIDIA drivers and toolkits lined up, and if you’re using Docker, that too, to get things correctly set up.
I believe the multibeam sonar could run on CPU as well, but very slow.
Yeah, so I tried installing some NVIDIA drivers but I kept running into problems. I checked this list and couldn’t find mine (GeForce MX330) as “CUDA-Enabled”, not sure if there is another way to use CUDA without this compatibility. I will install the CUDA dev toolkit to check! If that doesn’t work out I will try to run in my CPU and also in another computer this week to get familiar with CUDA. Thank you @mabelzhang !
Got the demos to work with CUDA! Awesome! Apparently I already had the CUDA dev toolkit installed, however some NVIDIA drivers were conflicting. Not sure how I managed to get that conflict , but by solving it, everything worked well! Thanks again @mabelzhang
@Helena_Moyen Yes the CUDA code you mentioned is the file that needs modifications to use half-precision functions of CUDA library. Last time when I tried to implement half-precision the CUDA library did not have every function that I needed to use. I believe there must be some updates that can be replaced now. But some of the functions must be developed ourselves.
The Multibeam-Sonar GSoC task prioritizes the migration of DAVE Project to ROS 2 (Jazzy, which will be a LTS) and Gazebo Harmonic first. The multibeam sonar plugin can be migrated relatively easily after that. The improvement of half-precision and other sonar types will be done at the end of the GSoC period if time and effort is allowed.
Thank you @WoenSug_Choi ! I will start building the setup (ROS 2 and Harmonic) in my PC, given the priority and then study the CUDA script to understand which functions and variables would be affected by changing to half-precision. About Jazzy, I just saw it is being released in May, is there some documentation already to install and test it?
Yes, the current Rolling distro will be released as Jazzy. So installing Rolling (bleeding edge development distro) will get you the equivalent of Jazzy now.