Requirements

As mentioned in the readme, Kluster is built from the ground up in Python, and was developed using Python 3.8. Kluster has been tested on Windows 10 and Ubuntu 20.04. See the readme for installation instructions.

Kluster utilizes the following readers.

  • kmall - Kongsberg kmall file reader

  • prr3 - Reson .s7k file reader

  • par3 - Kongsberg .all file reader

  • raw - Kongsberg .raw file reader

  • sbet - POSPac sbet/rms file reader

Here I will layout the records/setup required for these systems to produce data that is compatible with Kluster.

First though, I’ll lay out the basic requirements for any sonar that Kluster can/will handle in the future:

  • Sound Speed Profile (optional) - Kluster prefers a sound speed profile to be delivered in the raw multibeam data. This allows Kluster to ray-trace any multibeam file regardless of the inclusion of an external profile file.

  • System Serial Number - Kluster requires that each file have a serial number that uniquely identifies a sonar. This allows Kluster to catalogue and organize files according to system.

  • Installation Parameters - Kluster requires that the offsets and mounting angles are provided in the file from the sonar reference point, including waterline vertical position.

  • Time Standard - Times must be reported in UTC time within the multibeam file, or provide a way to get to UTC using only the information in the file.

  • Input Position Datum - This is useful for Kluster to understand the source datum of the data, for future vertical and horizontal transformations.

Optionally, the multibeam should provide a ray-traced processed answer, using the included sound speed profile. I believe this is a great way to ensure that the user is also able to process the multibeam file without any additional files needed.

Kongsberg .all

Kluster supports three separate processing paths for Kongsberg .all files. These are as follows (in order of oldest first, to newest last):

Each datagram listed will also list the components of that datagram used by Kluster.

Path 1 (for older sonars)

Data102 (Raw range and beam angle (f))
  • Time

  • PingCounter

  • SoundSpeed

  • Ntx

  • SystemSerialNumber

  • TiltAngle

  • Delay

  • CenterFrequency

  • BeamPointingAngle

  • TransmitSectorID

  • DetectionWindowLength

  • QualityFactor

  • TravelTime

Data73 (Installation Parameters)
  • Time

  • InstallationParameterText

Data65 (Attitude)
  • Time

  • Roll

  • Pitch

  • Heave

  • Heading

Data82 (Runtime Parameters)
  • Time

  • Mode

  • ModeTwo

  • YawPitchStabilization

  • RuntimeParameterText

Data85 (Sound Speed Profile)
  • Time

  • DepthProfile

  • SoundspeedProfile

Data80 (Position)
  • Time

  • Latitude

  • Longitude

  • Altitude (decoded from Position Input Datagram)

Data89 (Seabed Image - if exists)
  • Time

  • Reflectivity

Path 2 (newer systems without Network Attitude)

Data78 (Raw range and angle)
  • Time

  • PingCounter

  • SoundSpeed

  • Ntx

  • SystemSerialNumber

  • TiltAngle

  • Delay

  • Frequency

  • BeamPointingAngle

  • TransmitSectorID

  • DetectionInfo

  • QualityFactor

  • TravelTime

Data73 (Installation Parameters)
  • Time

  • InstallationParameterText

Data65 (Attitude)
  • Time

  • Roll

  • Pitch

  • Heave

  • Heading

Data82 (Runtime Parameters)
  • Time

  • Mode

  • ModeTwo

  • YawPitchStabilization

  • RuntimeParameterText

Data85 (Sound Speed Profile)
  • Time

  • DepthProfile

  • SoundspeedProfile

Data80 (Position)
  • Time

  • Latitude

  • Longitude

  • Altitude (decoded from Position Input Datagram)

Data89 (Seabed Image - if exists)
  • Time

  • Reflectivity

Path 3 (newer systems with Network Attitude)

Data78 (Raw range and angle)
  • Time

  • PingCounter

  • SoundSpeed

  • Ntx

  • SystemSerialNumber

  • TiltAngle

  • Delay

  • Frequency

  • BeamPointingAngle

  • TransmitSectorID

  • DetectionInfo

  • QualityFactor

  • TravelTime

Data73 (Installation Parameters)
  • Time

  • InstallationParameterText

Data65 (Attitude)
  • Time

  • Roll

  • Pitch

  • Heave

  • Heading

Data82 (Runtime Parameters)
  • Time

  • Mode

  • ModeTwo

  • YawPitchStabilization

  • RuntimeParameterText

Data85 (Sound Speed Profile)
  • Time

  • DepthProfile

  • SoundspeedProfile

Data110 (Network Attitude)
  • Time

  • Latitude

  • Longitude

  • Altitude

Data89 (Seabed Image - if exists)
  • Time

  • Reflectivity

Kongsberg .kmall

There is a single processing path using KMALL files that is supported by Kluster.

Each datagram listed will also list the components of that datagram used by Kluster.

Path 1

SKM (Attitude and Attitude Velocity Sensors)
  • Time

  • Roll

  • Pitch

  • Heave

  • Heading

