[ANN] ModelPredictiveControl.jl

ModelPredictiveControl v0.13.0

I watched @baggepinnen presentation at JuliaCon 2023 (nice presentation Fredrik btw!) and it gave me the idea of a new cool feature : the linearize function. Gain scheduling should be quite easy with this. It is not possible to modify the plant model of a LinMPC instance right now, but I will probably add this feature soon. Gain scheduling is still possible using multiple LinMPC objects.

Also, I did a major refactoring of the code to support generic number types across the package. Note that most solvers in JuMP only support Float64 numbers. Thus, PredictiveController objects still default to Float64-based optimizers, even if the plant model or state estimator uses other number types.

In short, the new features are:

  • added: linearization of NonLinModel based on ForwardDiff.jl
  • added: generic number types in all SimModel, StateEstimator and PredictiveController objects
  • doc: example of linearize on the pendulum
  • doc: example of solving MPC with unstable plant model using DAQP
  • tests for linearize function
  • tests with Float32 numbers

I will register the new version soon.

5 Likes