A library for multibody forward and inverse dynamics, state estimation, and parameter identification.
Related papers and approaches implemented in this repository:
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)
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)
Dependencies:
- A C++ compiler
- CMake
- SuiteSparse
- MRPT (>=2.0.0)
- Ubuntu: Use this PPA
- GTSAM >=4.2
- Ubuntu: Use this PPA
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.
- For GTSAM <=4.2, use the
master
branch of this project. - For GTSAM >=4.3 (or their
develop
branch), use branchnewer-gtsam
.
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.
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.
Distributed under the 3-clause BSD license.