Kongsberg Mesotech Rotary Sonar Data Product - SCAN Mode
Data files for Kongsberg Mesotech Rotary Sonar instruments are described here. In the SCAN mode, the sonar repeatedly images a particular sector of the of its full 360 degree sweep range. The parameters are set with a central azimuth and a half-width. To see these settings, navigate to the device details from step 2 of data search, i.e. http://dmas.uvic.ca/DeviceListing?DeviceId=12007, and then go to the attributes tab. If the scan mode is not active, no scan data products will be generated. The full SWEEP data product is also available and is always active when the device is active. This is why users may find the sweep data product returning data, while the scan mode returns with a 'No data found' message. The availability of the scan mode data product may be less than that indicated by the data availability graph.
Oceans 2.0 API filter:
- 20120519: Initial SMB product released
- 20121002: Scan Mode enabled
- 20140730: MAT-file and plotting products added
This data is available in LOG, SMB and MAT format (the LOG file is a internal ONC format). LOG files are created daily at midnight UTC from data acquired throughout the day. Shortly thereafter, the data products are processed from the LOG files and are made available to data search. Content descriptions are provided below.
Plots are available in PNG and PDF format.
This binary format is specific to the manufacturer. When using Kongsberg Mesotech data acquisition software, data is normally stored in this way. Although we use custom-built drivers to communicate with our instruments, we can use the raw data in the log file to produce the SMB file which can be interpreted by Kongsberg Mesotech MS1000 post-processing software.
This format is further described in the manufacturer's documentation: 900-00007904-2.1.pdf. (Here's a more recent version: Singlebeam_SMB_V0230.pdf, however, our SMB format is based on the older format specification.) The MATLAB library we use to produce MAT file and plots from SMB files is available upon request. In the replication of the SMB file, the sonarAngle, also known as the startAngle from EXTRA_HIGH_FREQ_SONAR_TUPLE_DATA is corrected to a bearing relative to true North. The correction from instrument relative bearing to true bearing uses the following, in descending order:
- device true heading from Oceans 2.0 metadata, specified using a fixed heading or a mobile position sensor plus the sitedevice offset. For example: https://data.oceannetworks.ca/DeviceListing?DeviceId=11401 → site tab → https://data.oceannetworks.ca/Sites?siteId=1000659 where offset heading 181 degrees (site fixed heading is not required - only one of site heading or offset heading are, but are additive if both provided).
- onboard compass, if equipped (new for spring 2021). If the device attribute compass is "ON", the instrument driver software will poll the compass at the start of each SWEEP or SCAN and that data is passed into the SMB file as a DATA_TYPE_HDM tuple, specifying the magnetic heading. A declination correction is applied for the latitude of the device.
This differs from the operation of a rotary sonar onboard a moving vehicle using the MS1000 software: the compass or heading isn't applied to the startAngle, but instead MS1000 rotates the compass rose on the display, keeping the instrument axis pointed up. The compass data appears in the DATA_TYPE_HEAD_SENSORS tuple. In our use case, we're interested in the plot relative to true North, so North is always up. When running an ONC SMB file through MS1000 playback, the software fortunately ignores the compass data, plotting only the sonarAngle/startAngle, which is a true bearing so that the plot on screen is correct.
This data product has been tested mostly with MS 1000 version 4.51, while the new version, 5.2, also tests well. Historic data has been reprocessed and sweep SMB files should be fully available. If a data search returns with 'No data found' when the data availability shows that there is data, please contact us and we will be happy to investigate.
Viewing SMB Files
The MS1000 software (Kongsberg Mesotech, http://www.kongsberg-mesotech.com) is free to redistribute for playback of the data. Download the MS Windows version here: MS1000_V0520_unlocked.zip. Then unzip and run MS1000_V0520_Setup.exe. To view the data, run the MS1000 software and press the play button. Alternatively, double-click an SMB file to launch the software in playback mode. The fast-forward function is useful for viewing the data quickly.
Previous versions of the MS1000 software did not directly support the high sample rate that our rotary sonars operate at. To make older versions work, right-click on the image and select 'Fit Image To Screen'.
In some cases, the software does not display the reverse direction of the scan very well. Wiggle your mouse and the display will update. (It appears to be a limitation of the software and graphical capability of one's computer, we're investigating.) The fast forward function of the software is very useful to view a large amount of data quickly.
Oceans 2.0 API filter: extension=smb
MAT files (v7) can be opened using MathWorks MATLAB 7.0 or later. The file contains two structures: Meta and Data.
- deviceID: A unique identifier to represent the instrument within the Ocean Networks Canada data management and archiving system.
- creationDate:Date and time (using ISO8601 format) that the data product was produced. This is a valuable indicator for comparing to other revisions of the same data product.
- deviceName: A name given to the instrument.
- deviceCode: A unique string for the instrument which is used to generate data product filenames.
- deviceCategory: Device category to list under data search ('Echosounder').
- deviceCategoryCode: Code representing the device category. Used for accessing webservices, as described here: API / webservice documentation (log in to see this link).
- lat: Fixed value obtained at time of deployment. Will be NaN if mobile or if both site latitude and device offset are null. If mobile, sensor information will be available in mobilePositionSensor structure..
- lon: Fixed value obtained at time of deployment. Will be NaN if mobile or if both site longitude and device offset are null. If mobile, sensor information will be available in mobilePositionSensor structure.
- depth: Fixed value obtained at time of deployment. Will be NaN if mobile or if both site depth and device offset are null. If mobile, sensor information will be available in mobilePositionSensor structure.
- deviceHeading: Fixed value obtained at time of deployment. Will be NaN if mobile or if both site heading and device offset are null. If mobile, sensor information will be available in mobilePositionSensor structure.
- devicePitch: Fixed value obtained at time of deployment. Will be NaN if mobile or if both site pitch and device offset are null. If mobile, sensor information will be available in mobilePositionSensor structure.
- deviceRoll: Fixed value obtained at time of deployment. Will be NaN if mobile or if both site roll and device offset are null. If mobile, sensor information will be available in mobilePositionSensor structure.
- siteName: Name corresponding to its latitude, longitude, depth position.
- stationCode: Code representing the station or site. Used for accessing webservices, as described here: API / webservice documentation (log in to see this link).
- locationName: The node of the Ocean Networks Canada observatory. Each location contains many sites.
- dataQualityComments: In some cases, there are particular quality-related issues that are mentioned here. This is distinct from QAQC information contained in the data structure.
- MobilePositionSensor.name: A cell array of sensor names for mobile position sensors. If not a mobile device, this will be an empty cell string.
- MobilePositionSensor.sensorID: An array of unique identifiers of sensors that provide position data for mobile devices - this data may be used in this data product.
- MobilePositionSensor.deviceID: An array of unique identifiers of sensors that provide position data for mobile devices - this data may be used in this data product.
- MobilePositionSensor.dateFrom: An array of datenums denoting the range of applicability of each mobile position sensor - this data may be used in this data product.
- MobilePositionSensor.dateTo: An array of datenums denoting the range of applicability of each mobile position sensor - this data may be used in this data product.
- MobilePositionSensor.typeName: A cell array of sensor names for mobile position sensors. If not a mobile device, this will be an empty cell string. One of: Latitude, Longitude, Depth, COMPASS_SENSOR, Pitch, Roll.
- MobilePositionSensor.offset: An array of offsets between the mobile position sensors' values and the position of the device (for instance, if cabled profiler has a depth sensor that is 1.2 m above the device, the offset will be -1.2m).
- MobilePositionSensor.sensorTypeID: An array of unique identifiers for the sensor type.
- MobilePositionSensor.correctedSensorID: An array of unique identifiers of sensors that provide corrected mobile positioning data. This is generally used for profiling deployments where the latency is corrected for: CTD casts primarily.
- deploymentDateFrom: The date of the deployment on which the data was acquired.
- deploymentDateTo: The date of the end of the deployment on which the data was acquired (may be omitted if still deployed).
- samplingPeriod: Sampling rate of the instrument in seconds (maybe omitted on some devices that have no scalar sensors).
- samplingPeriodDateFrom: matlab datenum of the start of the corresponding sample period (maybe omitted on some devices that have no scalar sensors).
- samplingPeriodDateTo: matlab datenum of the end of the corresponding sample period (maybe omitted on some devices that have no scalar sensors).
- searchID: unique number tracking this search request (not normally included).
- Attribution: A structure array with Attribution information, ordered by importance and date. For internal users, go to the Network Console to configure the attributions. If an organization has more than one role it will be collated. If there are gaps in the date ranges, they are filled in with the default Ocean Networks Canada citation. If the "Attribution Required?" field is set to "No" on the Network Console then the citation will not appear. For data products with a attribution (except MAT files) and for users making products from a MAT file, if the special attribution is blank/null, then the company default attribution will be used and if it is also blank/null, then the final attribution will consist of the organization name and role: "Ocean Networks Canada (Owner, Collaborator)". Here are the fields:
- acknowledgement: the acknowledgement text, note that if the special acknowledgement blank/null, the default acknowledgement is used.
- startDate: datenum format
- endDate: datenum format
Data: structure containing the Kongsberg rotary sonar data, tightly based on the tuple structure of SMB files. Only the important fields are listed below. For more information, refer to the SMB file specfication: 900-00007904-2.1.pdf. Please note that not all structures and fields available in the SMB files are converted and provided in the MAT file all of the time. If there is anything missing or something to be improved, please contact us, we'll be happy to make improvements.
These structures are from the sonar ping tuple:
- overloadCounter: logical value that indicates signal saturation in the corresponding sonar ping (one for each sonar ping / profile).
- sonarData: data matrix, with the rows representing each sonar ping, columns are range. Format is uint16 or uint8, as controlled by extraHdr.BitsPerSample - '8' meand 16 bit, '16' means 8 bit!
- sonarTime: array of times for each ping in matlab datenum format (days since year 0)
- sonarAngle: sonar pointing angle for each ping in degrees, copied from extraHdr.StartAngle for clarity
- sampleRate: sampling rate in Hz.
- samplingDelay: sampling delay or hold off (to blank transmit) in samples.
The following structures are part of the sonar ping tuple, but are only provided when the SMB source file s relatively small. These structures are slow to process, consume memory, and duplicate data that's already captured in the preceding structures.
- hdr: a structure representing the standard SMB tuple header (one for each sonar ping / profile):
- DataType: type of data contained within this tuple, 12 is single ping data
- DataTime: time at which data was collected; milliseconds since midnight UTC.
- extraHdr: a structure representing a common header used to provide extra information for sonar and profile data tuples (one for each sonar ping / profile):
- ScanDirection: 0 = clockwise, 1 = counterclockwise
- StepSize: step size of head in 0.225 degree increments
- StartAngle: start angle of scan in 0.225 degree increments. This is sonar pointing angle copied to Data.sonarAngle below.
- BitsPerSample: Number of bits in each sample
- SampleRate: sampling rate in Hz.
- SamplingDelay: sampling delay or hold off (to blank transmit) in samples
Here is the settings tuple:
- settings: a structure containing information on the sonar settings
- hdr: header for the settings tuple
- extraHdr: a copy of the first extraHdr structure
- config: a structure of settings with many fields, the important ones are:
- Range: range of data to display in meters
- SampleCount: number of samples recorded in each ping - not accurate, use size(Data.sonarData, 2) to determine this
- Gain: sonar gain
- PulseLength: sonar transmit pulse duration in microseconds
- SoundSpeedDefault: sound speed in meters per seconds
- ftr: a structure representing the settings footer tuple
Here is the date tuple:
- date: a structure with the following date/time fields, modified from the SMB time tuple:
- dateFrom: start time of source SMB files in MATLAB datenum format: days since year 0.
- dateTo: end time of source SMB files in MATLAB datenum format: days since year 0.
- TimeUTC: start time of source SMB file in seconds since 1970.
- hdr: header for the date tuple
Additional tuples for heading, location maybe added in the future.
Oceans 2.0 API filter: extension=mat
PNG / PDF
The PNG / PDF plot data products mirror the display of the Kongsberg MS1000 software, but break each rotation into separate plots so that no data is overwritten or has to be averaged. The raw backscatter amplitude is plotted as contained in the MAT file: 16 bit data ranges from 0 to 65535, 8 bit ranges from 0 to 255. The backscatter data is not calibrated. For each source SMB file, there are two types of plots returned: a plot of the sonar pointing / heading angle as a function of time (called 'SonarAngle') and multiple backscatter polar plots (called 'Backscatter'). The SonarAngle plot has numbered annotations showing the start of each corresponding numbered Backscatter plot. In the examples below, the SonarAngle plot shows that five Backscatter plots will be created for this SMB source file. The PDF version of this data product will group this plots into a single PDF file with multiple pages. Please note that these examples are of test tank data; real data looks much better.
The algorithms for detecting each rotation and for making the plots are somewhat complex. Contact us if you are interested in the source code for these plots, which would be useful for analyzing the data from the MAT files.
Oceans 2.0 API filter:
The GIF is a combination of PNG plots seen above excluding the sonar pointing / heading angle as a function of time plot. The GIF plots are broken up daily so they run through every PNG in a day.
Oceans 2.0 API filter: extension=gif
To comment on this product, click Add Comment below.