Skip to content

SIA - C++/Python library for model-based stochastic estimation and optimal control

License

Notifications You must be signed in to change notification settings

parkerowan/libsia

Repository files navigation

libSIA - Model-based Stochastic Estimation and Control

pipeline status codecov

Documentation and tutorials

Sia is a C++/Python library for model-based stochastic estimation and optimal control. The current scope is on unconstrained continuous state and action vector spaces. Due to the focus on stochastic models, belief and dynamical systems are first-class representations. Algorithms included with the library are general purpose and can be applied to many different applications.

Features

  • Finite horizon model predictive control (MPC) including LQR, iLQR, and model predictive path integrals (MPPI).
  • Bayesian estimation including Kalman, extended Kalman, and particle filters.
  • Markov dynamical systems including nonlinear/Gaussian, linear/Gaussian, and their discrete/continuous time variants.
  • Distributions for representing belief including Gaussian, Dirichlet, uniform, categorical, particle, Kernel densities (KDE), Gaussian mixture models (GMM), Gaussian mixture regression (GMR), Gaussian Process Regression (GPR), and Gaussian Process Classification (GPC).
  • Built-in constrained Gradient Descent and Bayesian Optimization.
  • Math functions for Runge-Kutta integration, SVD-based matrix inversion.
  • Minimal dependencies in the core library (Eigen, glog).
  • Python bindings with Pybind11.
  • C++ and Python examples and tutorials.
  • Extensive unit tests with gtest.
  • BSD-3 permissive license.

Gallery

Chaotic Lorenz attractor particle filter estimation Celestial navigation with iLQR Underactuated cartpole control with iLQR, MPPI

Build

  • Install Docker. Check the included Dockerfile for project dependencies.
  • Build the Docker container using scripts/run --build.
  • Launch the Docker container using scripts/run --bash.
  • Build and install the C++ package with cmake and make.
mkdir build && cd build
cmake ..
make && make install
make test
  • Build and install the Python bindings with pip (C++ library must be installed first in previous step). In the root directory, run
pip install --upgrade .

Documentation

  • Documentation is hosted on gitlab pages.
  • It is provided with Sphinx, and built to public/. It can be built with
cd build
cmake ..
make docs
  • Tutorials and in-depth usage are provided in docs/notebooks.

Examples

  • C++ examples are built by default with Cmake to bin. Supplemental jupyter notebooks and source are found in examples.