gtsam/gtsam/slam
Maciej Halber 1575968571 Add BetweenFactor for Similiarity2 2025-03-21 11:16:47 -04:00
..
tests FrobeniusFactors now work for any Matrix Lie group with vec 2025-03-10 21:32:31 -04:00
AntiFactor.h replace #ifdef with #if for GTSAM_ENABLE_BOOST_SERIALIZATION 2024-12-26 23:44:00 -05:00
BearingFactor.h remove trailing spaces 2019-02-11 10:58:34 -05:00
BearingRangeFactor.h Moved BearingRangeFactor to SAM 2015-07-12 18:57:26 -07:00
BetweenFactor.h replace #ifdef with #if for GTSAM_ENABLE_BOOST_SERIALIZATION 2024-12-26 23:44:00 -05:00
BoundingConstraint.h Merge pull request #1789 from borglab/feature/constrained_optimization 2025-01-15 09:58:30 -08:00
CMakeLists.txt Updated QNX-relevant paths, removed environment variables. (#2) 2025-01-16 09:57:29 -05:00
EssentialMatrixConstraint.cpp changed signatures to use OptionalMatrix keyword 2023-01-20 18:06:55 -08:00
EssentialMatrixConstraint.h replace #ifdef with #if for GTSAM_ENABLE_BOOST_SERIALIZATION 2024-12-26 23:44:00 -05:00
EssentialMatrixFactor.h Fix essential matrix factor 2024-12-11 14:05:05 -05:00
FrobeniusFactor.cpp Fix deperecated copies and redundant moves 2024-12-29 15:58:32 -08:00
FrobeniusFactor.h FrobeniusFactors now work for any Matrix Lie group with vec 2025-03-10 21:32:31 -04:00
GeneralSFMFactor.h replace #ifdef with #if for GTSAM_ENABLE_BOOST_SERIALIZATION 2024-12-26 23:44:00 -05:00
InitializePose.h Merge branch 'develop' into feature/remove_boost_in_Values 2023-01-22 21:32:27 -08:00
InitializePose3.cpp Got rid or ifdefed many boost headers 2023-02-05 20:45:54 -08:00
InitializePose3.h Kill more boost headers 2023-02-05 20:45:54 -08:00
JacobianFactorQ.h Use KeyVector everywhere to avoid conversions 2018-11-08 10:10:32 -05:00
JacobianFactorQR.h Replace std::tie with c++17 pattern matching 2023-02-04 10:28:14 -08:00
JacobianFactorSVD.h Documented linear factors better. 2021-08-29 16:33:50 -04:00
KarcherMeanFactor-inl.h shared_ptr, make_shared, allocate_shared 2023-01-22 08:40:02 -08:00
KarcherMeanFactor.h Change all occurances of unnamed enum (deprecated in C++20) to `constexpr` 2024-12-12 10:27:42 -05:00
OrientedPlane3Factor.cpp changed signatures to use OptionalMatrix keyword 2023-01-20 18:06:55 -08:00
OrientedPlane3Factor.h return before using statement 2023-01-20 18:06:55 -08:00
PlanarProjectionFactor.h add newlines 2024-12-24 14:32:44 -08:00
PoseRotationPrior.h replace #ifdef with #if for GTSAM_ENABLE_BOOST_SERIALIZATION 2024-12-26 23:44:00 -05:00
PoseTranslationPrior.h replace #ifdef with #if for GTSAM_ENABLE_BOOST_SERIALIZATION 2024-12-26 23:44:00 -05:00
PriorFactor.h Make small commit to re-trigger travis build. 2020-04-13 10:37:35 -04:00
ProjectionFactor.h replace #ifdef with #if for GTSAM_ENABLE_BOOST_SERIALIZATION 2024-12-26 23:44:00 -05:00
README.md Fix slam module README 2024-04-03 16:15:54 +05:30
RangeFactor.h remove trailing spaces 2019-02-11 10:58:34 -05:00
ReferenceFrameFactor.h replace #ifdef with #if for GTSAM_ENABLE_BOOST_SERIALIZATION 2024-12-26 23:44:00 -05:00
RegularImplicitSchurFactor.h Replace make_pair with {} 2023-02-04 09:08:34 -08:00
RotateFactor.h replaced casts 2023-01-22 08:40:02 -08:00
SmartFactorBase.h replace #ifdef with #if for GTSAM_ENABLE_BOOST_SERIALIZATION 2024-12-26 23:44:00 -05:00
SmartFactorParams.h replace #ifdef with #if for GTSAM_ENABLE_BOOST_SERIALIZATION 2024-12-26 23:44:00 -05:00
SmartProjectionFactor.h replace #ifdef with #if for GTSAM_ENABLE_BOOST_SERIALIZATION 2024-12-26 23:44:00 -05:00
SmartProjectionPoseFactor.h replace #ifdef with #if for GTSAM_ENABLE_BOOST_SERIALIZATION 2024-12-26 23:44:00 -05:00
SmartProjectionRigFactor.h replace #ifdef with #if for GTSAM_ENABLE_BOOST_SERIALIZATION 2024-12-26 23:44:00 -05:00
StereoFactor.h replace #ifdef with #if for GTSAM_ENABLE_BOOST_SERIALIZATION 2024-12-26 23:44:00 -05:00
TriangulationFactor.h replace #ifdef with #if for GTSAM_ENABLE_BOOST_SERIALIZATION 2024-12-26 23:44:00 -05:00
dataset.cpp Updated: Build tests, fixed some unit tests. Floating points still off. 2024-12-02 16:00:26 -05:00
dataset.h Remove serialization header 2023-02-06 01:35:14 -08:00
expressions.h exposes templated Expression wrappers for interpolate 2025-02-27 20:58:30 +11:00
lago.cpp Got rid or ifdefed many boost headers 2023-02-05 20:45:54 -08:00
lago.h Address review comments 2023-02-05 10:33:24 -08:00
slam.i Add BetweenFactor for Similiarity2 2025-03-21 11:16:47 -04:00

README.md

SLAM Factors

GenericProjectionFactor (defined in ProjectionFactor.h)

Non-linear factor that minimizes the re-projection error with respect to a 2D measurement. The calibration is assumed known and passed in the constructor. The main building block for visual SLAM.

Templated on

  • POSE, default Pose3
  • LANDMARK, default Point3
  • CALIBRATION, default Cal3_S2

SmartFactors

These are "structure-less" factors, i.e., rather than introducing a new variable for an observed 3D point or landmark, a single factor is created that provides a multi-view constraint on several poses and/or cameras. While one typically adds multiple GenericProjectionFactors (one for each observation of a landmark), a SmartFactor collects all measurements for a landmark, i.e., the factor graph contains 1 smart factor per landmark.

SmartFactorBase

This is the base class for smart factors, templated on a CAMERA type. It has no internal point, but it saves the measurements, keeps a noise model, and an optional sensor pose.

SmartProjectionFactor

Also templated on CAMERA. Triangulates a 3D point and keeps an estimate of it around. This factor operates with monocular cameras, and is used to optimize the camera pose and calibration for each camera, and requires variables of type CAMERA in values.

If the calibration is fixed use SmartProjectionPoseFactor instead!

SmartProjectionPoseFactor

Derives from SmartProjectionFactor but is templated on a CALIBRATION type, setting CAMERA = PinholePose<CALIBRATION>. This factor assumes that the camera calibration is fixed and the same for all cameras involved in this factor. The factor only constrains poses.

If the calibration should be optimized, as well, use SmartProjectionFactor instead!

SmartProjectionRigFactor

Same as SmartProjectionPoseFactor, except:

  • it is templated on CAMERA, i.e., it allows cameras beyond pinhole;
  • it allows measurements from multiple cameras, each camera with fixed but potentially different intrinsics and extrinsics;
  • it allows multiple observations from the same pose/key, again, to model a multi-camera system.

Linearized Smart Factors

The factors below are less likely to be relevant to the user, but result from using the non-linear smart factors above.

RegularImplicitSchurFactor

A specialization of a GaussianFactor to structure-less SFM, which is very fast in a conjugate gradient (CG) solver. It is produced by calling createRegularImplicitSchurFactor in SmartFactorBase or SmartProjectionFactor.

JacobianFactorQ

A RegularJacobianFactor that uses some badly documented reduction on the Jacobians.

JacobianFactorQR

A RegularJacobianFactor that eliminates a point using sequential elimination.

JacobianFactorSVD

A RegularJacobianFactor that uses the "Nullspace Trick" by Mourikis et al. See the documentation in the file, which is well documented.