Alpha release: Simple Ping2 Survey Extension

Do you have a BlueBoat? Do you have a Ping2? I’ve got an extension for you!
@gabedbv @cyamin @mattcmgb @pob747 @Anyone else who may care… presenting:

Simple Ping2 Survey Extension

This is an ALPHA release. There are certainly bugs lurking, and I hope you can help me uncover them to minimize data loss and headache for all who may benefit in the future. Thanks!


I’m no software engineer, but I am a passionate jack-of-all trades who loves working with marine tech! I developed this extension to better understand BlueOS and its extensions, and learn to work with Javascript and Vue. In the modern world of LLMs like ChatGPT and Bard, it’s easier than ever before to quickly jump into learning new software!
The Blue Robotics team is preparing to launch a sleek new product that makes using a Ping2 with a BlueBoat as easy and optimized as possible. While simply checking a box in BlueOS will make your ArduRover autopilot logs contain time-sync’d position and depth, regardless of your communications link to the vessel during the mission, there are a couple drawbacks… and so I was inspired!

Viewing data in Ping Viewer consumes more bandwidth than necessary to monitor data quality.

Logs contain all gps position and depth data, as you can quickly check with this tool, but (at least for now) confidence % from the Ping2 is not recorded. This can makes noisy data much tougher to filter!

What does this Simple solution do?

In as simple a way as I could think, the user can:

  1. Start & stop position and depth data recording, and download the results.
  2. Monitor vehicle position and orientation alongside useful coloration and geometry for judging data quality.

Before use:

  1. Ping2, mounted, connected, SerialPort removed from autopilot and the Ping Sonar mavlink box checked.

    Here Ping2 connected to Serial 4 - Access from Autopilot menu at top left of BlueOS

  2. Obtain GPS lock.

  3. Install extension (requires Internet access) and open


  1. Navigate vehicle to survey region, and start desired mapping operation (via QGC.)
  2. In this extension, click play button in the upper left (triangle.) The map will automatically center on the vehicle location, and if the computer you’re using to view the extension has internet access, satellite view map tiles from Google will load. A python script is now logging the data onboard the vehicle at 2Hz. If you refresh the page or access it from another machine, the interface may not reflect that data is being collected - clicking play on that interface will not impact the continuity of already ongoing data collection.
  3. Monitor the collected data. The table at the bottom of the page reflects the latest data received from the vehicle, with the logos in the upper corners turning as each data messages is received over your communications link. Depth values that have a confidence of over 95% will show up as a to-scale colored circle on the map. The color of the circle scales with depth, from white to dark blue. The diameter of the circle gives a representation of the beam coverage, given the Ping2 25 degree beam and the measured depth and some simple trigonometry with the tangent function. Objects that give a strong return within this beam may impact the actual area averaged by the sonar’s depth measurement, but it is a handy visualization of both depth and survey coverage. In shallower waters, you may need to mow the lawn at a closer survey spacing!
  4. Download the data. You don’t have to click stop, logging will continue. Some users may prefer to stop before collection of vehicle, as logs contain all raw data (confidence level 0-100%, not filtered.)
    I’ve had the best results when connected to a vehicle via cell-data and Zerotier, as this lets me control the vehicle with one device (my phone running QGround Control Android) and monitor with another (my laptop running off of phone hotspot.) This gives the laptop both connection to vehicle and access to the internet, so the map tiles load right up!

This process will be further detailed, along with step-by-step directions for using QGIS to generate bathymetric contour plots from the data, in an upcoming guide. I’m putting this out now for early adopters to give it a whirl! Please share your experiences, and feel free to checkout the source, make improvements, fork in your own direction, etc.

Future improvements and feature ideas

  • WP Survey speed parameter control on page?
  • User controlled confidence filter on live and/or logged data?
  • Show GPS speed over ground in table, HDOP
  • User configurable color gradient to depth mapping
  • Better mobile experience - scaling corner logos

How do I get it?

In the near future, it will just appear in the BlueOS Extension store - getting listed is as simple as a pull request! I’d like to have some confirmed reports of users having success before doing so, so in the meantime…
Update 1/22/24 - This extension is available on the Store! Select the check-box for Blue Robotics provider under Extensions, and Install the extension. Full guide coming soon!

  1. Wait for the CPU/Memory usage graphs to populate, this can take a few minutes, so go get a snack. You should then be able to find the Extension in the side menu bar

Let me know how it goes!


Does the Ping2 extension work with a Ping1D? I couldn’t get it to display anything, not even a lat/long position. does it need to be configured in some way?



Hi @PaulBarter -
We moved your enquiry here for relevance. Yes, the Ping 1D should work just fine! Your vehicle needs GPS lock, and the Ping detected under Ping Sonar devices, with Mavlink messages turned on:

Nothing is displayed until you click the play button in the upper left above the map, then it should show vehicle position, heading, and if confidence above 95%, a circle on the map @ the vehicle position.

For the moment, stick with v1.0.0, still working some kinks out of the update!
V1.0.1 makes the log persist between vehicle reboots, the logs can can be found with the File Browser (Pirate mode) under /extensions/ping-survey-logs

Let me know if you still have issues! Happy to help

Hi, Great work! Will is work with Cerulean S500? Cheers Matt

Hi @Matt1 -
If you’re able to see the S500 under Ping Sonar Devices, and enable the switch for MAVlink distances, it should work yes! Please let me know- I’ve not tested with that hardware. It’s also worth noting that the S500 has a much tighter, 5 degree beam, so you may want to modify the software - specifically index.html, line 300, changing 12.5 to 2.5.

                    const radiusInMeters = (depth/100) * Math.tan(12.5 * Math.PI / 180); // convert depth to Meter, 25degree beam angle is 12.5 degree, divide by pi/180 for radian to degree
1 Like

Hi everyone!
This guide detailing this extension and using its data has been published, and the extension is now in “beta”. Please let me know your experiences and issues! The BR team is having fun using it around the world!

1 Like