opensourceprojects.dev

A broadsheet for software that doesn't ask for your email

direct multi-scan registration on factor graphs for any range sensor
GitHub RepoImpressions2

Project Description

View on GitHub

Mapping Any Sensor, Any Scene: GLIM's Take on 3D Reconstruction

If you've ever tried to build a 3D map from a LiDAR scan, you know the drill: spin up a SLAM pipeline, pray your sensor matches what the authors tested, and then spend hours tuning parameters when the point cloud looks like abstract art. Most mapping frameworks are tightly coupled to one type of hardware—use a different sensor and you're starting from scratch. That's where GLIM comes in. It's a range-based 3D mapping framework built around a refreshingly simple idea: what if the core algorithm didn't care what sensor you're using?

What It Does

GLIM is a direct multi-scan registration framework that formulates mapping as an error minimization problem on factor graphs. Instead of extracting features or matching descriptors, it works directly with raw range measurements to find the optimal alignment between scans. The key architectural choice is eliminating sensor-specific preprocessing—GLIM treats all range data the same way, whether it came from a spinning LiDAR, a solid-state unit, or an RGB-D camera.

The framework is built on a stack of established libraries: GTSAM for factor graph optimization, gtsam_points for point cloud operations, Eigen for linear algebra, and nanoflann for nearest neighbor search. CUDA support is optional but recommended if you want GPU acceleration. The project is tested on Ubuntu 22.04 and 24.04 with various CUDA versions, plus NVIDIA Jetson Orin hardware.

One notable feature is the interactive map correction interface. When the mapping goes sideways—and it will, eventually—you can manually fix failures and refine the output rather than rerunning the whole pipeline. There's also a global callback slot mechanism that lets you hook into the mapping process and inject additional constraints into the factor graph. The companion package glim_ext provides examples of extensions like explicit loop detection and LiDAR-visual-inertial odometry.

Why It's Cool

The sensor-agnostic design is the headline feature here, and it's genuinely useful. Here's what stands out:

  • Hardware flexibility without the pain. The README lists support for spinning LiDARs like the Velodyne HDL32e, non-repetitive scanners like the Livox Avia, solid-state depth cameras like the Intel Realsense L515, and RGB-D cameras like the Azure Kinect. That's an unusually wide net. Most frameworks pick a lane; GLIM covers the whole road.

  • Direct registration on factor graphs. By minimizing multi-scan registration errors directly in a factor graph framework, GLIM aims to maintain global consistency across the map. It's not a novel concept per se, but applying it to arbitrary range sensors is a design decision that pays off in accuracy.

  • Manual correction is baked in. Mapping failures are inevitable in real environments. The interactive correction interface acknowledges that reality and gives you a tool to fix problems instead of forcing a full rerun. That's a practical touch you don't see often in research-grade SLAM.

  • Extensibility is a first-class concern. The callback slot mechanism and the companion glim_ext repo show the author is thinking about ecosystem development. You can add constraints, implement custom loop closures, or build sensor fusion layers on top.

  • Active maintenance with real updates. The changelog shows steady releases through 2026, with version 1.2.2 fixing compatibility issues with GTSAM 4.3a1. The author is keeping pace with upstream dependency changes.

One caveat worth noting: the dependency list is not trivial. You'll need GTSAM and gtsam_points built and installed correctly, and the base GTSAM version changed in mid-2025—the README specifically warns to rebuild GTSAM 4.3a0 and gtsam_points 1.2.0. This isn't a plug-and-play library; it expects a developer who knows their way around a build system.

How to Try It

Ready to give it a shot? The repository is at github.com/koide3/glim, with full documentation at koide3.github.io/glim.

Start by installing the mandatory dependencies: Eigen, nanoflann, GTSAM 4.3a0, and gtsam_points 1.2.0. If you have a CUDA-capable GPU, install the CUDA toolkit as well—it'll speed things up considerably. Optional additions include OpenCV, OpenMP, ROS/ROS2, and the Iridescence visualization library.

For ROS2 users, there's a dedicated package at github.com/koide3/glim_ros2, and Docker images are available on Docker Hub under koide3/glim_ros2. That's probably the fastest way to get a working environment without wrestling with dependency hell.

If you want to explore what extensions look like, check out glim_ext for example implementations of loop detection and LiDAR-visual-inertial odometry.

Final Thoughts

GLIM is squarely aimed at researchers and developers who work with multiple sensor types or need a mapping framework they can extend and modify. If you're using a single, well-supported LiDAR for a straightforward mapping task, you might find the setup overhead hard to justify. But if you're prototyping with different hardware, or you need fine-grained control over the optimization process, GLIM's sensor-agnostic core and extensible architecture make it a strong candidate. The interactive correction feature alone could save you hours of debugging time on difficult scenes. It's a well-maintained, thoughtfully designed tool that fills a real gap in the open-source mapping landscape.


Follow @githubprojects for more developer tools and open source projects.

Back to Projects
Project ID: bbe8f7d4-fd91-430a-aef7-47a6e681a810Last updated: September 6, 2026 at 04:14 AM