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.
- 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.
- 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 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
.
- C++ examples are built by default with Cmake to
bin
. Supplemental jupyter notebooks and source are found inexamples
.