Skip to content

MBES Patch Test route

VGroshkov edited this page Sep 23, 2026 · 1 revision
image

A multibeam echosounder needs to be calibrated for the small misalignments between the sonar head and the vessel/drone — roll, pitch, yaw and the timing latency between position and sounding. This calibration, the patch test, is done by flying the same stretch of seabed several times in a fixed pattern: the same line forward and back, and two lines offset to either side, forward and back. Planning that pattern by hand — picking the right offset for the water depth, keeping the shape flyable, exporting it as a route — is fiddly and easy to get wrong. The MBES Patch Test route script builds the whole six-line pattern automatically from a line you already surveyed, and writes it out as a KML route ready for mission planning.

Since the script declares the SVLOG template, it appears in the Scripts drop-down only for opened Cerulean SVLOG files, and specifically for a Cerulean Surveyor multibeam log — it refuses an OmniScan (side-scan) log outright, since a side-scan sonar records no soundings and cannot be used for a patch test.

Workflow summary.
The script works on a single survey line you pick from the opened file:

  • Reads the line: extracts each ping's position (from the embedded NMEA sentences) and depth (the nadir-most beam of the multibeam swath), then smooths the depth with a rolling median to suppress noise.
  • Checks the depth change: a patch test needs the bottom to actually get shallower/deeper along the line to resolve pitch and roll — if the deepest point is less than 2× the shallowest, the script still builds the route but warns that the test may not resolve them well.
  • Builds three tracks: the surveyed centerline, and a track offset to each side by the swath's edge distance at that point (local water depth × half the sonar's beam width) — placing the offset lines where they overlap the centerline's own swath edge, which is what lets the yaw offset be computed later.
  • Turns each track into a flyable route: the dense, GPS-noisy track is simplified to the waypoints that actually define its shape, thinned so no two waypoints sit closer than a metre apart, and any turn sharper than 90° is smoothed out by dropping the offending waypoint — repeated until nothing is left to fix.
  • Writes the KML: all six lines (centerline and both offsets, each flown in both directions) are written as L1–L6 placemarks into a single KML file, in an order chosen to keep consecutive legs starting close to where the previous one ended.


  1. Open the SVLOG file recorded by the Cerulean Surveyor multibeam sonar. GeoHammer treats a freshly opened SVLOG as a single line covering the whole recording (index 0). If the patch test stretch is only part of a longer survey, use the map's "Split Line" tool first to cut out the segment you want — usually a straight stretch over a slope or a distinct seabed feature, long enough to matter and with a real depth change along it — as its own line.
image
  1. In the Scripts panel, choose MBES Patch Test route.
Screenshot 2026-09-23 at 15 32 01
  1. Set Survey line to the line you picked (0 if you didn't split the file). Either type its index into the spinner (the valid range for the opened file is shown next to the label, e.g. (0-5)), or select the line on the chart or the map first and click "Use selected". GeoHammer hands the script only the data of that one line, so the rest of the recording is never touched.
image
  1. Click the "Select" button next to Output folder and pick where the KML should be written. This field is required.

  2. Click "Apply".

The resulting KML file contains six lines — L1/L2 along the surveyed centerline (there and back), L3/L4 and L5/L6 along the two offset lines — ready to be imported into your mission-planning software for flying.

image


One small technical note!

The offset lines aren't placed at a fixed distance: at every point they sit as far from the centerline as the sonar's own swath reaches at the local depth (depth × tan(half beam width)), recomputed continuously along the track. This is why a straight input line over a sloping bottom produces offset lines that curve slightly to follow it, rather than a perfectly straight line to either side.

The six lines are written in the order L1, L4, L5, L2, L3, L6, not L1..L6 — this groups legs so that each one starts close to where the previous one ended, rather than in the order they appear conceptually.

Clone this wiki locally