GLINS is a GNSS-LiDAR-INS integrated navigation system for accurate and reliable navigation in challenging urban environments. GLINS jointly optimizes GNSS measurements, LiDAR landmarks, and inertial states in a unified factor graph. This repository currently provides an overview of the system, Code is coming soon.
- Tightly coupled GNSS-LiDAR-INS fusion in a unified optimization framework
- Joint landmark-state formulation for consistency under GNSS corrections
Jiahui Liu, Cheng Chi, Xin Zhang, Binlin Zhang, Dongen Li, Xingqun Zhan, and Marcelo H. Ang Jr.
J. Liu, C. Chi, X. Zhang, B. Zhang, D. Li, X. Zhan and M. H. Ang Jr., "GLINS: GNSS-LiDAR-INS Integrated Navigation System," in IEEE Robotics and Automation Letters, accepted, Mar. 2026.
C. Chi, X. Zhang, J. Liu, Y. Sun, Z. Zhang and X. Zhan, "GICI-LIB: A GNSS/INS/Camera Integrated Navigation Library," in IEEE Robotics and Automation Letters, vol. 8, no. 12, pp. 7970-7977, Dec. 2023, doi: 10.1109/LRA.2023.3324825.
More demo videos and materials will be released soon.
Our LiDAR data was collected together with GICI. Please refer to the following public dataset repository for related data resources:
We are developing our code on Ubuntu 22.04, and tested on Ubuntu 20.04 and Ubuntu 24.04. We recommend you use the same or a similar environment if you are not familiar with cross-compiling.
Eigen is a C++ template library for linear algebra. You can find the releases on Eigen.
OpenCV is a computer vision library. You can find the releases on OpenCV.
yaml-cpp is a decoder and encoder for YAML formats. We use YAML files to configure the workflow. You can find the releases on yaml-cpp.
glog is a logging control library. You can find the releases on glog. You should install glog together with gflags. We suggest you install glog from source code rather than apt-get, because installing from apt-get may make GLINS fail to find the glog library during compiling.
Ceres-Solver is a nonlinear optimization library. You can find the releases on Ceres-Solver.
PCL is a library for point cloud processing. GLINS relies on PCL for LiDAR point cloud representation and geometric processing. Please make sure your installed PCL version is 1.12 or later. You can find the releases on PCL.
ROS is a software framework for robot applications. GLINS currently depends on ROS 1 for message transport, sensor interfaces, and runtime integration. Please make sure a ROS 1 distribution is properly installed in your environment.
livox_ros_driver is required for handling Livox LiDAR data streams in ROS. Please install the driver before building or running GLINS with Livox sensors. You can find the source code and installation instructions on livox_ros_driver.
Currently, the LiDAR-related modules in GLINS only support building and running with ROS. Therefore, please make sure that ROS 1 and the required LiDAR driver have been properly installed before compiling GLINS.
cd <glins-root-directory>/ros_wrapper
catkin_make -DCMAKE_BUILD_TYPE=Release
source ./devel/setup.bashNow you can run GLINS via
rosrun gici_ros gici_ros_main <gici-config-file>Many of the GNSS tools, I/O handlers, and message de/encoders in GLINS are inherited from GICI. The implementation of the IMU factor is inspired by OKVIS. The point cloud processing pipeline is developed with reference to FAST-LIVO2.

