Open Source Robotics

A curated collection of high-quality open source robotics projects, tools, and software to propel the robotics community forward.

GTSAM

Factor-graph optimization library powering many modern SLAM backends

License

BSD-2-Clause

Overview

Georgia Tech Smoothing and Mapping — a C++ library with Python bindings for factor-graph based state estimation and sensor fusion. It provides the iSAM2 incremental smoother, a rich set of ready-made factors for IMU preintegration, GPS, vision and range measurements, and the Lie-group machinery underneath. GTSAM is the optimization backend inside many modern SLAM systems, including LIO-SAM, Kimera and GLIM.

GTSAM models estimation problems as factor graphs: variables (poses, landmarks, velocities, biases) connected by factors encoding measurements. It ships batch optimizers (Levenberg-Marquardt, Gauss-Newton, dogleg) and the iSAM2 incremental smoother, IMU preintegration following Forster et al., smart factors for vision, and full Lie-group support for SO(3)/SE(3). Python bindings expose the complete API, and an active BSD-licensed community maintains it.

Why it matters

Factor graphs became the lingua franca of SLAM and multi-sensor fusion, and GTSAM is the reference implementation the field builds on — widely cited and embedded in several of the most-used open SLAM systems.

Problem it solves

Fusing IMU, lidar, camera and GPS measurements into a consistent state estimate is a large sparse optimization problem. GTSAM expresses it as a factor graph and exploits its sparsity, with iSAM2 updating the solution incrementally as new measurements arrive instead of re-solving from scratch.

Key takeaways

  • Factor graphs turn multi-sensor fusion into a sparse optimization problem with reusable structure
  • iSAM2 gives incremental, real-time smoothing instead of repeated batch solves
  • Ready-made IMU, GPS, vision and range factors cover most robotics estimation problems
  • The backend of choice for LIO-SAM, Kimera, GLIM and many research systems
  • Python bindings make it accessible beyond C++ codebases

Who it is for

  • SLAM system builders needing a proven optimization backend
  • State-estimation researchers prototyping new factors
  • Engineers fusing IMU/GPS/vision in production robots
  • Graduate students learning estimation theory hands-on

Limitations

  • Steep learning curve — factor-graph modeling and Lie-group concepts are prerequisites for productive use
  • Building from source with Python wrappers and TBB can be involved on some platforms

This website requires JavaScript to function properly. Please enable JavaScript to explore our collection of open source robotics projects.