Driver to decode laser data from Kraken Robotics SeaVisionTM underwater laser scanner.
The SeaVision™ is designed to operate in a twin scanner configuration and uses a full color laser scanning process that’s repeated thousands of times per second to generate coordinate values of millions of points on a reflected surface.
The coordinates and intensity associated with each reflected laser pulse are processed in real time to generate an ultra-high resolution point cloud.
|Driver||Kraken SeaVision Subsea Scanner||Interface Type||UDP||Driver Class Type||UdpClient|
|UTC Driver||Yes||Input / Output||Input||Executable||DrvLAS.exe|
|Related Pages||Laser Scanning - LAS|
Twin scanner configuration
Data is always broadcast via UDP network. Use a fast (Gigabit) network card, due to the enormous amount of data to be expected.
The SeaVision publishes up to 120 profiles per second, where each profile contains 1280 data points, so in a twin scanner configuration you may expect up to 300K points/sec.
Each profile packet format is based on the LAS 1.2 format, which will not be further described in this document.
More information can be found at http://www.asprs.org/a/society/committees/standards/asprs_las_format_v12.pdf.
The driver is configured as a Multibeam System and creates 'multibeam' x/y/z observations.
('multibeam' versus 'laser scanning'-terminology: ping = scan = profile = swath = line, footprint = pixel = point = pulse)
The following information will be decoded from each point:
|X/Y/Z||Relative co-ordinates to the center of the laser system in the scanner's own co-ordinate frame.|
|Intensity||Strength of the laser return. A value between 0 and 65535 (0 = low).|
Measure of confidence in the data point, based on the detected data point intensity compared to the background intensity (noise).
The decoded X/Y/Z values are defined in the scanner's own co-ordinate frame, which is not the same as the standard frame commonly used in the hydrographic world.
Especially when the scanner is mounted differently on your underwater object: pitched backward, or pitched forward, or horizontally looking forward, etc., etc.
This makes it difficult to figure out the correct calibration mounting offsets in order to convert the values into the 'Qinsy' co-ordinate frame (where +X is starboard, +Y is bow, +Z is height).
See the Advanced section how to convert the scanner's own co-ordinate frame into the 'Qinsy' co-ordinate frame.
About Intensity and Quality
The Quality value is the Intensity value subtracted from the smallest value in the analysis window, which will be the background light level in most cases.
For example, in cloudy water the intensity might be bright, but quality is low. Therefore both figures can be used for validation to exclude noise.
See the Advanced section for more information about this
Internally the driver is treated as a multibeam system, creating 'multibeam' x/y/z observations, therefore you will find the laser system drivers under category type Multibeam Echosounders.
Edit System Wizard
- Add a Multibeam Echosounder system to your template setup and select from the list driver "Laser Scanning - Kraken SeaVision Subsea Scanner".
- The Port number should be set to the UDP port number the unit will send its messages to.
- Important are the Transducer Node location and Mounting Angles (offsets) on the second wizard page.
The exact values for the roll, pitch and heading offsets should be established with a calibration procedure.
Before such a calibration one should enter values as accurate as possible.
- Leave the maximum beams per ping value at 1300.
A higher value is allowed (e.g. 9999) but not a lower value.
This driver does not have any user-interface to control the system from within Qinsy (e.g. for starting and stopping the scanner).
Once the scanner is underwater it should stream the data straight away, so it is recommended to use an IO Alert Display, Raw Multibeam Display and Generic Display to see if data is coming in and is decoded correctly:
You can setup an IO alert to see if data is coming in via the UDP network, or not.
Use a Raw Multibeam Display to monitor e.g. the reported Intensity distribution.
This is a good indication to see if a target is being scanned or not: e.g. you'll get a huge distribution of low intensity values when only seawater is being scanned, and no targets.
Use a Generic Display when you want to monitor general information, like the current Ping Rate, the Number of Beams (hits) of the last profile (scan), the number of Beams Per Second, etc.
When the Status Flag value is 2 it means that the timestamp from the data is being used. If it is zero then the time of arrival is used.
Important is to see a low Ping Age value (around zero), especially when the Status Flag is 2, otherwise you may have a timing issue.
The driver does not have any user-interface to control the scanner with additional settings while scanning.
However, there are some command-line parameters which an advanced user may tweak that will affect the online behavior.
Control the Intensity
The driver will always receive for every profile the returns for all 2048 hits. Even when scanning no targets and only seawater.
So if you don't want to receive, accept and store noise, use a minimum intensity threshold. This will exclude all data points with a lower intensity value.
To exclude most of the noise you can safely use an intensity threshold value of 100. Real underwater objects (pipelines, templates, shipwrecks, etc.) will have a much higher intensity value, e.g. > 1000, up to 65535.
Cmd-line parameter: MIN_I=xxx, where xxx is the minimum threshold. By default it will be 400. If you omit this cmd-line parameter, it will be 5. If you set it to 0 (zero), then all points will be accepted.
Control the Quality
As mentioned above for the Intensity, the same applies for the reported Quality value. This will be a value between 0 and 255, but low values normally means no real data (noise, seawater).
Use a minimum Quality threshold. This will exclude all data points with a low quality value.
Cmd-line parameter: MIN_Q=xxx, where xxx is the minimum threshold. By default it will be 1. If you omit this cmd-line parameter, it will be 1. If you set it to 0 (zero), then all points will be accepted.
Control the default orientation
Use the following CASE-SENSITIVE cmd-line parameter to convert the LAS internal co-ordinate system to a more convenient co-ordinate system.
This is useful to determine the calibration mounting offsets. I.e. you can leave the Roll, Pitch and Heading offsets around zero, therefore values like +270, or -90 are not needed anymore.
|XYZ||+X||+Y||+Z||Default (Same as no cmd-line) - No conversion|
|XYz||+X||+Y||-Z||Note that the driver LAS parser swaps the Z, so use this to get exactly the co-ordinate system as defined by LAS|
|XZY||+X||+Z||+Y||When the unit is mounted Pitched Backward|
|XZy||+X||+Z||-Y||When the unit is mounted Pitched Forward|
|YZx||+Y||+Z||-X||When the unit is mounted Horizontal Forward looking|
How to Overrule these Parameters?
Qinsy v9.3 or newer
In order to overrule the default setting as mentioned above you may modify the executable_argument(s) in file DRIVERS.IO.json
- You can use a normal text editor like Notepad to edit.
- Copy the attached file to your Public Documents folder, subfolder \QPS\QINSy\Drivers.
For example: C:\Users\Public\Documents\QPS\QINSy\Drivers\DRIVERS.IO.json
- Be careful: only modify the text fields inside the "executable_arguments" brackets.
- When in doubt: please contact QPS to assist you.