This is a full guide for using OxTS Georeferencer to produce pointclouds of your surveys from recording your data to viewing your pointcloud.
|Georeferencer 1.0||January 2020||22.214.171.124193||VLP16 only georeferencing and BC|
|Georeferencer 1.2||November 2020||126.96.36.199||Ouster, Velodyne and Hesai models. LIP BC, error calculation.|
|Georeferencer 1.4||June 2021||21.06.04.0||UI improvements, time cropping, all Hesai models.|
|Georeferencer 1.5||September 2021||-||Livox LiDAR models, HDL32, processing improvements, bug fixes.|
|Georeferencer 2.0||~Start of 2022||-||
-Significant improvements to boresight and georeferencing functionality. Bug fixes, minor improvements.
-LLA coordinates. Real time georeferencing viewer.
You can view the internal version numbering at the bottom left corner of the OxTS Georeferencer user interface. The latest version is available for download on the support site page and does not need to be purchased. Sample data is also available to test with.
This article applies for the latest released version of Georeferencer which is OxTS Georeferencer 1.5. You should also have WinPcap installed so that you can read and process PCAP files; you will have this if you have downloaded WireShark or if you select the install option with the Georeferencer installer wizard.
- Velodyne VLP16 Puck, Puck LITE*, VLP32C (not in dual return), VLP32MR, VLS128 'Alpha Prime' (not in dual return)*. HDL32* is included in GR1.5.
- Ouster OS0, 1, 2 in all laser numbers and all laser distributions for gen 2 models*. These require the newest Ouster firmware. The OS1-64 has been tested by OxTS, other models are in beta. OS1-16.
- Hesai 40P. All further Hesai models will be compatible in Georeferencer 1.4*. The XT32 is tested.
- Livox Avia, Mid40 and Mid70*, Horizon* and Tele15* models are included in GR1.5.
*These models have been included in Georeferencer's coding but not tested by us, we therefore label them as beta and will work with users to test them. Although these should work, we do not guarantee it, but will fix any issues as soon as we have data to inspect.
For hardware integrations consult other support guides:
- Follow this for Hardware integration guide for VLP-16
- Follow this for Hardware integration guide for Ouster LiDAR
- Follow this for Hardware integration guide for Hesai LiDAR
- Follow this for Hardware integration guide for Livox LiDAR
Click the link here to watch a Georeferencer Tutorial video.
- Set up your INS and LiDAR devices in your vehicle. Connecting them to a power source and to a computer if you are using one and if so make sure your IP configurations are correct. It is good practice to have your folders set up for different surveys and tests beforehand.
- Measure precisely the angles (yaw, pitch and roll) and distances (x, y and z) between the INS and the LiDAR, using the IMU measurement frame as your origin. Ideally take photos for reference later.
- Configure your INS unit. Accurately measure the required inputs and ensure the device is appropriately outputting PPS (or PTP) and NMEA (over serial or ethernet as required) and has local coordinates enabled.
- Check your data streams and logging if you are viewing them in real time. It is most helpful to check if possible that the LiDAR is receiving NMEA and PPS (or PTP time-syncing).
- Complete your initialisation and warm-up run. To get the best output from your unit you can read here. You can complete your warmup during the boresight procedure.
- Complete your boresighting procedure if you are doing one. This can be done in the same or a different file to the survey.
- Complete your survey run, check again beforehand that your data is logging. Do another warm-up at the end of the survey if you will use combined processing; you can turn the LiDAR logging off for this.
- FTP to your INS device and retrieve the RD (and LCOM) files from your runs.
- Process your raw data file how you want it, with combined processing and RINEX files using NAVsolve to produce your NCOM file. Ensure Local Coordinates are enabled.
- Create your LIP and LIR files from your measurements. Use a boresighted LIR file if you made one.
- Drag your NCOM, LiDAR, LIP, LIR and VAT files into Georeferencer and check the journey path in the window.
- Check in the Hardware tab that your configuration is correct and make appropriate adjustments. Depending on the LiDAR the reality of rotations may appear different than in the tab, check the LiDAR manual to be sure. This is because the LiDAR used in the tab is a Velodyne LiDAR and this differs from others.
- Run Georeferencing to produce your pointcloud.
Short gif of georeferencing process.
This section is a brief guide to setting up your equipment to perform a LiDAR survey. For hardware integrations please see the articles linked above or look on our main website for integration guides for Velodyne, Ouster and Hesai LiDAR. OxTS offers multiple cable types for the xNAV550 only with LiDAR adapter interfaces for use with Velodyne LiDAR, these can be seen in the manual.
You will need to place the INS and LiDAR device on or in your vehicle with the LiDAR having an appropriate view. It is very important at this stage that you make sure both devices are secure and do not move during the survey. It is okay if the LiDAR is viewing some of the vehicle, this can be removed in processing later. The next step is to measure the positional and angular offset.
Relative measurements: When you set up your configuration you will need to measure the relative distance between the INS measurement point and the LiDAR optical centre. Make sure to do this accurately and that you measure from the measurement point of each device not just the centre of their housings. These measurements include the XYZ linear displacement and also their relative roll, pitch and yaw. This is in addition to the INS-vehicle configuration measurements that NAVconfig requires. These measurements won't be needed during set up but note them down for Georeferencer later. If you want centimetre accuracy you will have to ensure the XYZ displacement is accurate to better than a centimetre and your angles to points of a degree unless you are boresighting which will take of this for you.
Pay close attention to the instructions later on for inputting the correct angle and displacement values.
It is particularly convenient to use a fixed mounting if you want to take many surveys and to be more accurate in your measurements. If you have a standard, repeatable configuration your life will be much easier as you only need to take configuration measurements once and the setup only needs to be boresighted once. CAD files of the LiDAR will be available from the manufacturer and of the INS from OxTS. However, with our boresighting calibration you can work much more flexibly if required.
A mount that OxTS uses internally. It has a fixed relative position and orientation and holds both devices securely to the vehicle. On the right is a view of the setup that can be seen in Georeferencer 1.2.
There are many different ways of setting up your cable connections depending on your preferences. Below, on the left, is a diagram of the setup for taking data using a Velodyne LiDAR. On the right is a selection of choices for viewing data. These are discussed more thoroughly in the next section. You can choose setup 1 or 2 to view both streams of data in real time or setup 3 to see only one stream of data or to setup the INS. Your computer may require USB-ethernet adapters. Bear in mind that if you are using PTP for time-syncing the switch also should be PTP-compatible.
Diagram of a device setup. On the left, the setup of cables to run the devices and log data. On the right, setup for viewing data in real time.
IP configuration: If you are viewing data in real time you will likely need to configure your laptop's IP addresses for the incoming INS and LiDAR data. If you have streams of data coming in from multiple devices you will have to make sure your PC is configured to be on the correct IP range as each one. This can easily be done by right-clicking on the internet icon in the lower right on the taskbar for a Windows 10 PC and choosing 'Open Network and Internet Settings' then 'Change adapter options'. Right click on the ethernet connection bringing data in and choose 'Properties'. Click on 'Internet Protocol Version 4 (TCP/IPv4)' and then click 'Properties'. Choose 'Use the following IP address' and input an IP address on the correct range of one of the devices. For example for an xNAV550 with IP address 192.168.0.100 you can choose 192.168.0.52. Then click on 'Advanced' and add further IP addresses on the same ranges as other devices for example for a LiDAR with IP address 188.8.131.52 you can use 184.108.40.206. Having done this your PC will be able to handle viewing the INS in NAVconfig/NAVdisplay and the LiDAR in whichever software/web interface it uses.
NAVconfig: You will have to put in all the necessary measurements into NAVconfig > Hardware Setup. In NAVconfig > Hardware Setup > LiDAR Scanner, select your scanner type and, if using onboard LiDAR logging, tick the boxes for logging data and logging telemetry. For onboard logging, you must first have the feature code for this enabled and second you must ensure that the data rate from the LiDAR you are using does not saturate the CPU; typically this applies for LiDAR with over 16 lasers. Version 3 OxTS INS devices can store up to 32GB of raw data (INS + LiDAR). Files logged onboard are saved as LCOM format. You then have a choice of sending your NMEA data over ethernet or over serial (see Figure 3). NMEA data can be sent over an ethernet connection using a connector, a switch or a network bridge. The default ports should not need to be altered and are correct for the VLP16. If you are sending data over ethernet you will need to put the IP address of the LiDAR device in, alternatively you can use the broadcast IP address 255.255.255.255 but this may unnecessarily saturate your network. Alternatively PPS and NMEA can be configured in the Interfaces tab of NAVconfig.
Selecting how NMEA data is transferred from the xNAV to the VLP (right highlighted box). Selected scanner type, inputting IP address and data logging settings (left box).
In NAVconfig > Environment you will need to select ‘Enable local coordinates’ and choose your origin (see Figure 4). This can be done in post-processing in NAVsolve > Process > Local coordinates or by creating an LRF file manually. Doing it before your survey will simplify the processing later.
Enabling local coordinates in NAVconfig, you can then choose your origin.
If you are not using NAVsuite 2.8 and you choose ‘Send NMEA over serial 1’ as an option you will need to then go to NAVconfig > Interfaces > Serial 1 Output and ensure that GPGGA and GPHDT are switched off.
PTP: To use PTP you will have to follow the instructions given in the PTP quick start guide. You will also need to make sure the PTP messages are in the correct epoch. This can be done in the setting up stage in NAVconfig or in post-processing with Georeferencer. If using NAVconfig, go to the Advanced Tools and then Commands tab and add in a command to give the correct offset. For example, if you are using a Hesai LiDAR, you can check the manual for the relevant epoch which is UTC and apply the command that transforms the default GPS epoch to the UTC epoch which is '-ptp_custom_offset_315964782'. The same transformation can be done in post-processing in Georeferencer. Georeferencer uses nanosecond transformations instead of seconds so 9 zeros have to be added to the time. For this same offset, use the advanced command 'lidar_time_offset=315964782000000000'.
PPS and NMEA: Now is also a good time to ensure that the hardware is working as expected. Particularly you should check that the LiDAR and INS are powered on as expected and data is sensible. Another good sanity check often is to probe the LiDAR to check if it is receiving PPS and NMEA messages. This can often be done in a web interface by typing the LiDAR IP address into a web browser or in the case of the Ouster using TCP commands (get_time_info). For example, if using a Velodyne product, you can use the Velodyne web interface to make some checks. Putting the IP address of the VLP into a web browser will bring up the web interface (see Figure 5), you can check there that the PPS is locked and that there is a real time GPS position (the LiDAR is receiving NMEA data). Additionally, you can open VeloView to see the LiDAR data in real time.
The Velodyne web user interface is accessed by typing the IP address into a web browser tab. Check that PPS is 'Locked' and the GPS Position is updating in real time (and so the LiDAR is receiving NMEA).
Data can always be viewed coming in with software such as WireShark and this is another good sanity check and troubleshooter to see that the correct data from the correct IP addresses is being received.
TCP commands: With a number of LiDAR you have to use TCP commands to interact with them. These might be used to retrieve a JSON file from an Ouster unit or a calibration file from a Hesai unit for example. The JSON file is essential for processing with Ouster and the calibration file improves pointcloud accuracy. You can send TCP commands by downloading 'NMAP software and then in Powershell typing the command. For Ouster this can be done by: 'ncat <IP address of unit> <port number mentioned in manual>' and then the command that is mentioned in the manual. For example, a useful command for checking that NMEA messages are being received correctly is 'get_time_info'. 'get_beam_intrinsics' will retrieve the azimuths and elevations that are needed in a JSON format to process with. Importantly, you cannot access the LiDAR on any other interface such as WireShark or OusterStudio when sending commands.
It is encouraged that you check that the correct data is being logged and to have a trial before starting your survey. It is also recommended that you have folders set up for putting data into as it comes in.
Initialisation: It is important that your INS is initialised while it is taking data, this is because initialisation is used as part of the synchronisation check between the LiDAR and NCOM data, NMEA messages also have a validity flag that is disabled for uninitialised data. Initialisation is when your INS device locks onto its location and heading. You are able to view in NAVdisplay if your system is initialised or is ready for initialisation. You do not have to begin your survey initialised but at least one third of the time your data file is recording you should be initialised. In NAVconfig > Environment you can set your initialisation settings to use static (requires dual antenna) or dynamic initialisation. For UAV use you will likely need static whereas for mobile use it is recommended that you select dynamic and ensure that you can drive in a straight line to initialise the device.
In the bottom right of the default template the 'NCOM Navigation Status' indicates if the system has been initialised.
Warm up: It is most important that a suitable warmup is performed to get the device into spec. This takes about 10 minutes following initialisation and consists of doing a variety of manoeuvers to get the device's Kalman filter warmed up. To get the best output from your unit you can read here. Ideally you would want a long, exhaustive warmup and to make sure your setup is known as tightly as possible for the very best possible survey data. You can follow NAVdisplay to monitor the accuracies the INS is reporting.
LCOM logging: LCOM is essentially PCAP data recorded directly onto the INS, this is possible for 16 laser LiDARs or less due to the data rate. While taking your data, you may wish to break up your survey into multiple runs. This can be done easily using NAVdisplay. If you are viewing your INS data in real time then you can click in the command box at the bottom of NAVdisplay and type "!log log on" and "!log log off" and then click send to stop and start data logging if using onboard logging. The RD file will continue to log as it runs in a separate process of the firmware but the LCOM will stop, you can view this happening by using an FTP connection and seeing that the file size does not grow after refreshing. You can use the same RD file for multiple surveys later. LCOM files are identical to PCAP except that ethernet headers are not saved.
PCAP logging: WireShark is particularly useful for recording data. If using WireShark, select the incoming stream of data (e.g. Ethernet 2) and you can view the LiDAR and INS data coming in. Right click the IP address of the LiDAR and then choose filter on selected to see only the LiDAR data. Stop and start the data stream as you wish to survey and save these as PCAP files (WireShark's default file type is PCAPNG).
- We recommend that you use WireShark for Velodyne so that all packets including the NMEA are included.
- If using Ouster LiDAR, packets that come into WireShark need to be reconstructed. This can be done but takes much effort and so it is recommended that OusterStudio is used for recording Ouster data.
- For Hesai LiDAR we recommend PandarView for recording data.
- For Livox LiDAR, you will need to open Livox Viewer and press 'play' so that packets are coming through. You will then be able to see packets coming through on WireShark which you can record a PCAP on.
A single RD file is usually sufficient for the whole surveying day with multiple surveying files taken at suitable times due to relative file sizes.
If you open OxTS Georeferencer you will see that you require 5 files in the Files tab. These are an NCOM file, a LiDAR and an LIP, LIR and VAT file (see Figure 7). All of these files are simple to obtain after completing your survey, they can also be available during your survey. You can simply drag your files from File Explorer into Georeferencer. Before processing you will then have to select from the drop-down box which LiDAR it was you used.
The Files tab in Georeferencer 1.4 showing your 5 files and the NCOM journey on Bing maps.
You will need information about your vehicle trajectory in order to georeference. This will be in an NCOM file. To obtain your NCOM file you will need to retrieve your raw data file from the INS and then process it into an NCOM. You can FTP to the INS via an ethernet connection and download any files you need, this can be done with File Explorer or Filezilla and you can then download the files to your computer. In File Explorer type ftp://192.168.1.xxx where the x's are the IP address of the INS (see Figure 8). The time that the data log started is recorded in the name of the file. When you have the RD file you will need to process it, this is done using our NAVsolve software and you can find a guide for processing your RD file here.
Ensure when processing the RD into an NCOM that local coordinates are enabled. This can be done in NAVconfig or in NAVsolve in Process > Local Coordinates. Check in NAVgraph that the data appears as it should, you can check the pitch and position accuracies to see if the device was in spec. Ensure also that your local coordinates are sensible and are representative of where you surveyed, it is possible that 0, 0, 0 has been selected which will not give the best results.
Using an FTP connection (ftp://192.168.1.13) to the INS to retrieve the two most recent files in its data. You can use an FTP connection in real time to check that the INS is logging the RD and LCOM file by refreshing the File Explorer window and viewing the file size. The highlighted RD file was created on the 12th February 2020 (20/02/12) at 15:24 as seen in its filename.
You might find that you want to use a cropped NCOM file to make the workflow easier. This can be done easily in NAVgraph.
- Open the NCOM file in NAVgraph
- Press 'R' and select the region of the NCOM you wish to crop out. The region will be opened in another tab.
- In this tab, right-click and select 'Export' and then save it as a binary file format. This will save an NCOM file of only the region you selected.
The second file you need is a LiDAR file, this can be LCOM or PCAP. An LCOM file can be found on the INS via an FTP connection if you set up your devices for this. If you didn't setup your devices to record LCOM then you will have recorded a PCAP during the survey run via some software like Wireshark or Veloview. You will need to take this file from where you saved it and drag it into OxTS Georeferencer.
The first check that OxTS Georeferencer makes is that the LiDAR data is PPS synchronized and has NMEA data, this will depend on if you have set up the device connections correctly. If the data passes this check you should see a tick. If the file fails synchronization, consider your setup again and check any connections and network configurations you have, you should be able to do this in real time (see above sections). Remember that the INS must be initialised for the LiDAR log to have the required synchronisation. To be able to process your pointcloud the NCOM and LiDAR data must align in time as well. Opening an NCOM in OxTS Georeferencer will show your journey route overlaid on Bing maps to help you check which survey the NCOM corresponds to. A pointcloud will be created for the time that the LiDAR and INS data overlap.
The VAT file is the angular configuration of the INS with respect to the vehicle frame. You must put in some preliminary measurements for this when setting up in NAVconfig but the system will intelligently improve the angles throughout the journey. You therefore do not have to make a VAT file yourself. After processing your raw data file the VAT file will be available in the "Process_..." folder or the "ConfigurationFromRawData" folder created by NAVsolve. The VAT file is a simple text file with a .vat extension.
When you input your initial measurements for the VAT in NAVconfig, you will likely be measuring to the nearest 5°. However, these angles are very important for high precision pointclouds and therefore need to be known to points of a degree. The INS will intelligently improve the angles to this degree but you must ensure you use the improved measurements.
LIP and LIR
The LIP file is the positional configuration of the LiDAR with respect to the INS frame. This is the x, y and z displacement from the INS measurement point to the LiDAR device, each of these measurements is on their own respective line in a simple text file with an .lip extension. You can create an LIP file by clicking on the LIP plus icon in Georeferencer and then input the numbers in the Hardware Configuration tab. You should have measured these while setting up and they should be as accurate as possible. A feature of the boresight calibration that is in beta is the LIP calibration. This will calibrate the LIP values. We recommend that you calibrate the LIR values and then the LIP values if using this feature. The format of the file is:
x (yaw) measurement
y (pitch) measurement
z (roll) measurement
1 or 0 (indicates if data has been calibrated)
Screenshot of Georeferencer's Hardware Configuration tab.
Make sure that the displacements are measured form the measurement point of the IMU (this is shown on the INS exterior) and not simply the centre of the device.
The LIR file is the angular configuration of the LiDAR with respect to the INS frame. This is the relative yaw, pitch and roll displacement between the INS measurement axes and the LiDAR device axes (x, y, z), each of these measurements is on their own respective line in a simple text file with an .lir extension. You can create an LIR file by clicking on the LIR plus icon in Georeferencer just like the LIP.
Measure the angles as best you can between the orthogonal axes of the LiDAR and the INS. The INS axes are printed on the device and shown in Georeferencer. The axes for the LiDAR device will be shown in the user manual and they are typically different for each LiDAR. Ideally take photographs of your setup to troubleshoot this process especially if you want support from OxTS. If you are using any LiDAR in Georeferencer 1.4 then you will be able to see a 3D model of your LiDAR with the correctly oriented axes in the viewer. Simply check that the angles are correct and if they are they are off by some degrees you can use the boresight calibration to fix the configuration. You can also view the INS and LiDAR configuration as it is oriented on the vehicle you are using.
If you happen to be using a LiDAR that is not supported by a 3D model in Georeferencer (e.g Livox) then you can use a blue cube model that shows the INS axes on it. Simply rotate the axes to where they are in relation to the INS by checking how they are oriented in the LiDAR manual. For example:
Screenshots from the Hesai 40P and Livox Avia manuals.
The best way to do this is to make the angles between INS and LiDAR multiples of 90 or close to it. You can then make sure that the axes in the hardware tab on the LiDAR are where they should be. You will likely have to work out the correct combinations of rotations to get the correct setup, do this by performing each rotation one after the other: yaw, pitch and roll.
Example of determining the LIR for a Livox setup using the blue cube model.
- Check the manual for the LiDAR unit axes and visualise how these relate to the INS axes. For example, the y axis of the VLP16 points the opposite direction of the cable and the z axis points up.
- Work out the correct combination of rotation to rotate the axes of the cube into the correct LiDAR axes. To begin with a 0, 0, 0 LIR corresponds to having the same axes as the INS but we need to rotate the axes to reproduce the image on the right above.
- This can be done by applying first a 180 yaw rotation followed a 90 pitch rotation and a 90 roll rotation so an LIR of 180, 90, 90 is used in Georeferencer.
You can make estimations for the correct axes beforehand and then edit them in the Hardware tab of Georeferencer where you can view the configuration. In addition, if you have done a boresighting run, make sure you use the boresighted LIR values. A boresighted LIR file will have a flag value of '1' on a fourth line to signify it is optimised.
Example LIR, LIP and VAT files are available at the bottom of the page.
In the Files tab you can create the LIP and LIR files by clicking the plus icon. The files are then edited and viewed using the Hardware Configuration tab.
The hardware tab allows you to view your configuration and make alterations to the LIP and LIR files. The above compares the view from previous versions of Georeferencer to the new version (bottom) for the same setup.
If using an Ouster LiDAR then you will need to input a JSON file that you've taken from the unit. This can be done easily using OusterStudio and choosing the second icon down on the left. Save the JSON file in the same folder as the PCAP with the same name. Alternatively, use the TCP command get_beam_intrinsics and put the the output into a JSON file format.
Boresighting is OxTS’s in-built calibration method. When you make your angular offset measurements they can be quite difficult to make accurately. A small angular error can make a large difference to a pointcloud and significantly lower the quality of your survey. We recommend you boresight your configuration before carrying out a survey; but once a setup is boresighted it will not need to be boresighted again. Boresighting will make your LIR and LIP file much more accurate and prevent blurred images or ‘double vision’ that may occur. A guide for boresighting can be viewed here.
Boresighting Reflectivity: The reflectivity threshold ought to be set to a value that will include only the boresighting targets and no other points. For most LiDAR this is calibrated to be around 100. This can safely be increased to say 150 should you see too many non-target points. To see what values of reflectivity points have, georeference your pointcloud and heck the 'Intensity' field. Most ordinary points will not have intensities over 40.
Boresighting Options where you can select calibration type.
In the Boresight Options within the Processing Options section of Georeferencer you can choose LIR optimization, LIP optimization or both. LIR calibration will calibrate the angles in your setup and is very robust. LIP calibration is in beta mode and will be improved in following versions of Georeferencer. LIP calibration works very well in some cases and in some cases it does not work depending on the quality of the georeferenced data. We recommend that you calibrate the LIR only to begin with and if necessary then you the LIP only calibration.
Example comparison of an unboresighted (left) and boresighted (right) LIR and LIP (orientation) file. The calibration is able to refine the orientation much finer than it is possible to do by sight.
Example of a pointcloud before (left) and after (right) boresighting.
An article on using advanced commands in Georeferencer can be viewed here. To quickly view advanced commands in Georeferencer you can upload some files and then type in an invalid advanced command and click 'Run Georeferencing'.
There are no options in Georeferencer currently for outputting global coordinates in the pointclouds. All pointclouds are given in local coordinates with a global coordinate origin. However, global coordinates are retrievable. For using a pointcloud with global coordinates, please see this article Global coordinates with Georeferencer.
Range: A useful feature for different applications is the ability to choose the distance range of points that OxTS Georeferencer will turn into a pointcloud. This is done by changing the minimum and maximum parameters under 'Range Between which points will be written (m):' section in Files > Processing Options. If you want to only see a road for example and not surroundings far away then you can restrict the range to 0-10m. If you wanted to only see over a certain range, in some geographical application for example, you can set the range to 10-100m. If the LiDAR had some part of the vehicle visible in its field of view then put a minimum distance of two meters so the vehicle is not seen throughout the pointcloud.
Use only valid NMEA: This toggle option allows you to choose between processing only valid NMEA messages or all NMEA messages regardless of their flagged validity. You may unclick this box if you forgot to do an initialisation at the start of your dataset but want to process the data anyway. (This is only available in Georeferencer 1.4 onwards).
Start and end times: Georeferencer shows an overlap of the LiDAR and NCOM data times. You can choose a section of this to process and the trajectory between those times will be shown on the Bing map. Simply drag the bars to border your desired section. (This is only available in Georeferencer 1.4 onwards).
Reflectivity: Other useful options include changing the reflectivity threshold and the number of iterations that the boresight procedure goes through. If boresighting does not appear to work or it only works in one or two axes then increasing the number of iterations the software makes on the data can often fix the problem. The reflectivity threshold is perfect for troubleshooting if you do a boresight run and want to know why something isn't correct. Increasing this to 100 for a Velodyne for example will give only the targets in a pointcloud only a few hundred kilobytes.
Livox LiDAR must use 150 for the reflectivity threshold.
Many of the advanced settings are achievable in pointcloud post-processing software but due to the large file size it is often more useful to do it during the creation of the pointcloud.
PTP Time Offset: A time offset might have to be applied to the LiDAR time packet data to work with the navigation data when using PTP. This is added by an advanced command. Use the 'lidar_time_offset=x' advanced command to add x seconds to the time packets of the LiDAR data. This can be used if the correct PTP setting is not used. The INS and LiDAR may use a different epoch, for example the INS on GPS time and an Ouster LiDAR on UNIX time.
PTP settings can be configured in a variety of ways. See the quick start guide for PTP here. You will need to ensure that the settings you choose are what is required by the LiDAR, to do this check the LiDAR manual for the time standard that s used. Failure to do this will result in an error when georeferencing is attempted that can look like "Reached end of LCOM stream".
Ouster will require the fourth option from the table. Unix to UTC time is an offset of lidar_time_offset=3159648180000000000 (10 years).
For use with Hesai data for example use 'lidar_time_offset=315964804000000000' (10 years and 18 seconds). This brings UNIX time to match GPS time.
Time in seconds since the GPS epoch (1980-01-01 00:00:00),
Time in seconds since the Unix epoch (1970-01-01 00:00:00).
Time in seconds since the PTP epoch (1969-12-31 23:59:51 TAI),
Time in seconds since the Unix epoch (1970-01-01 00:00:00 UTC),
Error threshold: Most importantly, the 'Error threshold' option will allow you to only process data into the pointcloud that is above a certain threshold of uncertainty. If you wish for all points in your pointcloud to be above say 8cm accurate then entering 8 into the Error threshold will give a good estimation of this. This error data is shown in the UserData field that is viewable in pointcloud viewing software such as CloudCompare so you can see the uncertainties of each point in a section of a survey based on the navigation data.
A survey along a road. In red, data can be seen where the surveyor lost RTK accuracy, this section can be removed using the Error threshold option or in pointcloud viewing software to give only the most accurate data.
The error estimation uses a sophisticated formula produced by the American Society for Photogrammetry and Remote Sensing (ASPRS) that combines LiDAR uncertainty and NCOM uncertainty to estimate the absolute uncertainty of point positions within a pointcloud. NCOM uncertainties are themselves estimates that the INS outputs. These uncertainties can be viewed in real time in NAVdisplay and are based on simulations. Contributions from boresight misalignment are not considered and the values are modelled on the accuracy of a VLP16 LiDAR, other LiDAR units might be more or less accurate in their range but they will likely be similar and the main contributions from the IMU.
The highest uncertainty estimate, which will appear as dark red as standard in software such as CloudCompare, is set to 50cm which is representative of going into SPS mode.
NCOM outputs accuracy diagnostics as calculated uncertainties in all conditions in real time and these are used to estimate the uncertainty in the points' positions. These outputs include estimations of the uncertainty in heading, pitch and roll, North and East position and altitude and all of these are combined in the formula.
The following tables give the translation between the UserData field value between 0-255 and the cm position uncertainty of the points given by the formula. Also included are the ranges at which these uncertainties are achieved for a unit that is working at specification in good GNSS conditions (open sky and no obstructions):
|Point position uncertainty (cm)||Pointcloud field value (0-255)|
|Point position uncertainty (cm)||Pointcloud field value (0-255)|
With your 5 compatible files you will be able to click Run Georeferencing. This will create a folder in the directory that the NCOM data is in or where you specify in the Files tab; the folder will contain your pointcloud, the LIP, LIR and VAT used and 2 processing logs.
Remember that for Ouster LiDAR you need to include the JSON file of Azimuths and Elevations in the same folder as the PCAP and under the same name. For example, for a PCAP named OusterSurvey.pcap include OusterSurvey.json in the same folder.
For Hesai LiDAR, remember to include the calibration file. A spreadsheet of elevations and azimuths for your LiDAR is available either on an included USB stick or retrievable from the unit. Include this in your processing by Clicking on 'Processing Options' and 'Calibration file' and navigating to your file.
Georeferencer can create pointclouds in LAS, LAZ (compressed) or PCD formats. This is chosen in the Files > Processing Options tab. The default is an LAZ file.
You will now be able to view your pointcloud in your choice of pointcloud viewing software (eg CloudCompare, QT reader or others).
If you would like example sets of data please get in touch or download straight from the website. We also appreciate you sharing your data with us.
Example of cloud being viewed in CloudCompare after being processed in OxTS Georeferencer.
- Height distribution: There is an issue with the GUI when boresighting some LiDAR. The height distribution graphs show a wide variation in height, something like 10m, despite this not being the case in reality or in the pointcloud when it is processed. Select the targets as normal and reduce the search radius also to only include the targets. We know that the VLP32C, VLP32MR and the Hesai 32XT are affected. We hope this issue will be fixed in Georeferencer 1.5.
- 40P PTP: An issue is known with the Hesai 40P that has firmware from at latest July 2020. A +3.16 second offset must be applied to the data if using PTP to synchronise your devices. This can be done in real time suing the PTP commands or in Georeferencer with an advanced command of 'lidar_time_offset=315964804000000000'. We assume that this would apply to other Hesai LiDAR with previous firmware, it does not occur for the Hesai XT.
- Dual return: VLP32C, VLP32MR and VLS128 dual return data does not process correctly. Single return must be selected for these devices. We hope this issue will be fixed in Georeferencer 1.5.
- Combined NCOM: If you are using a version of blended from before November 2020, you will not be able to use combined NCOM data. You can check the version of Blended you are using by looking at the bottom of the window in NAVconfig, a date will be displayed in reverse order; e.g. 201119.14i indicates Blended is from November 19th 2020 and you will be able to use combined processed data. You can check which version of Blended was used in the processing of an NCOM by looking at the process.log file in the processing folder and data can be reprocessed with a newer version of Blended to use in Georeferencer.
- Gimble lock boresighting: There is an issue that can come up when boresighting a hardware setup where the INS and LiDAR are at 90°. When this is so, a situation known as 'gimble lock' can occur where changes to roll and pitch are treated identically in the algorithm and the angles do not converge. We hope this will be fixed in Georeferencer 1.6.
Please let us know if you are concerned that you have found an issue or a bug with our software and we will log it and endeavour to fix it.
This section will cover some problems that one can encounter while using Georeferencer and some potential solutions.
- Other objects during boresighting: If your LiDAR unit is not calibrated to have retroreflective objects at a registered reflectivity of 100 (out of 255) then the default boresight calibration might not work. If this is the case then you can select 'processing options' before calibrating and change the 'reflectivity threshold' on under 'boresight options' to a higher number e.g. 150. It might also be the case that the LiDAR is picking up part of the vehicle, this can be removed by using a minimum range.
Example clusterplot with the default reflectivity threshold of 100 using a VLP32. Instead of just the targets many objects show up.
- Target smearing: If your setup or navigation data is poorly configured then the targets may be too smeared out to correctly boresight. When choosing the locations of the targets on the clusterplot page you must ensure that the blue circle encompasses all of the points that correspond to a target and also that no other retroreflective points are encompassed in the circle. If you can't make this happen you may have to manually measure your setup better until it is good enough to boresight. Also, try removing the first part of your survey where the INS may still be warming up.
- Pointcloud 'lite': A common technique for troubleshooting boresighting is to produce a light pointcloud by setting reflectivity to 100 and running georeferencing.
- Time overlap: If the navigation (NCOM) and LiDAR (PCAP) files that you have chosen do not overlap in time Georeferencer will not be able to produce a pointcloud. You should doublecheck therefore that the files you are trying to use are the correct ones. If they are then you might have a more fundamental problem on the hardware level. You should receive an error message when you attempt to process that indicates your files were not taken at the same time. You might receive an error looking like "Reached end of LCOM stream at time: 1285502583250000000
FAT:G.1.3: Failed before attempting georeferencing". Georeferencer 1.4 shows a representation of the time overlap.
- PCAP recording: When recording your PCAP there are several things to consider. If you have used software such as WireShark then you will need to ensure that you save the data as PCAP (not PCAPNG) and that only the LiDAR data and LiDAR NMEA packets are present. This can be done after recording by using a filter for the LiDAR IP address.
Ensure that if you are using a LiDAR that requires NMEA you record the PCAP and the NCOM starting within the same clock hour as the hour is not outputted in the LiDAR data.
WireShark or similar software is not suitable for recording Ouster data as the packets will not be organised in the correct order that OusterStudio puts them into. Veloview can not be suitable for Velodyne data as it may not record the NMEA data in the PCAP file.
- Poor definition in pointcloud: The two main causes of a poor pointcloud will be poor navigation data or poor setup calibration. To view how well your navigation data has performed, open the NCOM file in NAVgraph. Right-click the graph and click 'Configure graph' and then 'Add measurements'. Select 'position accuracy North' and 'heading accuracy' and 'pitch accuracy' for a good sample. Next ensure that different units are set to different axes.
Next you can view the accuracies. Recall that the specification of the xNAV is 2cm position, 0.1° heading accuracy and 0.05° pitch/roll accuracy. In good data you will find the performance exceeds the specification.
If the navigation data is good then the likely problem is the setup calibration. Ensure that you have followed the steps in the boresight calibration guide. You can check the performance of the calibration by using the calibrated LIP and LIR files and producing a pointcloud at a reflectivity of 120 (in the processing options). You should see a pointcloud with two crisp rectangles that represent the targets used and they should not be smeared.
- Vibration issues: It is fairly common to have issues with vibration when working with LiDAR. It is important that the LiDAR and INS are rigidly mounted together and the closer the more precise the LIP and LIR files can be. However this presents the obvious issue of vibration as many mechanical LiDAR can have substantial vibrations particularly at high RPM. The INS is sensitive to vibration and any persistent vibrations will limit the INS' ability to differentiate true movement and vibration making it less precise. This issue is best sorted at the source by damping any vibrations getting to the INS. A different way of setting the INS and LiDAR on the vehicle may help also.
However, there are some ways to improve performance if vibrations are present. One would be to do the initialisation and warmup and configuration improvement with the LiDAR switched off. A second is to use the vibration settings in NAVconfig so the INS knows to expect vibrations and can filter them out. This is not ideal as precision will be limited but it can help to improve data when vibrations are present. RPM of the LiDAR can be reduced also.
A way to check vibrations is looking at the accelerations the unit is measuring when it is supposedly stationary. This can be done in real time with NAVdisplay or in PP with NAVgraph. Viewing the lateral vibrations with the LiDAR turned on and off is a good way to check.
- Double vision: Double vision can be caused by a number of factors. This is the phenomenon where objects surveyed at different times or from different perspectives do not appear in the same place.
The most common cause of double vision would be a poor calibration which can be solved with the boresight calibration tool.
Another common problem is a lever arm offset. This is where the input measurements, for example the location of the antennas, is incorrect. This could be due to one of two things: The initial measurement (for example the secondary antenna being 1m behind the primary) is not quite correct or there are significant orientation differences. Alternatively, the measurement is too 'tight', this means that the search radius the INS is looking in for the true value of the measurement does not include the true value. For example if you have input 1m as your measurement and the tolerance is set to 5cm but the true value is 1.06m. This will cause the INS to get this measurement wrong and other measurements also to compensate. You can change tolerances in the Advanced>Accuracies tab. We recommend you use the default tolerances. These tolerances will be automatically tightened after you use the 'improve configuration' tool.
The third most common cause of this issue is a poor initialisation. If satellite conditions are not perfect or the initialisation is done not ideally (for example a dynamic initialisation using a trajectory that is not straight) or if antenna placement is not ideal then initialisation can be off. If this is the case then there will be a permanent error in the heading which can cause drift and double vision after turning. You might get poor initialisation settings also if your config is not correct or the tolerances are too loose. Make sure to initialise in as good GNSS conditions as possible. Receiving RTK corrections in real time can improve the initialisation.
This section will cover some some points that will help you get the maximal clarity in your pointcloud. In general, the performance will depend on three things: the accuracy of the navigation data, the consistency of the navigation data and the calibration of the hardware setup. Of course there will be other errors, for example from the LiDAR accuracy but they cannot be improved. You may be seeing blurring or double vision in your pointcloud which you want to remove, if so, follow the steps below:
A classic example of double vision where the same object appears in a different location at different times (for example up and then down a road).
Quality of navigation data:
- Antennas: If there is any movement in the antennas whether from vibrations or flexing in their mounting then there can be issues in collecting signals but more importantly error in where the INS thinks the antenna is. Different antennas perform differently in different vibrational environments. Place the antennas as far from each other as possible without compromising on rigidity or accuracy is displacement measurements.
- Warmup: Ensure that your warmup is adequate. For the Survey+ this should be 15 minutes, for the xNAV this should be 5 minutes. However, you can view NAVdisplay in real time to know when you are hitting the specification or exceeding it. For example, keep an eye on heading and pitch accuracy. After a good warmup these should be better than 0.1° and 0.05° respectively on an xNAV. If you are not meeting the specification it might be that your original measurements were not accurate enough. Either correct the measurements or if you cannot, go to NAVconfig>Advanced tools>Accuracies and increase the tolerances on inaccurate measurements. Do the warmup in good GNSS conditions.
Consistency of navigation data: As well as a maximum quality to get out your INS device you need to consider the consistency of that data. For a pointcloud survey you want the highest accuracy for as long as possible. See in the previous section ways to view performance throughout a survey.
- Antennas: The antennas that you use will affect the performance of the navigation data. If you are in poor GNSS conditions or challenging conditions for example a town, forest, city, anywhere where GNSS signals could be blocked or reflected off of objects then the data will be affected by the antenna used. Higher grade antennas will deal with multipath and capture signals better than lower grade antennas.
- Rigidity: It is very important for all components of your hardware setup to not move relative to each other. The INS will use a fixed measurement for the position of itself relative to vehicle axes and antennas. If these are moving even slightly then significant errors could occur. There might be a resonance on your vehicle that causes vibrations
Boresight calibration: You will have to make sure that the angles in your setup are as precise as possible. If there are any vibrations or lack of rigidity between the LiDAR and INS the calibration will only be precise to the extent that extent. Very fine accuracies are required. A 0.1° inaccuracy will translate into 0.1x(2pi/360)xRange error in the position accuracy which is about 10cm error at 15m away which is a lot by pointcloud standards. Therefore, the boresight is crucial and it is crucial that it is done in the best conditions. Run georeferencing at a reflectivity threshold of 130 to view a pointcloud that should contain only the targets.
- Rigidity: Vibrations and any looseness in the connection between INS and LiDAR ought to be kept to absolute minimum.
- Displacement: The further apart the LiDAR and INS are the greater the intrinsic additional position error will be due to an orientation error between the two. Keep the two devices as close together as possible.
- Navigation data: The navigation data ought to be as high spec as possible for the best calibration. Make sure GNSS conditions are perfect (open sky), lever arms are as accurate as possible and a good warmup has been performed.
- Boards: Ensure that the boards are as flat as possible and reflective enough to differentiate them from any points in their vicinity. Also ensure that the boards are rigid and do not move at all during the calibration survey.
- VAT: The VAT file is very important also. When you put in your orientation (yaw, pitch and roll) measurements into NAVconfig the angles will be to about 1 degree of accuracy and the INS will improve this while it is being used. Ensure that you are using the updated VAT file and not the one you first entered. If you do a warmup then choose 'improve configuration' on NAVconfig the updated VAT file will be saved to the device.
- email@example.com and firstname.lastname@example.org for technical support with using OxTS Georeferencer and taking your survey data
- email@example.com for sales enquiries
- firstname.lastname@example.org for data sets or information
Your feedback is very valuable to us, please go here to give us feedback. You can also download files for practicing using Georeferencer for georeferencing and for the boresight calibration.