|
akreon-control
Optimal and robust control and state estimation in C++26.
|
Luenberger Observer. More...
#include <luenberger_observer.hpp>
Public Types | |
| using | Model = linalg::remove_cvref_t< ObsModel > |
| extracting alias and types | |
| using | T = plant_type_t< Model > |
| using | State = plant_state_vec_t< Model > |
| using | QMat = linalg::Matrix< T, StateDim, StateDim > |
| using | WMat = linalg::Matrix< T, StateDim, OutputDim > |
| using | LMat = linalg::Matrix< T, StateDim, OutputDim > |
| using | FMat = QMat |
| using | ZSpace = linalg::RowVector< T, ZDim > |
| using | Fs = linalg::Vector< FMat, ZDim > |
Public Member Functions | |
| template<convex::AtomLike ZVar> | |
| constexpr auto | operator() (const ObsModel &model, const ZVar &Z, T margin=1e-6) const |
| operator overload (form luenberger observer) | |
| template<convex::AtomLike ZVar> | |
| constexpr auto | apply (const ObsModel &model, const ZVar &Z, T margin=1e-6) const |
| apply | |
| template<convex::AtomLike ZVar> | |
| constexpr auto | q_constraint (const ZVar &Z, T margin=1e-6) const |
| q_constraint | |
| template<convex::AtomLike ZVar> | |
| constexpr auto | stability_constraint (const ObsModel &model, const ZVar &Z) const |
| stability_constraint | |
| constexpr auto | L (const QMat &Q, const WMat &W) const |
| L. | |
Static Public Attributes | |
| static constexpr std::size_t | StateDim = plant_traits<Model>::StateDim |
| static constexpr std::size_t | OutputDim = plant_traits<Model>::MeasurementDim |
| static constexpr std::size_t | QDim = StateDim * (StateDim + 1) / 2 |
| static constexpr std::size_t | WDim = StateDim * OutputDim |
| static constexpr std::size_t | ZDim = QDim + WDim |
Luenberger Observer.
Given xdot = A x + B u y = C x
design a state observer xhatdot = A xhat + B u + L (y - C xhat)
such that the estimation error e = x - xhat satisfies edot = (A - L C) e and the error dynamics are asymptotically stable (or satisfy the chosen performance certificate).
There exists Q > 0 s.t. A^T Q + Q A - W C - C^T W^T < 0
where W = Q L, and L = Q^{-1} W.
Definition at line 44 of file luenberger_observer.hpp.
| using control::LuenbergerObserver< ObsModel >::FMat = QMat |
Definition at line 57 of file luenberger_observer.hpp.
| using control::LuenbergerObserver< ObsModel >::Fs = linalg::Vector<FMat, ZDim> |
Definition at line 64 of file luenberger_observer.hpp.
| using control::LuenbergerObserver< ObsModel >::LMat = linalg::Matrix<T, StateDim, OutputDim> |
Definition at line 56 of file luenberger_observer.hpp.
| using control::LuenbergerObserver< ObsModel >::Model = linalg::remove_cvref_t<ObsModel> |
extracting alias and types
Definition at line 46 of file luenberger_observer.hpp.
| using control::LuenbergerObserver< ObsModel >::QMat = linalg::Matrix<T, StateDim, StateDim> |
Definition at line 54 of file luenberger_observer.hpp.
| using control::LuenbergerObserver< ObsModel >::State = plant_state_vec_t<Model> |
Definition at line 49 of file luenberger_observer.hpp.
| using control::LuenbergerObserver< ObsModel >::T = plant_type_t<Model> |
Definition at line 48 of file luenberger_observer.hpp.
| using control::LuenbergerObserver< ObsModel >::WMat = linalg::Matrix<T, StateDim, OutputDim> |
Definition at line 55 of file luenberger_observer.hpp.
| using control::LuenbergerObserver< ObsModel >::ZSpace = linalg::RowVector<T, ZDim> |
Definition at line 63 of file luenberger_observer.hpp.
|
inlineconstexpr |
apply
| model | (StateSpace) |
| Z | (dec var [svec(Q); vec(W)]) |
Definition at line 89 of file luenberger_observer.hpp.
References control::is_continuous_v, control::LuenbergerObserver< ObsModel >::q_constraint(), and control::LuenbergerObserver< ObsModel >::stability_constraint().
Referenced by control::LuenbergerObserver< ObsModel >::operator()().
|
inlineconstexpr |
L.
L = Q^{-1} W
| Q | (QMat) |
| W | (lifted luenberger gain W = Q L) |
Definition at line 169 of file luenberger_observer.hpp.
References control::is_continuous_v, and control::recover_state_observer_gain().
|
inlineconstexpr |
operator overload (form luenberger observer)
| model | (StateSpace) |
| Z | (dec var [svec(Q); vec(W)]) |
Definition at line 75 of file luenberger_observer.hpp.
References control::LuenbergerObserver< ObsModel >::apply(), and control::is_continuous_v.
|
inlineconstexpr |
q_constraint
Definition at line 113 of file luenberger_observer.hpp.
References control::is_continuous_v, control::LuenbergerObserver< ObsModel >::QDim, and control::LuenbergerObserver< ObsModel >::WDim.
Referenced by control::LuenbergerObserver< ObsModel >::apply().
|
inlineconstexpr |
stability_constraint
| model | (PlantModel) |
| Z | (dec var [svec(Q); vec(W)]) |
Definition at line 135 of file luenberger_observer.hpp.
References control::is_continuous_v, control::LuenbergerObserver< ObsModel >::QDim, and control::LuenbergerObserver< ObsModel >::WDim.
Referenced by control::LuenbergerObserver< ObsModel >::apply().
|
staticconstexpr |
Definition at line 52 of file luenberger_observer.hpp.
|
staticconstexpr |
Definition at line 59 of file luenberger_observer.hpp.
Referenced by control::LuenbergerObserver< ObsModel >::q_constraint(), and control::LuenbergerObserver< ObsModel >::stability_constraint().
|
staticconstexpr |
Definition at line 51 of file luenberger_observer.hpp.
|
staticconstexpr |
Definition at line 60 of file luenberger_observer.hpp.
Referenced by control::LuenbergerObserver< ObsModel >::q_constraint(), and control::LuenbergerObserver< ObsModel >::stability_constraint().
|
staticconstexpr |
Definition at line 61 of file luenberger_observer.hpp.