Skip to content

MultiBody Dynamics Estimators: Particle filter and factor-graph estimators

License

Notifications You must be signed in to change notification settings

MBDS/multibody-state-estimation

Repository files navigation

CI Linux CI Check clang-format Docs Gitpod ready-to-code

The MultiBody State Estimation (MBSE) C++ library

A library for multibody forward and inverse dynamics, state estimation, and parameter identification.

Related papers and approaches implemented in this repository:

Paradigm #1: Based on factor-graphs

Forward and inverse dynamics, closed kinematic chains constraints solved as factors in a factor graphs, and more.

For the theory behinds this work, refer to :

  • J.L. Blanco, A. Leanza, G. Reina, "A general framework for modeling and dynamic simulation of multibody systems using factor graphs", 2021. (ArXiV)

ScreenShot

Paradigm #2: Particle filter estimator

A Bayesian filter has been implemented as a particle filter. Only planar dynamics models have been tested. For the theory behinds this work, refer to :

  • J.L. Blanco, J.L. Torres, A. Gimenez-Fernandez, "Multibody dynamic systems as Bayesian Networks: applications to robust state estimation of mechanisms", Multibody System Dynamics, vol. 34, no. 2, pp. 103-128, 2015. (Draft PDF, PDF, BibTeX)
[Open video](https://www.youtube.com/watch?v=7Zru0oiz36g)

ScreenShot

Compiling

Dependencies:

In Ubuntu, install dependencies with:

    sudo apt-get install build-essential cmake libsuitesparse-dev libmrpt-dev libgtsam-dev

To build:

    mkdir build
    cd build
    cmake ..  
    # If you see no errors, go on, otherwise fix them!
    make        # To compile the library and examples
    make test_legacy   # To run unit tests

You should also be able to compile this project under Windows and Visual Studio.

GTSAM versions

  • For GTSAM <=4.2, use the master branch of this project.
  • For GTSAM >=4.3 (or their develop branch), use branch newer-gtsam.

Using mbse as a library in a user program

In your CMake project, add:

    find_package(mbse REQUIRED)
    # then in your target:
    target_link_libraries(${PROJECT_NAME} mbse::mbse)

For CMake to find the library, in cmake-gui or ccmake, set the variable mbse_DIR to BUILD_DIR/cmake, where BUILD_DIR is the compilation directory where you built MBSE.

Contributing

Make sure to enable clang-format-14 in your IDE, or manually run:

find libmbse/ -iname '*.h' -o -iname '*.cpp' | xargs clang-format-14 -i

to avoid format-only diffs in Git commits.

License

Distributed under the 3-clause BSD license.

About

MultiBody Dynamics Estimators: Particle filter and factor-graph estimators

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages