Dcsam
Factored inference for discrete-continuous smoothing and mapping.
Install / Use
/learn @MarineRoboticsGroup/DcsamREADME
dcsam
This library, built using GTSAM, provides factor type definitions and a new solver to perform approximate inference on discrete-continuous (hybrid) factor graph models typically encountered in robotics applications.
NOTE: As of 3/01/2026 the latest version of DC-SAM on main depends on GTSAM develop
Thanks to Varun Agrawal for bringing DC-SAM up to date with GTSAM.
If you are using GTSAM 4.1.1, check out our pre-4.2 release tag. This is the version of DC-SAM you would have used if you cloned the repository prior to 1/30/2023. Many thanks to Parker Lusk for bringing us into the future.
References
A technical report describing this library and our solver can be found here. If you found this code useful, please cite it as:
@article{doherty2022discrete,
author={Doherty, Kevin J. and Lu, Ziqi and Singh, Kurran and Leonard, John J.},
journal={IEEE Robotics and Automation Letters},
title={Discrete-{C}ontinuous {S}moothing and {M}apping},
year={2022},
volume={7},
number={4},
pages={12395-12402},
doi={10.1109/LRA.2022.3216938}
}
Prerequisites
- GTSAM @
develop
To retrieve the appropriate version of GTSAM:
~ $ git clone https://github.com/borglab/gtsam
~ $ cd gtsam
~/gtsam $ git checkout 4.2a8
Follow instructions in the GTSAM repository to build and install with your desired configuration.
Optional
- gtest for building tests.
Building
Building the project
To build using cmake:
~/dcsam $ mkdir build
~/dcsam $ cd build
~/dcsam/build $ cmake ..
~/dcsam/build $ make -j
Run tests
To run unit tests, first build with testing enabled:
~/dcsam $ mkdir build
~/dcsam $ cd build
~/dcsam/build $ cmake .. -DDCSAM_ENABLE_TESTS=ON
~/dcsam/build $ make -j
Now you can run the tests as follows:
~/dcsam/build $ make test
Examples
For example usage, check out the DC-SAM examples repo or take a look through testDCSAM.cpp.
Developing
We're using pre-commit for automatic linting. To install pre-commit run:
pip3 install pre-commit
You can verify your installation went through by running pre-commit --version and you should see something like pre-commit 2.7.1.
To get started using pre-commit with this codebase, from the project repo run:
pre-commit install
Now, each time you git add new files and try to git commit your code will automatically be run through a variety of linters. You won't be able to commit anything until the linters are happy with your code.
Related Skills
node-connect
338.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
338.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.4kCommit, push, and open a PR
