The base module provides fundamental data structures, utilities, and mathematical operations that form the foundation of GTSAM. Here are the key header files:
Core Mathematical Concepts¶
Utilities to define group, manifold, and Lie group classes, as well as concept checks for them.
- Manifold.h - Defines the concept for differentiable manifolds with retract/local operations. See Manifold docs.
- Lie.h - Implements the Lie group concept combining group operations with manifold structure. See LieGroup docs.
- MatrixLieGroup.h - Base class for matrix Lie groups (SO(n), SE(n), SL(n), etc.) with Hat/Vee operators. See MatrixLieGroup docs.
And, less common:
- Group.h - Defines the group concept with identity, inverse, and composition operations. See Group docs.
- VectorSpace.h - Defines the vector space concept. See VectorSpace docs.
- ProductLieGroup.h - Cartesian products of Lie groups
- lieProxies.h - Proxy functions for testing
Linear Algebra¶
Linear algebra operations optimized for robotics applications. Vector
and Matrix
are essentially typedefs and wrappers for Eigen:
- Vector.h - Vector operations and mathematical functions
- Matrix.h - Essential matrix operations and linear algebra utilities built on Eigen
- cholesky.h - Cholesky decomposition algorithms for solving linear systems
These are used in Jacobian and Hessian factors:
- VerticalBlockMatrix.h - Specialized block matrix structure for efficient sparse operations
- SymmetricBlockMatrix.h - Symmetric block matrix implementation for optimization problems
Jacobians¶
- numericalDerivative.h - Numerical differentiation utilities for automatic derivative computation
- OptionalJacobian.h - Optional Jacobian computation wrapper for optimization efficiency
Container and Data Structures¶
- High-performance container types (FastSet, FastMap, etc.) optimized for GTSAM (unclear whether still relevant for recent c++ compilers)
- DSFMap.h - Disjoint Set Forest implementation using maps for union-find operations
- DSFVector.h - Disjoint Set Forest implementation using vectors for better performance
- TreeTraversal.h - Tree traversal algorithms and utilities for factor graphs
- ConcurrentMap.h - Thread-safe concurrent map implementation
Debugging and Development Tools¶
- debug.h - Debugging utilities, assertion macros, and conditional compilation flags
- timing.h - Performance timing and profiling utilities for benchmarking
- TestableAssertions.h - Assertion macros for unit testing with tolerance checking
- chartTesting.h - Utilities for testing manifold chart operations
Sampling and Statistics¶
- WeightedSampler.h - Weighted random sampling utilities for Monte Carlo methods
- sampler.h - General sampling utilities and random number generation
Graph Algorithms¶
- Kruskal.h - Kruskal’s algorithm for minimum spanning trees in factor graphs
- BTree.h - Balanced tree implementation for efficient storage and retrieval
Type System and Traits¶
- types.h - Common type definitions, aliases, and forward declarations
- concepts.h - C++ concept definitions for type checking and constraints
- Testable.h - Base class and concept for objects that can be tested for equality
Serialization Support¶
- SerializationBase.h - Base serialization functionality for saving/loading objects
- StdOptionalSerialization.h - Serialization support for std::optional types
Memory Management and Performance¶
- utilities.h - General utility functions, memory management helpers, and common operations
- FastDefaultAllocator.h - Custom allocator for improved performance in critical paths
- Value.h - Type-erased value wrapper for heterogeneous containers
Template Metaprogramming¶
- treeTraversal
-inst.h - Template instantiations for tree traversal algorithms - concepts.h - SFINAE utilities and type trait helpers