akreon-control
Optimal and robust control and state estimation in C++26.
Loading...
Searching...
No Matches
control::HinfStateObserver< ObsModel > Struct Template Reference

Hinf State Observer. More...

#include <hinf_state_observer.hpp>

Public Types

using Model = linalg::remove_cvref_t< ObsModel >
 extracting alias and types
 
using T = plant_type_t< Model >
 
using QMat = linalg::Matrix< T, StateDim, StateDim >
 
using WMat = linalg::Matrix< T, StateDim, MeasurementDim >
 
using LMat = linalg::Matrix< T, StateDim, MeasurementDim >
 
using DecVarSpace = linalg::RowVector< T, DecVarDim >
 

Public Member Functions

template<convex::AtomLike DecVar>
constexpr auto operator() (const ObsModel &model, const DecVar &Z_hat, T margin=1e-6) const
 operator overload to form Hinf state observer
 
template<convex::AtomLike DecVar>
constexpr auto apply (const ObsModel &model, const DecVar &Z_hat, T margin=1e-6) const
 apply
 
template<convex::AtomLike DecVar>
constexpr auto q_constraint (const DecVar &Z_hat, T margin=1e-6) const
 q_constraint
 
template<convex::AtomLike DecVar>
constexpr auto brl_constraint (const ObsModel &model, const DecVar &Z_hat, T margin=1e-6) const
 brl_constraint
 
template<convex::AtomLike DecVar>
constexpr auto objective (const DecVar &Z_hat) const
 objective
 
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 ExogenousDim = plant_traits<Model>::ExogenousDim
 
static constexpr std::size_t MeasurementDim
 
static constexpr std::size_t PerformanceDim
 
static constexpr std::size_t QDim = StateDim * (StateDim + 1) / 2
 
static constexpr std::size_t WDim = StateDim * MeasurementDim
 
static constexpr std::size_t GammaDim = 1
 
static constexpr std::size_t DecVarDim = QDim + WDim + GammaDim
 

Detailed Description

template<ContinuousPlantModelLike ObsModel>
struct control::HinfStateObserver< ObsModel >

Hinf State Observer.

Given the LTI System with additive disturbance xdot = A x + B_u u + B_w w y = C_y x + D_yw w z_e = C_e e

Observer design hat{xdot} = A hat{x} + B_u u + L(y - C_y hat{x}) e = x - hat{x} edot = (A - L C_y) e + (B_w - L D_yw) w

A_cl = A - L C_y B_cl = B_w - L D_yw C_cl = C_e

Certifies ||T_{wz_e}||_infinity < gamma.

General BRL form with observability Lyapunov variable Q > 0: [ A_cl^T Q + Q A_cl Q B_cl C_cl^T ] < 0 [ B_cl^T Q -gamma I D_ew^T ] [ C_cl D_ew -gamma I ]

Hinf observer synthesis decision variables: Q : n x n, observability Lyapunov variable W : n x p_y, lifted observer product W = Q L L : n x p_y gamma : scalar induced L2-gain bound DecVar = [svec(Q); vec(W); gamma]

Objective: min gamma

We have a bilinear term in Q L, so let W = Q L where L = Q^-1 W.

Convex problem: min gamma s.t. Q > 0 [ A^T Q + Q A - C_y^T W^T - W C_y Q B_w - W D_yw C_e^T ] < 0 [ (Q B_w - W D_yw)^T -gamma I D_ew^T ] [ C_e D_ew -gamma I ]

Full decision space: QDim = n(n + 1) / 2 WDim = n p_y GammaDim = 1 DecVarDim = QDim + WDim + GammaDim DecVar in R^DecVarDim

Shape checks: A^T Q, Q A, C_y^T W^T, W C_y : n x n Q B_w - W D_yw : n x m_w C_e : p_z x n gamma I_w : m_w x m_w gamma I_z : p_z x p_z BRL LMI : (n + m_w + p_z) x (n + m_w + p_z)

Definition at line 80 of file hinf_state_observer.hpp.

Member Typedef Documentation

◆ DecVarSpace

template<ContinuousPlantModelLike ObsModel>
using control::HinfStateObserver< ObsModel >::DecVarSpace = linalg::RowVector<T, DecVarDim>

Definition at line 102 of file hinf_state_observer.hpp.

◆ LMat

template<ContinuousPlantModelLike ObsModel>
using control::HinfStateObserver< ObsModel >::LMat = linalg::Matrix<T, StateDim, MeasurementDim>

Definition at line 95 of file hinf_state_observer.hpp.

◆ Model

template<ContinuousPlantModelLike ObsModel>
using control::HinfStateObserver< ObsModel >::Model = linalg::remove_cvref_t<ObsModel>

extracting alias and types

Definition at line 82 of file hinf_state_observer.hpp.

◆ QMat

template<ContinuousPlantModelLike ObsModel>
using control::HinfStateObserver< ObsModel >::QMat = linalg::Matrix<T, StateDim, StateDim>

Definition at line 93 of file hinf_state_observer.hpp.

◆ T

template<ContinuousPlantModelLike ObsModel>
using control::HinfStateObserver< ObsModel >::T = plant_type_t<Model>

Definition at line 84 of file hinf_state_observer.hpp.

◆ WMat

template<ContinuousPlantModelLike ObsModel>
using control::HinfStateObserver< ObsModel >::WMat = linalg::Matrix<T, StateDim, MeasurementDim>