MRZ (Multibeam Raw Range and Depth)
  • Time

  • PingCounter

  • PingInfo_SoundSpeedatTxDepth

  • PingInfo_NumberTxSectors

  • PingInfo_ModeAndStabilization

  • PingInfo_PulseForm

  • PingInfo_DepthMode

  • PingInfo_Latitude

  • PingInfo_Longitude

  • PingInfo_EllipsoidHeightRefPoint

  • TxSectorInfo_ArrayNumber

  • TxSectorInfo_TiltAngleReTx

  • TxSectorInfo_SectorTransmitDelay

  • TxSectorInfo_CenterFrequency

  • Sounding_BeamAngleReRx

  • Sounding_TxSectorNumber

  • Sounding_DetectionType

  • Sounding_DetectionMethod

  • Sounding_QualityFactor

  • Sounding_TwoWayTravelTime

  • Sounding_Reflectivity2_dB

IIP (Installation Parameters)
  • Time

  • InstallationSettings

IOP (Runtime Parameters)
  • Time

  • RuntimeSettings

SVP (Sound Velocity Profile)
  • Time

  • DepthProfile

  • SoundSpeedProfile

Kongsberg .raw

Kluster supports two separate processing paths for Kongsberg .raw files. These are as follows:

Each datagram listed will also list the components of that datagram used by Kluster.

NOTE: Kluster will perform the amplitude detection during conversion. Kluster will also calculate a heave correction.

Path 1 (EK60)

CON0 (EK60 Configuration Datagram)
  • Time

  • InstallationSettings

RAW0 (EK60 Sample Datagram)
  • Time

  • Count

  • Offset

  • Power

  • PulseLength

  • SampleInterval

  • TransducerDepth

  • SoundVelocity

  • Frequency

  • Roll

  • Pitch

  • Heading

NME0 (NMEA Text Datagram - prefers GGA)
  • Time

  • Latitude

  • Longitude

  • Altitude (if found in NME0 record)

Path 2 (EK80)

NOTE: Saildrone EK80 data may not have NME0 records. If this is the case, Kluster will look for a csv file with navigation with the extension .gps.csv that is in the same folder as the .raw files. As long as those files are in the same folder, conversion of the navigation will be done automatically. The csv file must have columns (‘gps_fix’, ‘gps_date’, ‘gps_time’, ‘latitude’, ‘longitude’) as shown in the example below:

GPS_fix,GPS_date,GPS_time,Latitude,Longitude

0,2018-07-01,00:00:00,53.9448,-166.53966079999998

NOTE: Roll Pitch Heading are all set to zero for EK80 workflow, as they are not included in the datagrams

XML0 (Configuration XML Datagram)
  • Time

  • InstallationSettings

XML0 (Channel XML Datagram)
  • Time

  • Frequency

  • PulseDuration

  • SampleInterval

RAW3 (EK80 Sample Datagram)
  • Time

  • Count

  • Offset

  • Power or ComplexSamples, depending on datatype

NME0 (NMEA Text Datagram - prefers GGA)
  • Time

  • Latitude

  • Longitude

  • Altitude (if found in NME0 record)

Reson s7k

Kluster supports two separate processing paths for Reson .s7k files. These are as follows (in order of oldest first, to newest last):

Each datagram listed will also list the components of that datagram used by Kluster.

NOTE: will use Data7000 when Data7503 is not available, but Data7503 is preferred for reading BeamSpacingMode and the offsets that are used when 7030 is not available.

Path 1 (Standard)

Data1003 (Position)
  • Time

  • LatitudeNorthing

  • LongitudeEasting

  • Height

Data1009 (SoundVelocityProfile - Optional)
  • Time

  • Depth

  • SoundSpeed

Data1012 (Attitude)
  • Time

  • Roll

  • Pitch

  • Heave

Data1013 (Heading)
  • Time

  • Heading

Data7001 (Configuration)
  • Serial Numbers

Data7027 (Raw Detection Data)
  • Time

  • PingNumber

  • TxAngle

  • RxAngle

  • Intensity

  • Uncertainty

  • TravelTime

  • DetectionFlags

Data7030 (Installation Parameters - Optional)
  • Time

  • InstallationSettings

Data7503 or Data7000 (SonarSettings, prefer 7503)
  • Time

  • SoundVelocity

  • TxPulseTypeID

  • TransmitFlags

  • Frequency

  • BeamSpacingMode (if 7503)

Path 2 (Software that generates 1016 record)

Data1003 (Position)
  • Time

  • LatitudeNorthing

  • LongitudeEasting

  • Height

Data1009 (SoundVelocityProfile - Optional)
  • Time

  • Depth

  • SoundSpeed

Data1016 (Attitude)
  • Time

  • Roll

  • Pitch

  • Heave

  • Heading

Data7001 (Configuration)
  • Serial Numbers

Data7027 (Raw Detection Data)
  • Time

  • PingNumber

  • TxAngle

  • RxAngle

  • Intensity

  • Uncertainty

  • TravelTime

  • DetectionFlags

Data7030 (Installation Parameters - Optional)
  • Time

  • InstallationSettings

Data7503 or Data7000 (SonarSettings, prefer 7503)
  • Time

  • SoundVelocity

  • TxPulseTypeID

  • TransmitFlags

  • Frequency

  • BeamSpacingMode (if 7503)