# Community meeting: WGPU-based SONAR Plugin for Gazebo Underwater Simulation

**URL:** <https://discourse.openrobotics.org/t/community-meeting-wgpu-based-sonar-plugin-for-gazebo-underwater-simulation/54783>\
**Category:** Gazebo General\
**Tags:** gazebo, simulation, meeting\
**Created:** [May 13, 2026, 1:15pm UTC](https://discourse.openrobotics.org/t/community-meeting-wgpu-based-sonar-plugin-for-gazebo-underwater-simulation/54783 "2026-05-13T13:15:29Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![caguero](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/caguero/32/3037_2.png) [@caguero](https://discourse.openrobotics.org/u/caguero)\
**Post date:** [May 13, 2026, 1:15pm UTC](https://discourse.openrobotics.org/t/community-meeting-wgpu-based-sonar-plugin-for-gazebo-underwater-simulation/54783/1 "2026-05-13T13:15:29Z")

</div>

Hello Community!

Here’s the information for our next May Meeting where we’ll talk about common sensors in underwater projects: sonars! Here are the details:

“This project focuses on building a GPU-accelerated SONAR simulation plugin for Gazebo that works across different hardware, instead of being tied to CUDA and NVIDIA GPUs. It replaces the existing CUDA-based approach with a wgpu-based pipeline, making it easier to run on systems using Vulkan, DirectX, or Metal. The goal is to keep performance high while making the plugin more portable and easier to integrate with Gazebo and ROS 2.”

Agenda:

1. Latest news from Open Robotics about Gazebo - Addisu Tadesse, Intrinsic.
2. WGPU-based SONAR Plugin for Gazebo Underwater Simulation - Naitik Pahwa, NSUT, Delhi.

🕒 **Date** : 2026-05-27T16:00:00Z  
🖥 **Place** : Virtual at [Google Meet](https://meet.google.com/cix-idnx-rjz), sign up for our [Lu.ma event to get updates and reminders.](https://bit.ly/GCMApril26)  
📅 **Event** : [Calendar event](https://calendar.google.com/calendar/embed?src=agf3kajirket8khktupm9go748%40group.calendar.google.com). [Luma Link](https://luma.com/l5vfidhg)  
🔎 **Topic** : _Sonar sensors_  
🗒 **Agenda** : Everyone is welcome to add items to the [agenda](https://docs.google.com/document/d/1rJpGluIZtnuKxDHqykwFHfHnjMsQnrvhH0IVtDkyn6s/edit?usp=sharing)  
☑ [Luma Sign Up](https://luma.com/l5vfidhg) (_add to your calendar and get reminder emails_).

As always, the meeting will be recorded and posted to the [community meetings playlist](https://www.youtube.com/playlist?list=PL6FI-gIL5jiGlch_uoSVNhCFaZb9eoj1J)on the GazeboSim YouTube channel. Check out the playlist for past meetings!

Be sure to subscribe to the [Gazebo community calendar](https://calendar.google.com/calendar/u/0?cid=Y19xa2dsODhraTluMTVhYmtrYzdjdjRyMTMza0Bncm91cC5jYWxlbmRhci5nb29nbGUuY29t)to receive invitations to the meeting every month.

See you there!

_The Gazebo Dev Team_

![GCMMay26](https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/3/7/37a23ffcfb850232c654d75ca9168ed23af21440.gif)

---

<div class="post-metadata">

**Author:** ![Katherine\_Scott](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/katherine_scott/32/4434_2.png) [@Katherine\_Scott](https://discourse.openrobotics.org/u/Katherine_Scott)\
**Post date:** [May 19, 2026, 9:25pm UTC](https://discourse.openrobotics.org/t/community-meeting-wgpu-based-sonar-plugin-for-gazebo-underwater-simulation/54783/2 "2026-05-19T21:25:48Z")

</div>

Quick bump, I created a [Luma Link for reminders.](https://luma.com/l5vfidhg)

---

<div class="post-metadata">

**Author:** ![Ayrton-Sheng](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/ayrton-sheng/32/32193_2.png) [@Ayrton-Sheng](https://discourse.openrobotics.org/u/Ayrton-Sheng)\
**Post date:** [July 21, 2026, 2:28pm UTC](https://discourse.openrobotics.org/t/community-meeting-wgpu-based-sonar-plugin-for-gazebo-underwater-simulation/54783/3 "2026-07-21T14:28:07Z")

</div>

This is really impressive work! The WGPU-based approach for sonar simulation is exactly the kind of modern, cross-platform solution the Gazebo community needs.

I have a question: do you see a path to extend this WGPU architecture beyond just sensors (lidar, camera, sonar) to become a **full alternative rendering backend** to OGRE2?

For users with high-fidelity rendering requirements—who currently have to rely on OGRE2’s limitations—having a native WGPU backend would be a game-changer.

I understand this is a significant architectural effort, but with the `gz_wgpu_rt_lidar` and now this sonar work, the building blocks seem to be falling into place. Is this on the roadmap, or is the current focus strictly on sensor simulation for now?

Would love to hear your thoughts on the feasibility and what would be needed to make this happen.

Thanks for the excellent work!

---

<div class="post-metadata">

**Author:** ![azeey](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/azeey/32/6795_2.png) [@azeey](https://discourse.openrobotics.org/u/azeey)\
**Post date:** [July 21, 2026, 3:29pm UTC](https://discourse.openrobotics.org/t/community-meeting-wgpu-based-sonar-plugin-for-gazebo-underwater-simulation/54783/4 "2026-07-21T15:29:54Z")

</div>

@Ayrton-Sheng Improving the rendering quality is a [roadmap item](https://gazebosim.org/docs/latest/roadmap/#gazebo-m-roadmap) for Gazebo M. There’s some early exploratory work to use Bevy as an external renderer using [this](https://github.com/gazebosim/design/pull/10) design. @shash1300 (who wrote `gz-wgpu-rt-lidar` had started working on it, but I’m not sure if he has the cycles anymore. We also have a branch on `gz-sim` for protyping the idea of an external renderer (in C++ for now) in [gz-sim/external\_renderer at external\_renderer · gazebosim/gz-sim · GitHub](https://github.com/gazebosim/gz-sim/tree/external_renderer/external_renderer). If you or anyone else is interested in working on this, please let us know.

---

<div class="post-metadata">

**Author:** ![Ayrton-Sheng](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/ayrton-sheng/32/32193_2.png) [@Ayrton-Sheng](https://discourse.openrobotics.org/u/Ayrton-Sheng)\
**Post date:** [July 22, 2026, 12:05am UTC](https://discourse.openrobotics.org/t/community-meeting-wgpu-based-sonar-plugin-for-gazebo-underwater-simulation/54783/5 "2026-07-22T00:05:52Z")

</div>

@azeey Great to know this is on the Gazebo M roadmap!

I actually played around with the OptiX 9.0 backend myself — WGPU’s way more portable.

I’ll dig into the docs you shared and see how I can help.

Thanks!

---

<div class="post-metadata">

**Author:** ![amock](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/amock/32/19554_2.png) [@amock](https://discourse.openrobotics.org/u/amock)\
**Post date:** [July 26, 2026, 2:53pm UTC](https://discourse.openrobotics.org/t/community-meeting-wgpu-based-sonar-plugin-for-gazebo-underwater-simulation/54783/6 "2026-07-26T14:53:14Z")

</div>

@Ayrton-Sheng@azeey : A few years ago, for Gazebo classic, I was writing a simple raycasting-based LiDAR simulation plugin for Gazebo because it popped out with low-effort from my research: [GitHub - uos/rmagine\_gazebo\_plugins: Ray Casting-Based Range Sensor Simulation in Gazebo using Rmagine · GitHub](https://github.com/uos/rmagine_gazebo_plugins) . It supported OptiX for NVIDIA GPUs and Embree for CPUs as computing backends (I also measured the really nice runtime properties of ray casting for LiDAR simulation in a paper). But I didn’t have time to write a full rendering backend out of them. At that time, the existing OptiX backend was also very experimental. I was thinking that for the development of such “special” sensors it may help if Gazebo supported not just selecting single rendering backend but many instead. Then, per sensor, one could select a rendering backend. Once this is possible, each rendering backend doesn’t need to support every sensor. This would make it a bit easier to start writing one. Because right now, when writing a new rendering backend, one needs to support all available sensors in order to be really usable. I am not into the current development of Gazebo, but a year ago this was still valid: [Inaccurate GPU Lidar · Issue #2743 · gazebosim/gz-sim · GitHub](https://github.com/gazebosim/gz-sim/issues/2743)

Are there any efforts toward making rendering backend selection configurable per sensor? If this is out of scope, I can move it to a separate topic. But it has very much to do with the recent discussion here.

And thanks for the great work so far! 🙂

---

<div class="post-metadata">

**Author:** ![arjo129](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/arjo129/32/6316_2.png) [@arjo129](https://discourse.openrobotics.org/u/arjo129)\
**Post date:** [July 27, 2026, 2:32am UTC](https://discourse.openrobotics.org/t/community-meeting-wgpu-based-sonar-plugin-for-gazebo-underwater-simulation/54783/7 "2026-07-27T02:32:06Z")

</div>

@amock for this specific project the authors completely bypass gz-rendering. It turns out gz-sim’s ECS is very nice for extracting data you want without the complexity of singletons that one finds in the ogre backend. This is the same approach used by Robotec’s RGL Lidar, and my and @shash1300 's wgpu lidar. The nice thing is with wgpu you can explicitly allocate lidars to specific gpus if you want to and select backends on the fly.

---

<div class="post-metadata">

**Author:** ![amock](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/amock/32/19554_2.png) [@amock](https://discourse.openrobotics.org/u/amock)\
**Post date:** [July 27, 2026, 11:10pm UTC](https://discourse.openrobotics.org/t/community-meeting-wgpu-based-sonar-plugin-for-gazebo-underwater-simulation/54783/8 "2026-07-27T23:10:11Z")

</div>

@arjo129, Thank you for the quick reply! From your explanation it seems like you can add me to the list of bypassers 😃 . I was syncing an embree/optix scene (IAS+GAS) with the entities of Gazebo inside a system plugin. I could then spawn many lidars all raycasting on the same acceleration structure.

I think wgpu is a great choice, especially for the Gazebo project. I am looking forward to what’s coming next. 🙂
