Skip to content

Commit be57e4a

Browse files
committed
remove checkboxes in readme
1 parent 3d98d6d commit be57e4a

File tree

2 files changed

+67
-63
lines changed

2 files changed

+67
-63
lines changed

README.md

Lines changed: 58 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -70,71 +70,66 @@ for more detailed examples.
7070

7171
## Features
7272

73-
### Legend
74-
75-
- [x] implemented feature
76-
- [ ] planned feature
77-
7873
### Model Predictive Control Features
7974

80-
- [x] linear and nonlinear plant models exploiting multiple dispatch
81-
- [x] model linearization based on automatic differentiation (exact Jacobians)
82-
- [x] supported objective function terms:
83-
- [x] output setpoint tracking
84-
- [x] move suppression
85-
- [x] input setpoint tracking
86-
- [x] terminal costs
87-
- [x] custom economic costs (economic model predictive control)
88-
- [x] adaptive linear model predictive controller
89-
- [x] manual model modification
90-
- [x] automatic successive linearization of a nonlinear model
91-
- [x] objective function weights and covariance matrices modification
92-
- [x] explicit predictive controller for problems without constraint
93-
- [x] online-tunable soft and hard constraints on:
94-
- [x] output predictions
95-
- [x] manipulated inputs
96-
- [x] manipulated inputs increments
97-
- [x] terminal states to ensure nominal stability
98-
- [x] custom economic inequality constraints (soft or hard)
99-
- [x] supported feedback strategy:
100-
- [x] state estimator (see State Estimation features)
101-
- [x] internal model structure with a custom stochastic model
102-
- [x] automatic model augmentation with integrating states for offset-free tracking
103-
- [x] support for unmeasured model outputs
104-
- [x] feedforward action with measured disturbances that supports direct transmission
105-
- [x] custom predictions for:
106-
- [x] output setpoints
107-
- [x] measured disturbances
108-
- [x] easy integration with `Plots.jl`
109-
- [x] optimization based on `JuMP.jl`:
110-
- [x] quickly compare multiple optimizers
111-
- [x] nonlinear solvers relying on automatic differentiation (exact derivative)
112-
- [x] additional information about the optimum to ease troubleshooting
113-
- [x] real-time control loop features:
114-
- [x] implementations that carefully limits the allocations
115-
- [x] simple soft real-time utilities
75+
- linear and nonlinear plant models exploiting multiple dispatch
76+
- model linearization based on automatic differentiation (exact Jacobians)
77+
- supported objective function terms:
78+
- output setpoint tracking
79+
- move suppression
80+
- input setpoint tracking
81+
- terminal costs
82+
- custom economic costs (economic model predictive control)
83+
- adaptive linear model predictive controller
84+
- manual model modification
85+
- automatic successive linearization of a nonlinear model
86+
- objective function weights and covariance matrices modification
87+
- explicit predictive controller for problems without constraint
88+
- online-tunable soft and hard constraints on:
89+
- output predictions
90+
- manipulated inputs
91+
- manipulated inputs increments
92+
- terminal states to ensure nominal stability
93+
- custom nonlinear inequality constraints (soft or hard)
94+
- supported feedback strategy:
95+
- state estimator (see State Estimation features)
96+
- internal model structure with a custom stochastic model
97+
- automatic model augmentation with integrating states for offset-free tracking
98+
- support for unmeasured model outputs
99+
- feedforward action with measured disturbances that supports direct transmission
100+
- custom predictions for:
101+
- output setpoints
102+
- measured disturbances
103+
- easy integration with `Plots.jl`
104+
- optimization based on `JuMP.jl`:
105+
- quickly compare multiple optimizers
106+
- nonlinear solvers relying on automatic differentiation (exact derivative)
107+
- additional information about the optimum to ease troubleshooting
108+
- real-time control loop features:
109+
- implementations that carefully limits the allocations
110+
- simple soft real-time utilities
116111

117112
### State Estimation Features
118113

119-
- [x] supported state estimators/observers:
120-
- [x] steady-state Kalman filter
121-
- [x] Kalman filter
122-
- [x] Luenberger observer
123-
- [x] internal model structure
124-
- [x] extended Kalman filter
125-
- [x] unscented Kalman filter
126-
- [x] moving horizon estimator
127-
- [x] easily estimate unmeasured disturbances by adding one or more integrators at the:
128-
- [x] manipulated inputs
129-
- [x] measured outputs
130-
- [x] bumpless manual to automatic transfer for control with a proper initial estimate
131-
- [x] estimators in two possible forms:
132-
- [x] filter (or current) form to improve accuracy and robustness
133-
- [x] predictor (or delayed) form to reduce computational load
134-
- [x] moving horizon estimator in two formulations:
135-
- [x] linear plant models (quadratic optimization)
136-
- [x] nonlinear plant models (nonlinear optimization)
137-
- [x] moving horizon estimator online-tunable soft and hard constraints on:
138-
- [x] state estimates
139-
- [x] process noise estimates
140-
- [x] sensor noise estimates
114+
- supported state estimators/observers:
115+
- steady-state Kalman filter
116+
- Kalman filter
117+
- Luenberger observer
118+
- internal model structure
119+
- extended Kalman filter
120+
- unscented Kalman filter
121+
- moving horizon estimator
122+
- easily estimate unmeasured disturbances by adding one or more integrators at the:
123+
- manipulated inputs
124+
- measured outputs
125+
- bumpless manual to automatic transfer for control with a proper initial estimate
126+
- estimators in two possible forms:
127+
- filter (or current) form to improve accuracy and robustness
128+
- predictor (or delayed) form to reduce computational load
129+
- moving horizon estimator in two formulations:
130+
- linear plant models (quadratic optimization)
131+
- nonlinear plant models (nonlinear optimization)
132+
- moving horizon estimator online-tunable soft and hard constraints on:
133+
- state estimates
134+
- process noise estimates
135+
- sensor noise estimates

src/controller/nonlinmpc.jl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,15 @@ function get_mutating_gc(NT, gc)
394394
return gc!
395395
end
396396

397+
"""
398+
test_custom_functions(NT, model::SimModel, JE, gc!, nc, Uop, Yop, Dop, p)
399+
400+
Test the custom functions `JE` and `gc!` at the operating point `Uop`, `Yop`, `Dop`.
401+
402+
This function is called at the end of `NonLinMPC` construction. It warns the user if the
403+
custom cost `JE` and constraint `gc!` functions crash at `model` operating points. This
404+
should ease troubleshooting of simple bugs e.g.: the user forgets to set the `nc` argument.
405+
"""
397406
function test_custom_functions(NT, model::SimModel, JE, gc!, nc, Uop, Yop, Dop, p)
398407
uop, dop, yop = model.uop, model.dop, model.yop
399408
Ue, Ŷe, D̂e = [Uop; uop], [yop; Yop], [dop; Dop]

0 commit comments

Comments
 (0)