Acoustic depth measurement
Sonar returns a range estimate, not a finished map. The depth value depends on pulse travel time and the assumed speed of sound in water.
Open pageOMEGA combines field logging, point validation, and map generation in one workflow. The Arduino Mega records GPS, sonar, water temperature, IMU orientation, and UTC time, writes the full survey record to SD, and produces a filtered mapping dataset that Python converts into bathymetric surfaces and overlays.
The system moves from acquisition to validation, from validation to logging, and from logging to reconstruction. Each stage has a different job, and each stage leaves a record that can be inspected later.
The SD card keeps the full survey history and the accepted mapping points. That separation preserves the field record while keeping the surface model tied to a stricter set of conditions.
arduino/rov_logger_mapping.ino handles sensor input, validation, display, and SD logging.scripts/csv_to_png_depth_interpolated.py builds an interpolated depth surface from accepted survey points.scripts/csv_to_png_depth_contours.py generates contour plots from the same mapping dataset.scripts/csv_to_kmz_depth_overlay.py exports a georeferenced overlay for Google Earth.The sonar estimates distance from acoustic travel time. GPS attaches each reading to location and UTC time. Temperature is used in the sound-speed correction. The IMU tracks platform orientation. Validation logic decides whether a reading enters the mapping dataset. The Python scripts then reconstruct a continuous surface from accepted points.
Sonar returns a range estimate, not a finished map. The depth value depends on pulse travel time and the assumed speed of sound in water.
Open pageGPS precision, fix age, motion state, spacing, and depth stability determine whether a reading becomes part of the mapping dataset.
Open pagePython converts accepted survey points into a gridded surface with inverse distance weighting, then exports map images and geographic files.
Open pageHydrography, sound-speed correction, spatial uncertainty, and bottom change provide the research frame for the system.
Open pageThe Arduino code sets limits for GPS quality, fix age, platform motion, and sonar correction. Those values determine whether a point is kept in the accepted mapping dataset.
| Parameter | Current value | Role in the survey |
|---|---|---|
sonarCalSoundSpeed |
1500.0 m/s | Baseline sound speed used when correcting sonar range. |
sonarCalTempC |
20.0 °C | Reference temperature associated with that baseline sound-speed value. |
maxMapHdop |
1.8 | Rejects fixes with poorer horizontal precision. |
maxMapFixAgeMs |
2000 ms | Rejects stale fixes that may no longer match the platform position closely. |
maxMapSpeedKmph |
8.0 km/h | Limits mapping when the platform is moving too quickly. |
maxMapPitchDeg |
10.0° | Rejects mapping points when pitch exceeds the allowed range. |
maxMapRollDeg |
10.0° | Rejects mapping points when roll exceeds the allowed range. |
One field pass can produce several different outputs. The accepted mapping CSV keeps the point dataset. Interpolated PNG maps show the reconstructed surface. Contour plots emphasize slope and relief. KML and KMZ files place the result in geographic space for viewing in tools such as Google Earth.
Output quality depends on survey spacing, GPS precision, sound-speed assumptions, platform motion, and the interpolation settings used in Python. The map is a reconstruction built from accepted points, not a literal image of the entire bottom.