Definition at line 94 of file hinf_state_observer.hpp.

Member Function Documentation

◆ apply()

template<ContinuousPlantModelLike ObsModel>
template<convex::AtomLike DecVar>
constexpr auto control::HinfStateObserver< ObsModel >::apply ( const ObsModel &  model,
const DecVar &  Z_hat,
T  margin = 1e-6 
) const
inlineconstexpr

apply

Parameters
model(PlantModel)
Z_hat([svec(Q); vec(W); gamma])
margin(PDness)
Returns
Hinf synthesis constraints

Definition at line 129 of file hinf_state_observer.hpp.

References control::HinfStateObserver< ObsModel >::brl_constraint(), control::is_continuous_v, and control::HinfStateObserver< ObsModel >::q_constraint().

Referenced by control::HinfStateObserver< ObsModel >::operator()().

◆ brl_constraint()

template<ContinuousPlantModelLike ObsModel>
template<convex::AtomLike DecVar>
constexpr auto control::HinfStateObserver< ObsModel >::brl_constraint ( const ObsModel &  model,
const DecVar &  Z_hat,
T  margin = 1e-6 
) const
inlineconstexpr

◆ L()

template<ContinuousPlantModelLike ObsModel>
constexpr auto control::HinfStateObserver< ObsModel >::L ( const QMat &  Q,
const WMat &  W 
) const
inlineconstexpr

L.

L = Q^{-1} W

Parameters
Qobservability Lyapunov variable
Wlifted observer product W = Q L
Returns
L

Definition at line 289 of file hinf_state_observer.hpp.

References control::is_continuous_v, and control::recover_state_observer_gain().

◆ objective()

template<ContinuousPlantModelLike ObsModel>
template<convex::AtomLike DecVar>
constexpr auto control::HinfStateObserver< ObsModel >::objective ( const DecVar &  Z_hat) const
inlineconstexpr

objective

min gamma

Parameters
Z_hat(DecVar)
Returns
gamma objective

Definition at line 273 of file hinf_state_observer.hpp.

References control::is_continuous_v, control::HinfStateObserver< ObsModel >::QDim, and control::HinfStateObserver< ObsModel >::WDim.

◆ operator()()

template<ContinuousPlantModelLike ObsModel>
template<convex::AtomLike DecVar>
constexpr auto control::HinfStateObserver< ObsModel >::operator() ( const ObsModel &  model,
const DecVar &  Z_hat,
T  margin = 1e-6 
) const
inlineconstexpr

operator overload to form Hinf state observer

Parameters
model(PlantModel)
Z_hat(DecVar)
margin(PDness)
Returns
Hinf LMIs

Definition at line 114 of file hinf_state_observer.hpp.

References control::HinfStateObserver< ObsModel >::apply(), and control::is_continuous_v.

◆ q_constraint()

template<ContinuousPlantModelLike ObsModel>
template<convex::AtomLike DecVar>
constexpr auto control::HinfStateObserver< ObsModel >::q_constraint ( const DecVar &  Z_hat,
T  margin = 1e-6 
) const
inlineconstexpr

q_constraint

PSD constraint on the observability Lyapunov block: Q >= margin I

Parameters
Z_hat(DecVar)
margin(PDness)
Returns
Q constraint as LMI

Definition at line 155 of file hinf_state_observer.hpp.

References control::is_continuous_v, and control::HinfStateObserver< ObsModel >::QDim.

Referenced by control::HinfStateObserver< ObsModel >::apply().

Member Data Documentation

◆ DecVarDim

template<ContinuousPlantModelLike ObsModel>
constexpr std::size_t control::HinfStateObserver< ObsModel >::DecVarDim = QDim + WDim + GammaDim
staticconstexpr

Definition at line 100 of file hinf_state_observer.hpp.

◆ ExogenousDim

template<ContinuousPlantModelLike ObsModel>
constexpr std::size_t control::HinfStateObserver< ObsModel >::ExogenousDim = plant_traits<Model>::ExogenousDim
staticconstexpr

◆ GammaDim

template<ContinuousPlantModelLike ObsModel>
constexpr std::size_t control::HinfStateObserver< ObsModel >::GammaDim = 1
staticconstexpr

Definition at line 99 of file hinf_state_observer.hpp.

◆ MeasurementDim

template<ContinuousPlantModelLike ObsModel>
constexpr std::size_t control::HinfStateObserver< ObsModel >::MeasurementDim
staticconstexpr
Initial value:
=
plant_traits<Model>::MeasurementDim

Definition at line 88 of file hinf_state_observer.hpp.

◆ PerformanceDim

template<ContinuousPlantModelLike ObsModel>
constexpr std::size_t control::HinfStateObserver< ObsModel >::PerformanceDim
staticconstexpr
Initial value:
=
plant_traits<Model>::PerformanceDim

Definition at line 90 of file hinf_state_observer.hpp.

Referenced by control::HinfStateObserver< ObsModel >::brl_constraint().

◆ QDim

◆ StateDim

template<ContinuousPlantModelLike ObsModel>
constexpr std::size_t control::HinfStateObserver< ObsModel >::StateDim = plant_traits<Model>::StateDim
staticconstexpr

◆ WDim

template<ContinuousPlantModelLike ObsModel>
constexpr std::size_t control::HinfStateObserver< ObsModel >::WDim = StateDim * MeasurementDim
staticconstexpr

The documentation for this struct was generated from the following file: