Skip to content

Releases: JuliaControl/ModelPredictiveControl.jl

v0.24.0

05 Sep 21:24
b320658
Compare
Choose a tag to compare

ModelPredictiveControl v0.24.0

Diff since v0.23.1

  • breaking change: MovingHorizonEstimator now default to direct=true
  • added: the current/filter formulation of the MovingHorizonEstimator
  • doc: explicitly list all the keyword arguments of all the state estimator
  • added: soft real time utilities
  • added: InternalModel now produces 0 allocation with preparestate! and updatestate! calls
  • tests: new integration tests that compare unconstrained MHE to UKF and KF results
  • tests: new integration that compare LinModel and NonLinModel

Merged pull requests:

  • Added: soft real time utilities (#94) (@franckgaga)
  • added: MovingHorizonEstimator support for direct=true, initialized with P̂(-1|-1) (#96) (@franckgaga)

Closed issues:

  • Real-time loop tools (#85)

v0.23.1

13 Aug 22:10
5bdfd14
Compare
Choose a tag to compare

ModelPredictiveControl v0.23.1

Diff since v0.23.0

  • Luenberger, SteadyKalmanFilter, KalmanFilter and UnscentedKalmanFilter now produce 0 allocation with preparestate! and updatestate! calls
  • doc: minor corrections

Merged pull requests:

  • added: doc correction and reduce allocations for all Kalman filters (#93) (@franckgaga)

Closed issues:

  • Support for current estimators and V1 soon? (#89)

v0.23.0

09 Aug 00:15
d10a731
Compare
Choose a tag to compare

ModelPredictiveControl v0.23.0

Diff since v0.22.1

BREAKING CHANGES

  • preparestate! should be called before solving the MPC optimization with moveinput!
  • current form by default for all StateEstimator
  • ym keyword argument of moveinput! removed (was only for InternalModel, I now use the new preparestate! method)
  • MovingHorizonEstimator advanced constructor (with complete covariance matrices): covestim and optim are now keyword arguments instead of positional arguments.

Changelog

  • added: current form for all StateEstimator except MovingHorizonEstimator, to improve accuracy and closed-loop robustness
  • reduce allocation for SimModeland StateEstimator instances by using internal buffers
  • multiple doc correction

Merged pull requests:

v0.22.1

03 Jul 20:12
fb89cbe
Compare
Choose a tag to compare

ModelPredictiveControl v0.22.1

Diff since v0.22.0

  • added: support for Mwt, Nwt and Lwt keyword arguments in setmodel! (to simplify the API)
  • reduce allocations in setconstraint!
  • minor doc corrections

Merged pull requests:

Closed issues:

  • How to successfully impose constraints to a Control Variable with high priority (#78)

v0.22.0

09 Jun 22:24
6e44268
Compare
Choose a tag to compare

ModelPredictiveControl v0.22.0

Diff since v0.21.3

BREAKING CHANGE

Migration the new nonlinear programming syntax of JuMP. Some optimizers may not support it yet.

  • added: online modification of objective function weights and covariance matrices with setmodel!
  • added: accept indices and ranges in plot keyword arguments
  • changed: migrate the NLP code to the new syntax
  • doc: added plot result previews with static images
  • new tests for new plot recipes and weights/covariances modification

Merged pull requests:

Closed issues:

  • MPC getinfo results (#76)

v0.21.3

16 May 23:20
58fd28a
Compare
Choose a tag to compare

ModelPredictiveControl v0.21.3

Diff since v0.21.2

  • added: index ranges or vectors for plot keyword arguments (to select variables to plot)
  • doc: separate page for sim! and plot functions
  • doc: document plot keyword arguments
  • doc: plot results in examples

Merged pull requests:

v0.21.2

09 May 01:16
bd1b76f
Compare
Choose a tag to compare

ModelPredictiveControl v0.21.2

Diff since v0.21.1

  • added: show sim! % progress and ETA in VS Code status bar
  • added: plot estimated state constraints x̂min/x̂max for MHE
  • debug: RungeKutta diff cache chuck size nx+2
  • doc: added plot recipe documentation (for keyword arguments)
  • tests: unconstrained MHE vs KF/UKF tests

Merged pull requests:

v0.21.1

03 May 03:04
721d825
Compare
Choose a tag to compare

ModelPredictiveControl v0.21.1

Diff since v0.21.0

  • added: non-Unicode alternative keyword arguments in public functions
  • added: modify plots Y-axis labels with setname!
  • debug: plots Ru instead of Ry for u setpoint (recipe)
  • remove one useless allocation in updatestate!
  • various doc corrections and improvements

Merged pull requests:

Closed issues:

  • Remove unicode char in keyword arguments (or offer an alternative) ? (#61)

v0.21.0

26 Apr 02:32
dc8681a
Compare
Choose a tag to compare

ModelPredictiveControl v0.21.0

Diff since v0.20.2

BREAKING CHANGE
All the keyword arguments related to initial values e.g. σP0, x0 and x̂0 now require an underscore e.g. σP_0, x_0, x̂_0 (to differentiate from operating point deviation vectors)

  • Added: setmodel! for runtime model adaptation of controller/estimator based on LinModel
  • Added: linearize and setop! now support non-equilibrium points
  • Added: successive linearization MPC with the new setmodel! and linearize functions
  • Added: successive linearization MHE with the new setmodel! and linearize functions
  • Added: linearize! method for in-place model linearization (to reduce allocations)
  • Added: 6 args. LinModel constructor now support scalars (similarly to ss function)
  • Added: ExtendedKalmanFilter now compute the Jacobians in-place (to reduce allocations)
  • Changed: struct state data x and state estimate renamed to x0 and x̂0
  • Debug: ExplicitMPC with non-Float64 now works
  • Debug: accept integers in linearize arguments
  • Debug: call empty! on JuMP.Model to support re-construction of MPC instances
  • Doc: new setmodel!, setop! and linearize function documentation
  • Doc: example of model adaptation with successive linearization on the pendulum (very efficient!)

Merged pull requests:

  • Added: adaptatation of LinMPC model through setmodel! (#52) (@franckgaga)
  • Added: adaptation of controller/estimator based on LinModel (#54) (@franckgaga)
  • Added: setmodel! for MovingHorizonEstimator (#55) (@franckgaga)

v0.20.2

12 Apr 01:28
3228f29
Compare
Choose a tag to compare

ModelPredictiveControl v0.20.2

Diff since v0.20.1

  • added: print info on controller and estimator constraint softening (slack var. ϵ)
  • reduce allocations LinMPC, NonLinMPC, MovingHorizonEstimator
  • cleanup namespace with imports instead of usings

Merged pull requests:

  • Changed: avoid collect in NonLinMPC and MovingHorizonEstimator objective and constraints (#46) (@franckgaga)
  • changed: error handling one less alloc (#47) (@franckgaga)
  • added: print info on controller and estimator constraints softening (#49) (@franckgaga)
  • cleaning the namespace with imports instead of usings (#50) (@franckgaga)
  • Namespace, NonLinMPC and MovingHorizonEsitimator cleanup (#51) (@franckgaga)