In airborne light detection and ranging (LiDAR) systems, misalignments between the LiDAR-scanner and the inertial navigation system (INS) mounted on an unmanned aerial vehicle (UAV)'s frame can lead to inaccurate 3D point clouds. Determining the orientation-offset, or boresight error, is key to many LiDAR-based applications. In this work, we introduce a mixed-integer quadratically constrained quadratic program (MIQCQP) that can globally solve this misalignment problem. We also propose a nested spatial branch and bound (nsBB) algorithm that improves computational performance. The nsBB relies on novel preprocessing steps that progressively reduce the problem size. In addition, an adaptive grid search (aGS) allowing us to obtain quick heuristic solutions is presented. Our algorithms are open-source, multi-threaded and multi-machine compatible.
Before | After |
---|---|
Fig1. Boresight alignment on the Car data-set
Before | After |
---|---|
Fig2. Boresight alignment on the Tent data-set
Before | After |
---|---|
Fig3. Boresight alignment on the Truck data-set
Currently tested on MacOS and Linux, upcoming support for Windows.
ARMO's adaptive grid search (aGS) algorithm only requires Cmake.
Download and install it from here: http://www.cmake.org (Version 3.2 or better)
Then , simply run cd ARMO
, cmake
and then make
.
For running the MIQCQP and the nsBB algorithm see below.
To run nsBB set -DGurobi=ON -DGJK=ON -DEigen3=ON
while calling cmake
. To run the MPI version of nsBB also set -DOpenMPI=ON
while calling cmake
.
To run gurobi set -DGurobi=ON
while calling cmake
.
For nsBB ONLY
Please install openGJK v1.1 and add the following in your ~/.bash_profile:
export GJK_ROOT_DIR="/Users/yourname/Dev/openGJK"
Please download and extract (tar -xf archivename
) Eigen3 Eigen3 is header-only and does not need installation and add the following in your ~/.bash_profile:
export EIGEN3_ROOT_DIR ="/Users/yourname/Dev/eigen-3.3.9"
For nsBB and Gurobi
Please install Gurobi 9.5 (not required for aGS) For troubleshooting see here
Add the following in your ~/.bash_profile:
export GRB_LICENSE_FILE="/Users/yourname/Dev/gurobi.lic"
For Mac,
export GUROBI_HOME="/Library/gurobi950/macos_universal2"
For Linux,
export GUROBI_HOME="$HOME/Dev/gurobi950/linux64"
export PATH=$PATH:"$HOME/Dev/gurobi950/linux64/bin"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/Dev/gurobi950/linux64/lib"
Data sets used in the paper may be found here.
The first argument is the .laz file name.
The second argument is the algorithm: aGS
(default) for aGS algorithm, nsBB
, for nsBB, gurobi
to solve the boresight MIQCQP with Gurobi.
The third argument is the time limit for aGS
.
Funding was provided by Los Alamos National Laboratory's Directed Research (project number XX9H). Funding for LiDAR data collection was provided by the Next‐Generation Ecosystem Experiments (NGEE Arctic) project, supported by the Office of Biological and Environmental Research in the U.S. DOE Office of Science as well as the Source Physics Experiment (SPE), Defense Nuclear Nonproliferation Research and Development (DNN R&D), National Nuclear Security Administration.
NNSA approval number C20126