diff --git a/README.md b/README.md index d160d35ea..5ecafa3c5 100644 --- a/README.md +++ b/README.md @@ -70,80 +70,3 @@ plot(res, plotry=true, plotymax=true) See the [manual](https://JuliaControl.github.io/ModelPredictiveControl.jl/stable/manual/linmpc/) for more detailed examples. - -## Features - -### Model Predictive Control Features - -- linear and nonlinear plant models exploiting multiple dispatch -- model linearization based on automatic differentiation (exact Jacobians) -- supported objective function terms: - - output setpoint tracking - - move suppression - - input setpoint tracking - - terminal costs - - custom economic costs (economic model predictive control) -- control horizon distinct from prediction horizon and custom move blocking -- adaptive linear model predictive controller - - manual model modification - - automatic successive linearization of a nonlinear model - - objective function weights and covariance matrices modification -- explicit predictive controller for problems without constraint -- online-tunable soft and hard constraints on: - - output predictions - - manipulated inputs - - manipulated inputs increments - - terminal states to ensure nominal stability -- custom nonlinear inequality constraints (soft or hard) -- supported feedback strategy: - - state estimator (see State Estimation features) - - internal model structure with a custom stochastic model -- automatic model augmentation with integrating states for offset-free tracking -- support for unmeasured model outputs -- feedforward action with measured disturbances that supports direct transmission -- custom predictions for (or preview): - - output setpoints - - measured disturbances - - input setpoints -- easy integration with `Plots.jl` -- optimization based on `JuMP.jl` to quickly compare multiple optimizers: - - many quadratic solvers for linear control - - many nonlinear solvers for nonlinear control (local or global) -- derivatives based on `DifferentiationInterface.jl` to compare different approaches: - - automatic differentiation (exact solution) - - symbolic differentiation (exact solution) - - finite difference (approximate solution) -- supported transcription methods of the optimization problem: - - direct single shooting - - direct multiple shooting - - trapezoidal collocation -- additional information about the optimum to ease troubleshooting -- real-time control loop features: - - implementations that carefully limits the allocations - - simple soft real-time utilities - -### State Estimation Features - -- supported state estimators/observers: - - steady-state Kalman filter - - Kalman filter - - Luenberger observer - - internal model structure - - extended Kalman filter - - unscented Kalman filter - - moving horizon estimator -- disable built-in observer to manually provide your own state estimate -- easily estimate unmeasured disturbances by adding one or more integrators at the: - - manipulated inputs - - measured outputs -- bumpless manual to automatic transfer for control with a proper initial estimate -- estimators in two possible forms: - - filter (or current) form to improve accuracy and robustness - - predictor (or delayed) form to reduce computational load -- moving horizon estimator in two formulations: - - linear plant models (quadratic optimization) - - nonlinear plant models (nonlinear optimization) -- moving horizon estimator online-tunable soft and hard constraints on: - - state estimates - - process noise estimates - - sensor noise estimates