Skip to content

Mixed-Integer MPC library. Was successfully demonstrated on a free-floating platform with binary thrusters (under timing constraints) and a reaction wheel.

License

Notifications You must be signed in to change notification settings

dfki-ric-underactuated-lab/mimpc

Repository files navigation

MIMPC++

A fast typesafe Mixed Integer Model Predictive Control C++ library

Description

The library was originally developed as a fast implementation of an MPC for European Space Agency's free-floating platform REACSA which is controlled by a continuous actuated Reaction Wheel and eight binary actuated thrusters under dwell time constraints.

This project contains:

  1. A MIMPC library that has been designed to provide a fast MPC for any system that combines continuous and binary actuators under dwell time constraints.
  2. A Simulator that provides a simulation based on Drake toolbox that simulates the free-floating platform REACSA controlled by the MPC.
  3. Example code (examples/) that shows how to use the library together with the simulator.

Documentation

Full documentation under: Documentation & Code-API

Installation

Please refer to the installation instructions. For simple use a Dockerfile is available. To build and run the container simply run:

docker build -t mimpc .

To directly run the example run:

docker run -it --init --network="host" mimpc build/reacsamimpc

Or simply launch the container and play around:

docker run -it --network="host" mimpc 

(Note that when trying to stop the controller in docker CTRL+C might get cought, making it nececarry to press it 5 times to enforce termination.)

Usage

Run examples

When the simulation and examples have been built, run ./build/reacsamimpc within the repos root folder. It starts a few tests with the simulated free-floating platform REACSA and safes the results. The simulation creates a visualization that can be rendered by opening (http://localhost:7000) in any browser.

Use the library

(Full documentation under: Documentation & Code-API)

To get a fully working MIMPC for your own system the system dynamics have to be specified by deriving from mimpc::System. The library provides next to mimpc::System two main interfaces:

  • mimpc::Solver is the low level interface in which the dwell time constraints, the cost function and the system constraints can be specified. It also provides the functionality to set the current state, solve the problem and retrieve the optimal solution. Currently, the library with mimpc::SCIPSolver only contains one Solver that implements this low-level interface. It is based on the open-source SCIP solver (https://scipopt.org/). To integrate your favorite solver, derive from mimpc::Solver
  • mimpc::MPC is the high-level interface that warps a configured mimpc::Solver implementation and wraps the typical MPC control loop into a simpler interface.

Authors

Feel free to contact us if you have questions about the library or examples. Enjoy!

Acknowledgments

The authors would like to thank the support of the projects M-RoCk (Grant No.: FKZ 01IW21002), AAPLE (Grant Number: 50WK2275) and COOPERANTS (Grant No.: 68GX21003H). Further many thanks to the University of Lübeck and especially the Institute for Electrical Engineering in Medicine, the Underactuated Robotics Lab and European Space Agencies Orbital Robotics Lab for the collaboration.

License

This work has been released under the BSD 3-Clause License. Details and terms of use are specified in the LICENSE file within this repository. Note that we do not publish third-party software, hence software packages from other developers are released under their very own terms and conditions, e.g. Stable baselines (MIT License) and Tensorflow (Apache License v2.0). If you install third-party software packages along with this repo ensure that you follow each individual license agreement.

Citation

Please cite one of the following works:

[1] F. Stark, S. Vyas, G. Schildbach, and F. Kirchner, “Mixed Integer Model Predictive Control for a free-floating platform with binary and continuous actuation,” in Proceeding of CEAS Conference on Guidance, Navigation and Control 2024 (EuroGNC 2024), Bristol, 2024. url: CEAS-GNC-2024-013

@inproceedings{stark_mixed_2024,
    authors = {Stark, Franek and Vyas, Shubham and Schildbach, Georg and Kirchner, Frank},
    title = {Mixed Integer Model Predictive Control for a free-floating platform with binary and continuous actuation},
    booktitle = {Proceedings of the 2024 {CEAS EuroGNC} conference},
    address = {Bristol, UK},
    month = jun,
    year = {2024},
    note = {CEAS-GNC-2024-013}
}

[2] F. Stark, S. Vyas, G. Schildbach, and F. Kirchner, “Linear Model Predictive Control for a planar free-floating platform: A comparison of binary input constraint formulations,” in Proccedings of 17th Symposium on Advanced Space Technologies in Robotics and Automation, Oct. 2023. doi: 10.48550/arXiv.2312.10788.

@inproceedings{stark_linear_2023,
	title = {Linear {Model} {Predictive} {Control} for a planar free-floating platform: {A} comparison of binary input constraint formulations},
	volume = {17},
	copyright = {All rights reserved},
	doi = {10.48550/arXiv.2312.10788},
	booktitle = {Proccedings of 17th {Symposium} on {Advanced} {Space} {Technologies} in {Robotics} and {Automation}},
	author = {Stark, Franek and Vyas, Shubham and Schildbach, Georg and Kirchner, Frank},
	month = oct,
	year = {2023},
}

[3] F. Stark, “Model Predictive Control for 3-dof free floating platform with binary actuated thrusters and reaction wheel,” Master Thesis, Univerität zu Lübeck, Lübeck, Germany, 2023.

@mastersthesis{stark_model_2023,
	address = {Lübeck, Germany},
	title = {Model {Predictive} {Control} for 3-dof free floating platform with binary actuated thrusters and reaction wheel},
	school = {Univerität zu Lübeck},
	author = {Stark, Franek},
	month = oct,
	year = {2023},
}

About

Mixed-Integer MPC library. Was successfully demonstrated on a free-floating platform with binary thrusters (under timing constraints) and a reaction wheel.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published