GLIO2: A GPU-Parallelized Tightly-Coupled LiDAR-Inertial-GNSS System for Robust and Real-Time Global Localization and Mapping
Organizations: Department of Aeronautical and Aviation Engineering, The Hong Kong Polytechnic University, Hong Kong SAR, China
Abstract
Globally consistent, real-time state estimation in large-scale, perceptually degraded environments is essential for autonomous vehicles and aerial robots, and requires fusing LiDAR, inertial, and GNSS measurements. Existing fusion methods, however, share a scan-to-map front-end with two failure modes. First, each scan is aligned to an incrementally built map that drifts under degeneracy, and once the estimate diverges the error is irrecoverable. Second, even without divergence, a registration biased by dynamic objects or wrong correspondences is propagated as a single pose constraint with an over-confident covariance, leaving its correspondences unavailable for GNSS to re-weight or relinearize. We propose GLIO2, a tightly-coupled LiDAR-Inertial-GNSS system whose GPU-parallel front-end jointly optimizes scan-to-multiscan LiDAR, IMU pre-integration, and raw GNSS measurements in a single sliding-window factor graph, sustaining real-time operation on edge hardware. A complementary offline back-end reuses the same cached factors to refine the entire trajectory in batch, completing the 30-min, 4.51-km UrbanNav Whampoa sequence in about 24 s. Across three public benchmarks (UrbanNav, MARS-LVIG, M3DGR) and self-collected UAV and vehicle data, GLIO2 attains the best overall accuracy among evaluated systems. On a 5.66-km bridge traversed at up to 96 km/h, where every competing baseline diverges under LiDAR degeneracy, it maintains 1.6 m horizontal accuracy. On an NVIDIA Jetson Orin NX, the full pipeline runs at about 25 Hz (39.60 ms per scan). The source code and datasets will be released.
Figures & tables
| System | LiDAR Factor | GNSS | Coupling | RT |
| LIO-SAM [ 3 ] | S2M | GNSS Solution | loose FGO | ✓ |
| LIO-Fusion [ 37 ] | S2M | GNSS Solution | loose FGO | ✓ |
| He et al. [ 38 ] | S2M | GNSS Solution | loose FGO | |
| GIL [ 9 ] | S2M | PPP: PSR+CP | tight EKF | |
| P3-LINS [ 31 ] | S2M | PPP: PSR+CP+DOP | tight EKF | |
| Li et al. [ 45 ] | S2MS | PPP: PSR+CP | tight MSCKF | ✓ |
| Notations | Explanation |
|---|---|
| ECEF, local-world, and LiDAR coordinate frames | |
| IMU and GNSS receiver coordinate frames | |
| Variable of frame represented in frame | |
| Physical quantity at discrete time step | |
| Skew operator; hat map, | |
| Manifold plus/minus; orthogonal direct sum |
| Dataset (carrier) | LiDAR | IMU | GNSS receiver | Reference | Sequences (scenario) |
|---|---|---|---|---|---|
| UrbanNav [ 10 ] | Velodyne HDL-32E, 10 Hz | Xsens MTi-10, 400 Hz | u-blox ZED-F9P, 1 Hz | NovAtel SPAN-CPT | Hong Kong Tst, Whampoa (deep-canyon NLOS) |
| MARS-LVIG [ 11 ] | Livox Avia, 10 Hz | BMI088, 200 Hz | u-blox ZED-F9P, 10 Hz | DJI RTK-fixed | HKisland1, HKairport1 (aerial, LiDAR degeneracy) |
| M3DGR [ 12 ] | Livox Mid-360, 10 Hz | ICM40609, 200 Hz | CUAV C-RTK 9Ps, 10 Hz | Fixed RTK + ArUco | Gra1, Out1, Den1 (induced degradation, GNSS-denied) |
| Ours (UAV) | Livox Mid-360, 10 Hz | ICM40609, 200 Hz | u-blox ZED-F9P, 10 Hz | u-blox ZED-F9P RTK-fixed | Switch (indoor/outdoor), Plain (flat, LiDAR degeneracy) |
| Ours (Vehicle) | Velodyne VLP-32E, 10 Hz | Xsens MTi-30, 400 Hz | u-blox ZED-F9P, 1 Hz | NovAtel SPAN-CPT | Urban (urban canyon), Bridge (LiDAR degeneracy) |
| Hesai XT-32, 10 Hz |
| Sequence | GLIO2(Online) | GLIO2(Batch) | GLIO(Online) [ 7 ] | GLIO(Batch) | LIGO [ 8 ] | LIO-SAM-GPS [ 3 ] | RTKLIB [ 49 ] | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Hor. | 3D | Hor. | 3D | Hor. | 3D | Hor. | 3D | Hor. | 3D | Hor. | 3D | Hor. | 3D | |
| UrbanNav-Tst | 2.153 | 3.539 | 1.064 | 2.583 | 5.164 | 19.559 | 1.516 | 3.748 | 5.935 | 8.051 | 8.061 | 18.930 | 6.965 | 11.801 |
| UrbanNav-Whampoa | 2.834 | 7.756 | 1.955 | 2.987 | 7.358 | 16.627 | 2.070 | 5.967 | 8.506 | 16.800 | 10.460 | 22.710 | 21.230 | 41.762 |
| MARS-LVIG-HKairport1 | 2.545 | 3.207 | 0.899 | 1.701 | 7.002 | 10.472 | 42.980 | 45.355 | 2.194 | 9.672 | ||||
| MARS-LVIG-HKisland1 | 2.260 | 3.877 | 2.134 | 2.473 | 6.999 | 9.317 | 13.111 | 15.530 | 2.772 | 13.038 | ||||
| M3DGR-Gra1 | 0.527 | 0.534 | 0.318 | 0.346 | – | – | – | – | 0.690 | 1.334 | 4.967 | 9.912 | 7.974 | 12.945 |
| Sequence | GLIO2(Online) | GLIO2(Batch) | GLIO(Online) [ 7 ] | GLIO(Batch) | LIGO [ 8 ] | LIO-SAM-GPS [ 3 ] | RTKLIB [ 49 ] | FAST-LIO2 [ 1 ] | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Hor. | 3D | Hor. | 3D | Hor. | 3D | Hor. | 3D | Hor. | 3D | Hor. | 3D | Hor. | 3D | Hor. | 3D | |
| Urban | 1.127 | 1.978 | 0.919 | 1.327 | 3.529 | 12.377 | 1.589 | 4.492 | 3.663 | 12.935 | 10.468 | 13.212 | 15.945 | 38.877 | 6.035 | 14.604 |
| Switch | 0.425 | 0.636 | 0.213 | 0.301 | 2.727 | 3.303 | 0.654 | 0.881 | 0.734 | 0.865 | 1.334 | 1.442 | 3.890 | 11.212 | 0.564 | 0.580 |
| Bridge | 1.625 | 3.586 | 1.438 | 2.552 | 5.634 | 11.367 | ||||||||||
| Plain | 0.596 | 0.663 | 0.142 | 0.162 | 9.881 | 9.882 | 17.580 | 18.378 | 0.150 | 0.289 | ||||||
| Variant | Switch | Urban | ||
|---|---|---|---|---|
| Hor. | 3D | Hor. | 3D | |
| GLIO2-Tight | 0.425 | 0.636 | 1.127 | 1.978 |
| w/o tight GNSS (Loose) | diverges | 10.884 | 12.705 | |
| w/o GPU (CPU) | 1.570 | 2.608 | 2.569 | 4.064 |
| Sequence | LiDAR factor | ATE RMSE (m) | 2D (cm) | 3D (cm) | Outcome |
|---|---|---|---|---|---|
| Bridge | Scan-to-map | diverges | |||
| S2MS (ours) | bounded | ||||
| Urban | Scan-to-map | drifts | |||
| S2MS (ours) | bounded |
| Per-scan total (ms) | GLIO2 breakdown (ms) | |||||
| LiDAR | LIGO | FAST-LIO2 | GLIO2 | Preproc. | Opt. upd. | Residual |
| Jetson Orin NX | ||||||
| Hesai | 152.19 | 73.56 | 55.54 | 15.26 | 32.06 | 8.21 |
| Velodyne | 185.60 | 77.72 | 54.02 | 11.36 | 35.24 | 7.42 |
| Mid-360 | 123.96 | 23.28 | 39.60 | 5.27 | 28.04 | 6.28 |
| Desktop | ||||||