Active development of AutoMPC has been moved to https://github.com/uiuc-iml/autompc. Please follow and update references to the new repository for the latest changes!
Welcome to AutoMPC, a library for automating system identification and model predictive control. AutoMPC can
- Build SystemID models and Controllers
- Evaluate and compare models and controllers
- Tune controllers without requiring interactive access to the system
- Provides a variety of controllers and optimizers
To see AutoMPC in action, check out this example .
System ID and Model Predictive Control are powerful tools for building robot controllers, but getting them up and running can take a lot of engineering work. Achieving good performance typically requires careful selection of a number of hyperparameters, including the MPC horizon, the terms of the objective function, and the parameters of the System ID algorithm. AutoMPC automates the selection of these hyperparameters and provides a toolbox of algorithms to choose from.
AutoMPC tunes hyperparameters for the System ID, Control Optimizer, and objective function using a dataset collected offline. In other words, AutoMPC does not need to interact with the robot during tuning. This is accomplished by initially training a surrogate dynamics model. During tuning, the surrogate dynamics are then used to simulate candidate controllers in order to evaluate closed-loop performance.
For more details, see our paper
Check out our main example to see an overview of the AutoMPC workflow.
If you are interested, check out our detailed examples for more information on how to use the different parts of AutoMPC.
For System ID, AutoMPC supports
- Multi-layer Perceptrons
- Sparse Identification of Nonlinear Dynamics (SINDy)
- Autoregression
- Koopman Operators
- Approximate Gaussian Processes
For control optimization, AutoMPC supports
AutoMPC is also extensible, so you can use our tuning process with your own System ID and control methods. We'd also welcome contributions of new algorithms to the package.
- Clone the repository
- Install PyTorch
- (Optional) For certain benchmarks to work, install OpenAI gym and Mujoco
- (Optional) To use DirectTranscriptionController, install IPOPT solver and cyipopt binding. See instructions
- Run
pip install -r requirements.txt
- Run
pip install -e .
The documentation can also be built offline. This requires Sphinx to be installed, which can be done by running
pip install sphinx
To build or re-build the documentation, run the following command from the docs/
subdirectory.
make html
The documentation will be produced in docs/html
.