WIP alert: The code within this reposity is in a WIP state and may not have undergone rigorous testing and may exhibit instability. Use at your own discretion.
This repository is a fork from forgi86/pyMPC with an additional feature that replaces OSQP with ProxQP. Preliminary experiments on examples/example_inverted_pendulum.py
sometime ran faster than OSQP.
pyMPC requires the following packages:
This code snippets illustrates the use of the MPCController class:
from pyMPC.mpc import MPCController
K = MPCController(Ad,Bd,Np=20, x0=x0,xref=xref,uminus1=uminus1,
Qx=Qx, QxN=QxN, Qu=Qu,QDu=QDu,
xmin=xmin,xmax=xmax,umin=umin,umax=umax,Dumin=Dumin,Dumax=Dumax)
K.setup()
...
xstep = x0
for i in range(nsim):
uMPC = K.output()
xstep = Ad.dot(xstep) + Bd.dot(uMPC) # system simulation steps
K.update(xstep) # update with measurement
Full working examples are given in the examples folder:
- Point mass with input force and friction
- Inverted pendulum on a cart
- Inverted pendulum on a cart with kalman filter
This code have been directly source from forgi86/pyMPC. We are grateful to the original authors and maintainers for their work.