How to transform Ping360 scan data to global frame for mapping?

Hi everyone,
I’m currently working with the Ping360 sonar and the ‘brping’ library on Ubuntu 20.04. I’ve successfully received scan data from the sonar and visualized it in my custom polar map interface.
Now, I want to transform the detected obstacles from the sonar scans into a global frame so that as the sonar moves with the AUV, the obstacle map is updated and remains consistent in the global coordinate frame.
What’s the best way to approach this transformation? Are there any recommended methods or existing tools to help with this process?

Thanks in advance!

Hi @HudsonLe -
Welcome to the forums!
To do as you describe, some idea of the AUV position will be necessary. Typically this is accomplished with a DVL or other underwater localization system, like a USBL. You may want to checkout the SonarView, as they accomplish this with scan data from their Omniscan FS.

With an estimate of the position and heading of the vehicle, and relative angles of each Ping360 profile, you should be able to map the intensity values to specific locations in space.

There are different approaches to combining that information, depending on what you want to achieve with it. The main options I can think of are

  1. processing each profile (independently) to determine a single (optional) point of interest (where an object/surface is likely to be), and forming a point-cloud of those points
  2. processing all the response strength values together, either in an approach like synthetic-aperture sonar, and/or considering the responses as samples of a space which you can then fit a 3-dimensional mixture of Gaussians over, and potentially display using existing renderers for Gaussian splats
  3. creating a mosaic of the scan images, overlaying newer scans on top of older ones, which (as I understand it) is SonarView’s approach

The second approach is likely substantially more work, but also has the highest potential for accurately representing what is sensed, and can factor in the shape of the beam (which a point-cloud is poorly suited to).