Driver to decode laser data from a Velodyne VLP-16 laser scanner, a very small and quiet, cost-effective sensor ideal for applications with constrained form-factors and pricing demands.
Select this driver when you're using the VLP-16, the Puck or the Puck LITE. This driver should not be used for the Puck Hi-Res.
Laser class 1 is used by this scanner which is eye-safe.
|Driver||Velodyne VLP-16||Interface Type||Freebase/UDP/IP||Driver Class Type||Freebase|
|UTC Driver||Yes||Input / Output||Input||Executable||DrvLaser.exe VLP_16|
Data is always broadcast via UDP packets using a LAN network . It is advisable to use a fast (at least 100Mbit) network card, due to real-time scanning and the huge amount of data.
The maximum expected number of beams per second for the VLP-16 is about 300 000 (three hundred thousand).
The actual raw data stream is Velodyne's proprietary format. This document does not describe this format.
The VLP-16 has configured two UDP Ports in order to output data: only port 2368 is used by this driver, containing time-tagged laser firing data.
The other port 8308, with MEMS accelerometers' and gyros' values, is not used by this driver or Qinsy.
Your scanner comes with a calibration angular correction xml file, located on the scanner's CD and is most likely called VLP-16.xml.
Note that the name of the xml file may differ so in that case rename the file to VLP-16.xml. The Qinsy driver will only look for this file.
The default Puck Angular Correction file can also be downloaded from Velodyne's website.
Copy this file into the Qinsy program installation folder, subfolder XML (most likely something like C:\Program Files (x86)\QPS\Qinsy 9.4\XML)
For more information about this file see the 'Use Calibration Factors' comments in the Qinsy Online tab page.
Due to network characteristics in general, and because of latency inside the scanner, time stamping upon arrival will result in inaccurate and variable timing.
Therefore timing via Time Synchronization (formerly PPS) pulse from GPS is highly recommended.
This means that your laser unit must be interfaced to an external Time Synchronization pulse from a GNSS receiver and a UTC time-tag message from the same receiver.
With this scanner it can be done quick and easy, using the interface box that comes with your VLP-16:
It is important that Qinsy is also interfaced to a Time Synchronization system, so all systems will operate within the same time frame.
All communication to and from the laser unit goes via a LAN network which is accessible through the same interface box as used for the GNSS/Time Synchronization timing (see above).
The exact LAN IP address of the laser unit should be provided by the manufacturer or your re-seller, or it should be stated in the documentation that comes with your scanner. Normally Velodyne configures their laser units with IP address 192.168.1.201.
The LAN IP address of your computer's network should be in the same range, except for the last digit. This must be a unique number! In the example below the value 100 is used. Use for the subnet mask the values 255.255.255.0
- Windows 8:
Control Panel, Network and Sharing Center, Change adapter settings, Click right-mouse on Local Area Connection, Properties, Internet Protocol Version 4 (TCP/IPv4), Properties...
- Windows 10:
Click right-mouse on Start menu, Control Panel, Network and Internet, Network and Sharing Center, Change adapter settings, Click right-mouse on Local Area Connection, Properties, Internet Protocol Version 4 (TCP/IPv4), Properties...
It is recommended to check the network connection between your computer and the laser unit before commencing any scan operation. You may do this by using the ping command from the Windows Command Prompt:
Select Start from the Windows task bar, Run..., Cmd <Enter>, and 'ping' the IP address of your laser unit.
The network connection is okay when you receive a reply three times within a few milliseconds.
Web GUI Control
When there is a successful network connection, you could also use a standard web browser in order to communicate directly with the scanner and set some initial settings.
When you enter the IP address of the scanner in the address bar of the browser (most likely http://192.168.1.201/), the following page should appear:
- First important setting to check is that Laser is On .
- Secondly, this is the only place to set the spin rate (horizontal turns). Default Motor RPM is 600 (10 Hz), but any value between 300 (5 Hz) and 1200 (20 Hz) is allowed.
- Last thing to check is whether GPS/Timing is accepted by the scanner. In the bottom panel you should see your current geographical co-ordinates for the GPS Position. More important is that the PPS status is Locked .
Internally the driver is treated as a multibeam system, creating multibeam 'xyz' observations, therefore you will find the laser system drivers under category type Multibeam Echosounders.
('multibeam' versus 'laser scanning'-terminology: ping = scan = swath = line, footprint = pixel = pulse = return)
1. Edit System Wizard
Add a Multibeam Echosounder system to your template setup and select from the list driver "Laser Scanning - Velodyne VLP-16".
- The Port number should be 2368. The driver will receive all laser firing data packages via this unique port number. Notice that this scanner may also output other messages via port 8308, but none of these will be used by this driver.
- It is important to enter the same IP Address as the broadcast address of the laser scanner. This address will always be 192.168.1.201 for Velodyne units.
- Leave the Maximum update rate at zero
2. Multibeam Echosounder Parameters
Important are the Transducer Location (Node) 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.
It is important that in the online setup the correct Scanner Mounting is selected.
In that case you can leave the Roll, Pitch and Heading offsets around zero, you don't have to use values anymore like +270, or -90, etc.
- Leave the Max. beams per ping value at 9999.
The actual number of beams will be variable, and depends for example on the used on-line settings and on the targets being scanned.
Example Mobile Scanning Setup
In this example the unit is mounted on the rear of a car with the cable pointing downward and tilted 90 degrees in order to scan the road. So make sure to select in the online setup for the Scanner Mounting setting "Backward Tilted, Cable Down".
In that case the default alignment offsets will stay 0° (Roll, Pitch and Heading).
3. Echosounder Accuracy Parameters
- You may leave all values on the third wizard page at their defaults.
4. Multibeam Echosounder Corrections
- You may leave all values on the last wizard page at their defaults.
The very first time Windows may pop up a security message:
Just enable all check-boxes!
If you forgot to do this, or if you are not sure if this has been done, you may want to follow the steps as described in the Additional Info or Trouble Shooting section about Windows firewall.
Hardly any other control is needed for this type of laser scanner. Once you power it up, it starts rotating, scanning and broadcasting the data automatically.
Use the Web GUI to set the standard settings (e.g. spin rate), for some additional other control settings you can use the Qinsy Controller:
Select Echosounder Settings, click on the Laser System icon, and select the 'Control' tab page.
In order to communicate with the scanner, the driver must make a network connection first. This attempt to connect will always be done automatically when going online.
Further note that the driver will automatically disconnect when going offline, so there is no need to do that manually, although you may do so.
This is a very important setting and it informs the driver how the scanner is physically mounted on the vehicle, with respect to its heading.
More mounting scenarios are predefined and may be selected. Please contact QPS in case your setup is not listed.
Note for NORBIT iLiDAR users
The integrated scanner inside the Norbit iLiDAR turnkey solution has its 'Cable Down'.
Set to 1 to accept all scans. In this case the horizontal angle between two consecutive scans will be 0.16°
To use every n-th scan only, set the interval greater than 1.
Note that excluded data due to this setting will not be recorded!
|Use Calibration Factors||
The calibration correction xml file, VLP16_db.xml, is unique for each unit and contains for every 16 lasers the factory calibrated vertical angle.
Most sensors will be shipped with just the default angles inside the xml file so in this case it doesn't matter to use it or not.
Note that data can not be corrected afterwards, in case no or wrong calibration angles were used.
|Vertical Area Selection||
Physical scan area comprises 16 lasers and yields vertical 30 degrees (in case the scanner is mounted normally on a horizontal surface)
For example, laser 1 is looking downwards with an angle of -15°, laser 9 (the nadir) is looking forward (0°) and laser 16 is looking upwards with an angle of +15°
Selection here will most likely depend on how you are using the scanner, statically or dynamically:
Blocked data due to this setting will not be recorded!
|Horizontal Area Selection||
A full circle scan goes from 0 to 360 degrees, with an angle step of 0.16°.
0 degrees means forward, 90 degrees means right (starboard side), 180 degrees looking backward, which is the cable direction, 270 means left (port side).
The Horizontal Area selection will be corrected for the selected Scanner Mounting. I.e. that when you have selected the correct scanner mounting, then Starboard will be starboard, Port will be port, etc.
Note that blocked data due to this setting will not be recorded!
Set the minimum required range in meters. Valid values: 1 to 100 meters.
Using this setting is recommended, but be careful: Blocked data due to this setting (i.e. all returns less than or equal to this range) will not be recorded!
Set the maximum allowed range in meters. Valid values: 1 to 100 meters.
Using this setting is recommended, but be careful: Blocked data due to this setting (i.e. all returns larger than this range) will not be recorded!
Set the minimum required intensity (signal strength). Valid values: 0 to 255.
Note that blocked data due to this setting (i.e. all returns lower than this intensity) will not be recorded!
Set the maximum allowed intensity (signal strength). Valid values: 0 to 255.
Note that blocked data due to this setting (i.e. all returns higher than this intensity) will not be recorded!
|Store Laser Location||If enabled, an additional pixel with zero range will be added to each line scan, in order to indicate the exact laser scanner location in the resulting point cloud.
This extra pixel will always have beam number 0, and its intensity and quality values will be zero.
This setting is highly recommended, in order to use exact time stamping of the laser data.
When enabled, the laser unit must receive a valid PPS/Time Synchronization pulse from an external GNSS receiver and UTC time-tag message. See Timing for more information.
Note that this option is disabled while connected, so change setting Connected first from Yes to No in order to change it.
Enter a fixed latency value in milliseconds. When PPS/Time Synchronization is not used, time stamping of the data is done when the data packet is received at the UDP port.
A latency can be provided by the manufacturer, or you may establish a value using a latency calibration procedure.
This option is only available when PPS is not used for timing.
|Session Setup Format Specifier||
This format specifier can be used in combination with the Controller Session Storage Format Specifier #E.
The following specifiers are supported (plus your own free text):
#N: Name of the system (as defined in the template database setup)
The format specifiers are case-sensitive. If you use lower-case then only a value or index number will be displayed.
So if you use #E in the Session Storage Setup the filename of the newly recorded database will automatically contain the scanner settings that you were using.
|Capture Raw Data||
Enable this option if you want to store the raw binary data stream coming straight from the unit to a log file on disk.
The Generic Display can be used to validate the laser data integrity. It shows the numerical values for the number of beams (pixels) being scanned per ping (scan), the number of beams being scanned per second, the ping rate (scan rate in Hz), range values, etc.
Important value to monitor is the Ping Age , especially when setting 'Use PPS' is enabled. The Ping Age is the difference between the current computer time and the time of the last received data package. This value should be small, around zero!
Notice that a GPS/PPS may be connected via the interface box to the laser unit, but there is no feedback whether the unit has accepted pulse and/or time-tag.
For example, if you see a very high Ping Age value (+ve or -ve), then this is a severe indication that the initial timing inside the laser unit is wrong.
The Beam Quality value contains the actual beam number (1 - 16), so it has nothing to do with any quality or intensity value.
The Status Flag value indicates whether you are using the calibrated vertical angles from the external angular correction xml file or not and whether PPS/Time Synchronization is used or not.
|Status Flag Value||Use PPS||Use Calibration Factors|
You may use the attached example file as an example: Copy this layout (Use 'Save Link As...') to your current Project's Settings\Display folder and open it using a new Generic Display.
You only have to select the correct laser system as defined in your template setup (Select Edit, Layout…, go to RAW DATA, Multibeam Echosounder (2), and select your laser system for both parent items).
Raw Multibeam Display
Open View Properties and set the Backscatter Intensity range between 0 and 255.
Enable Waterfall scrolling, and set both scroll values to 0 (zero) pixels.
If you want to see the intensity while online, open View Properties and set the Color Coding to Backscatter.
The VLP-16 has the following features and limitations:
- The vertical angle resolution between each of the 16 lasers is 2.0° and this means a vertical field of view of 30° is available.
- The horizontal angle resolution goes from 0.1° to 0.4°.
- Spin rate of the unit can be 5 Hz (300 RPM) to 20 Hz (1200 RPM).
- Maximum deliverable of approximately 300 thousand measurements / second.
- Minimum range 1 meter. You may receive returns from objects closer by, but the manufacturer recommends not to use these.
- Maximum range 100 meters. You may receive returns from further away than 100 meters, but the manufacturer recommends not to use these.
- The decoded intensity will be a value between 0 and 255 and depends on the target's surface being hit.
The intensity will be the calibrated reflectivity: Diffuse reflectors (natural objects) will show values between 0 and 100 (for 0% - 100% reflectivity) and retro-reflectors (street signs, lane markers, license plates, etc) will show values between 101 and 255.
'Ghost' returns will normally have a value of 0 or 1.
Due to the UDP broadcast characteristic of the Velodyne a ping (or full scan) does not contain all the beams from one full rotation. A ping in Qinsy will be filled with all laser firing data received from ten consecutive UDP packets.
One packet contains 12 times data for all 16 lasers (with a horizontal increment of 0.16°), so a Qinsy ping contains a maximum of 3840 beams.
Note that the beam quality value is 'mis-used' in order to store the real beam number (1 - 16). You may color-code on 'quality' in the Validator for an indication of which beams have been used.
You have made a successful network connection with Qinsy but no laser data is coming in.
You open the scanner's IP address with a web browser and you'll see normal web interface: the GPS Position field and PPS may be updated, but with Qinsy online no laser data is coming in.
You open a sensors stream with VeloView (Velodyne's own software) but no laser data is visible.
This all may well be caused by the scanner being powered with a too low voltage, in that case: please check the power of the scanner!
It is important to prepare the project prior to the start of the scanning by optimizing all parameters to meet the necessary requirements:
Select the right Vertical and/or Horizontal Area selection and/or range blocking in order to decrease the number of expected points per second.
Due to the enormous amount of data to be expected while scanning and recording, it is recommended to keep the system overhead as low as possible.
Here you'll find some tips and tricks in order to fine-tune your setup.
However, these are not strict rules, because each project is different and depends on the current situation and hardware being used. Your goal should be to keep your system CPU usage as low as possible.
Make use of Solid State Drive (SSD), or fast SATA hard drive (7200 - 10000 rpm).
Your network card speed should never be lower than the scanner's network speed. Use a network card that can be configured for 100Mbit or 1Gbit speed. Do not use USB Networking Adapters, because this may result in loss of data when huge amounts of data are being broadcast.
Disable Virus Scanner, or at least the setting 'Scan Files when Writing/Reading to/from disk'.
Task Manager CPU
General Task Manager CPU Usage should be less than 50%. CPU load of each display must be less than 10-15%.
Make sure that the 'Working Set (Memory)' column for process Multibeamer.exe and/or DrvResultOut.exe is not constantly increasing, especially during recording.
Laser Device Settings
During project preparation, establish the optimum settings in order to achieve the required results.
The most benefit you will gain from setting the Scan Speed, Scan Rate, Scan Resolution, Angle Resolution, Vertical Area Selection, Scan Area Selection and Sector Reduction as well as possible.
Especially the Vertical or Scan Area Selection is very important. Make use of Mask schemes to define areas which you don't want to scan.
Raw Multibeam Display
Open only one Raw Multibeam Display.
Open only one Navigation Display.
|3D Point Cloud Display||
It is not recommended to use a 3D Point Cloud Display.
If you do so, make sure your hardware contains a high-spec video card.
Under Sensor settings set the Time window setting to a short period, e.g. 10 sec
- Sounding Grid
- Dynamic Surface
Storage to a Sounding Grid is not recommended, and should be purely for display purposes: e.g. for checking the scan coverage or for showing the 95% Confidence Level statistics.
If you do want to see the scan coverage then it is advisable to store to a sounding grid and not to the dynamic surface
Do not use a small cell-size, preferably not less than 1.0 meter.
If you notice in the Navigation Display that the real-time sounding grid is drawn/updated with a delay, then please increase the cell-size or disable the storage completely.
Offline (Replay) there are no limitations and you may use small cell-sizes, e.g. 0.10 meter.
In Replay there are no limitations as mentioned above: use as many displays as you like, store to sounding grids with small cell-sizes, update the dynamic surface, etc.
All this may only affect the replay speed, but the data integrity of your final DTM processing files should be fine.
|Controller Computation Setup||
While working online, disabling the laser system in your Computation Setup will have the most effect on the performance
Footprints will not be geo-referenced, nor corrected for motion, heading or timing in real-time. This will save a tremendous amount of CPU power and memory usage.
This tip allows you to get the most out of your scanner: maximum scanning speed and maximum scanning rate, without the risk of losing scans due to performance issues.
To create a final DTM and/or Sounding Grid file you need to Replay the recorded databases afterwards.
Real-time Performance Monitoring
Daily Laser Log File
All user actions, system information and reported errors are logged in a daily laser log file which can be found in the current project's LogFiles subfolder.
The filename convention for this ASCII log-file is <System Name> DD-MM-YYYY.log, so every day there will be a new one.
Note that all time stamps in this log file are by default in UTC. An advanced user may change this to local time zone (LTZ) by changing the registry key:
HKEY_CURRENT_USER\Software\QPS\QINSy\8.0\Drivers\DrvLaser\Settings\TimeLogFileUtc value from 1 to 0.