9#include "akreon/convex/convex_problem.hpp"
10#include "akreon/convex/intersection.hpp"
11#include "akreon/convex/variable.hpp"
26template <ContinuousPlantModelLike Plant, std::
size_t N>
29 using Model = linalg::remove_cvref_t<Plant>;
58 template <convex::AtomLike DecVar>
73 template <convex::AtomLike DecVar>
76 static_assert(convex::is_var_type_v<DecVar>,
"Input atom is not a var");
77 using DecVarDom = convex::meta_dom_t<convex::atom_meta_t<DecVar>>;
78 static_assert(convex::dom_vartype_v<DecVarDom> == convex::VarType::FREE,
79 "Merged decision var must be free");
80 static_assert(std::same_as<DecVarSpace, convex::dom_space_t<DecVarDom>>,
81 "Expected merged decision size [svec(Q); vec(W); svec(Z)]");
88 [&]<std::size_t...
Is>(std::index_sequence<
Is...>) {
89 return convex::Intersection(
103 template <convex::AtomLike DecVar>
130template <ContinuousPlantModelLike Plant, std::size_t
N,
constexpr bool is_continuous_v
check if continuous or not
constexpr auto make_h2_polytopic_state_observer_problem(const linalg::Vector< Plant, N > &poly, const DecVar &Z_hat, plant_type_t< Plant > margin=1e-6)
make polytopic state observer
typename plant_traits< linalg::remove_cvref_t< Plant > >::T plant_type_t
extract scalar type from plant
H2 Polytopic State Observer.
static constexpr std::size_t QDim
static constexpr std::size_t DecVarDim
linalg::Vector< Plant, N > Polytope
linalg::remove_cvref_t< Plant > Model
extracting alias and types
constexpr auto objective(const DecVar &Z_hat) const
objective
static constexpr std::size_t MeasurementDim
static constexpr std::size_t ExogenousDim
typename VertexObserver::QMat QMat
static constexpr std::size_t WDim
static constexpr std::size_t ZDim
static constexpr std::size_t PerformanceDim
static constexpr std::size_t StateDim
typename VertexObserver::DecVarSpace DecVarSpace
H2StateObserver< Model > VertexObserver
constexpr auto operator()(const Polytope &poly, const DecVar &Z_hat, T margin=1e-6) const
operator overload to form H2 polytopic state observer
constexpr auto apply(const Polytope &poly, const DecVar &Z_hat, T margin=1e-6) const
apply
typename VertexObserver::LMat LMat
constexpr auto L(const QMat &Q, const WMat &W) const
L (observer gain)
typename VertexObserver::WMat WMat
typename VertexObserver::ZMat ZMat
static constexpr std::size_t PerformanceDim
linalg::RowVector< T, DecVarDim > DecVarSpace
linalg::Matrix< T, StateDim, MeasurementDim > LMat
static constexpr std::size_t ZDim
static constexpr std::size_t MeasurementDim
linalg::Matrix< T, ExogenousDim, ExogenousDim > ZMat
static constexpr std::size_t WDim
static constexpr std::size_t QDim
static constexpr std::size_t StateDim
linalg::Matrix< T, StateDim, StateDim > QMat
static constexpr std::size_t ExogenousDim
linalg::Matrix< T, StateDim, MeasurementDim > WMat
static constexpr std::size_t DecVarDim