@@ -73,77 +73,31 @@ for more detailed examples.
7373
7474## Features
7575
76- ### Model Predictive Control Features
77-
78- - linear and nonlinear plant models exploiting multiple dispatch
79- - model linearization based on automatic differentiation (exact Jacobians)
80- - supported objective function terms:
81- - output setpoint tracking
82- - move suppression
83- - input setpoint tracking
84- - terminal costs
85- - custom economic costs (economic model predictive control)
86- - control horizon distinct from prediction horizon and custom move blocking
87- - adaptive linear model predictive controller
88- - manual model modification
89- - automatic successive linearization of a nonlinear model
90- - objective function weights and covariance matrices modification
91- - explicit predictive controller for problems without constraint
92- - online-tunable soft and hard constraints on:
93- - output predictions
94- - manipulated inputs
95- - manipulated inputs increments
96- - terminal states to ensure nominal stability
97- - custom nonlinear inequality constraints (soft or hard)
98- - supported feedback strategy:
99- - state estimator (see State Estimation features)
100- - internal model structure with a custom stochastic model
101- - automatic model augmentation with integrating states for offset-free tracking
102- - support for unmeasured model outputs
103- - feedforward action with measured disturbances that supports direct transmission
104- - custom predictions for (or preview):
105- - output setpoints
106- - measured disturbances
107- - input setpoints
108- - easy integration with ` Plots.jl `
109- - optimization based on ` JuMP.jl ` to quickly compare multiple optimizers:
110- - many quadratic solvers for linear control
111- - many nonlinear solvers for nonlinear control (local or global)
112- - derivatives based on ` DifferentiationInterface.jl ` to compare different approaches:
113- - automatic differentiation (exact solution)
114- - symbolic differentiation (exact solution)
115- - finite difference (approximate solution)
116- - supported transcription methods of the optimization problem:
117- - direct single shooting
118- - direct multiple shooting
119- - trapezoidal collocation
120- - additional information about the optimum to ease troubleshooting
121- - real-time control loop features:
122- - implementations that carefully limits the allocations
123- - simple soft real-time utilities
124-
125- ### State Estimation Features
126-
127- - supported state estimators/observers:
128- - steady-state Kalman filter
129- - Kalman filter
130- - Luenberger observer
131- - internal model structure
132- - extended Kalman filter
133- - unscented Kalman filter
134- - moving horizon estimator
135- - disable built-in observer to manually provide your own state estimate
136- - easily estimate unmeasured disturbances by adding one or more integrators at the:
137- - manipulated inputs
138- - measured outputs
139- - bumpless manual to automatic transfer for control with a proper initial estimate
140- - estimators in two possible forms:
141- - filter (or current) form to improve accuracy and robustness
142- - predictor (or delayed) form to reduce computational load
143- - moving horizon estimator in two formulations:
144- - linear plant models (quadratic optimization)
145- - nonlinear plant models (nonlinear optimization)
146- - moving horizon estimator online-tunable soft and hard constraints on:
147- - state estimates
148- - process noise estimates
149- - sensor noise estimates
76+ ### 🎯 Model Predictive Control Features
77+
78+ - 🏭️ ** Plant Model** : Linear or nonlinear models exploiting multiple dispatch.
79+ - ⛳️ ** Objectives** : Tracking for inputs/outputs, move suppression, terminal costs, and economic costs.
80+ - ⏳ ** Horizons** : Distinct prediction/control horizons with custom move blocking.
81+ - 📸 ** Linearization** : Auto-differentiation for exact Jacobians.
82+ - ⚙️ ** Adaptive MPC** : Manual model updates or automatic successive linearization.
83+ - 🏎️ ** Explicit MPC** : Specialized for unconstrained problems.
84+ - 🚧 ** Constraints** : Soft/hard limits on inputs, outputs, increments, and terminal states.
85+ - 🔁 ** Feedback** : Internal model or state estimators (see features below).
86+ - 📡 ** Feedforward** : Integrated support for measured disturbances.
87+ - 🔮 ** Preview** : Custom predictions for setpoints and measured disturbances.
88+ - 📈 ** Offset-Free** : Automatic model augmentation with integrators.
89+ - 📊 ** Visuals** : Easy integration with ` Plots.jl ` .
90+ - 🧩 ** Solvers** : Optimization via ` JuMP.jl ` (quadratic & nonlinear) and derivatives via ` DifferentiationInterface.jl ` .
91+ - 📝 ** Transcription** : Direct single/multiple shooting and trapezoidal collocation.
92+ - 🩺 ** Troubleshooting** : Detailed diagnostic information about optimum.
93+ - ⏱️ ** Real-Time** : Optimized for low memory allocations with soft real-time utilities.
94+
95+ ### 🔭 State Estimation Features
96+
97+ - 🔍️ ** Estimators** : Many Kalman filters, Luenberger, and Moving Horizon Estimator (MHE).
98+ - 🎛️ ** Customization** : Ability to use custom/external state estimates.
99+ - 🌊 ** Disturbances** : Estimate unmeasured disturbances via integrators on inputs/outputs.
100+ - 🛣️ ** Bumpless Transfer** : Smooth transitions from manual to automatic control.
101+ - ⌚️ ** Timing** : Estimators available in filter (current) or predictor (delayed) forms.
102+ - 🏷️ ** MHE Types** : Formulations for both linear (quadratic optimization) and nonlinear plants.
103+ - 🛡️ ** MHE Constraints** : Tunable soft/hard constraints on state and noise estimates.
0 commit comments