LIGO: Tightly Coupled LiDAR-Inertial-GNSS Odometry based on a Hierarchy Fusion Framework for Global Localization with Real-time Mapping
Code, paper, video are coming soon...... instruction for using will be detailed soon
Our paper is published on TRO
Our datasets are uploaded on Google Drive
The codes of this repo are contributed by: Dongjiao He (贺东娇)
LIGO is a multi-sensor fusion framework that maximizes the complementary properties of both LiDAR and GNSS systems. This package achieves the following properties:
- Competitive accuracy in trajectory estimation across large-scale scenarios.
- Robustness to malfunctions of either GNSS or LiDAR sensors, enabling seamless handling of added or lost sensor signals during operation.
- High-output-frequency odometry.
- Capability of providing globally referenced pose estimations in both indoor and outdoor environments, suitable for ground vehicles and uncrewed aerial vehicles (UAVs).
- No requirement for GNSS observations to be obtained exactly at the beginning or end time of LiDAR scans.
- Robustness to large outliers and high noise levels in GNSS observations.
Platform: DJI Matrice 300
Onboard computer: DJI Manifold 2-c 256G, CPU: Intel i7-8550U
LiDAR: Livox Mid360 and Livox Avia
IMU: Built-in IMU of Livox LiDAR
GNSS receiver: u-blox C099-F9P-2
GNSS antenna: B4QA4GGGB
LiDAR: 10Hz
IMU: 200Hz
GNSS: 10Hz
RTK: 10Hz
Operating system: Ubuntu 20.04
IMU and LiDAR driver: Livox driver
GNSS driver: ublox driver
IMU: /livox/imu
LiDAR: /livox/lidar
RAW GNSS: /ublox_driver/range_meas
GNSS EPHEM: /ublox_driver/ephem and /ublox_driver/glo_ephem
IONO PARAMETER: /ublox_driver/iono_params
Onboard pos solution of ublox: /ublox_driver/receiver_pvt and /ublox_driver/receiver_lla
PPS time info: /ublox_driver/time_pulse_info
PPS: Livox LiDARs can receive pps and gprmc given by the GNSS receiver
The time difference between LiDAR and IMU is zero, and between LiDAR and GNSS message is 18.0 s
Please follow the Differential GNSS section shown in ublox driver to get the differential GNSS solution online or offline. The self-collected datasets get the online RTK solution which are saved in the topic '/ublox_driver/receiver_pvt', the value of the 'carr_soln' as 1 and 'diff_soln' as 2 indicates the fix RTK solution.
We test LIGO on ubuntu 20.04 with ROS noetic, and C++17 compiler & Eigen 3 & GTSAM 4 & opencv 4.2.0 & pcl 1.10
Install Livox Driver
Install gnss_comm with its instuction
cd ~/catkin_ws/src/
git clone https://github.com/Joanna-HE/LIGO..git
cd ~/catkin_ws/
source /PATH/TO/LIVOX_DRIVER/DEVEL/.setup.bash
source /PATH/TO/GNSS_COMM/DEVEL/.setup.bash
catkin_make
source ~/catkin_ws/devel/setup.bash
Performance on a sequence with severe LiDAR degeneracy