akreon-control
Optimal and robust control and state estimation in C++26.
Loading...
Searching...
No Matches
control_traits.hpp File Reference
#include <concepts>
#include <cstdint>
#include <tuple>
#include "akreon/linalg/space/space_concepts.hpp"
Include dependency graph for control_traits.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  control::Port< RoleT, OffsetT, SizeT >
 Port specification. More...
 
struct  control::PortLayout< Channels >
 Port layout over either the state-space input or output axis. More...
 
struct  control::ss_traits< StateSpace< Type, PlantIn, ControlIn, OutputIn > >
 explicit type traits for state space More...
 
struct  control::plant_traits< PlantModel< SS, InputPortsT, OutputPortsT > >
 explicit type traits for plant model More...
 

Namespaces

namespace  control
 

Concepts

concept  control::PortLike
 
concept  control::StateSpaceLike
 StateSpace concept.
 
concept  control::ContinuousStateSpaceLike
 ContinuousStateSpace concept.
 
concept  control::DiscreteStateSpaceLike
 ContinuousStateSpace concept.
 
concept  control::PlantModelLike
 PlantModel concept.
 
concept  control::ContinuousPlantModelLike
 ContinuousPlantModel concept.
 
concept  control::DiscretePlantModelLike
 DiscretePlantModel concept.
 

Typedefs

template<typename StateSpace >
using control::ss_type_t = typename ss_traits< linalg::remove_cvref_t< StateSpace > >::T
 extract scalar type from ss
 
template<typename StateSpace >
using control::ss_plant_t = typename ss_traits< linalg::remove_cvref_t< StateSpace > >::Plant
 ss plant type
 
template<typename StateSpace >
using control::ss_control_t = typename ss_traits< linalg::remove_cvref_t< StateSpace > >::Control
 ss control type
 
template<typename StateSpace >
using control::ss_output_t = typename ss_traits< linalg::remove_cvref_t< StateSpace > >::Output
 ss output type
 
template<typename StateSpace >
using control::state_vec_t = typename ss_traits< linalg::remove_cvref_t< StateSpace > >::State
 extract state vector
 
template<typename StateSpace >
using control::input_vec_t = typename ss_traits< linalg::remove_cvref_t< StateSpace > >::Input
 extract input vector
 
template<typename StateSpace >
using control::output_vec_t = typename ss_traits< linalg::remove_cvref_t< StateSpace > >::OutVec
 extract output vector
 
template<typename Plant >
using control::plant_type_t = typename plant_traits< linalg::remove_cvref_t< Plant > >::T
 extract scalar type from plant
 
template<typename Plant >
using control::plant_state_space_t = typename plant_traits< linalg::remove_cvref_t< Plant > >::StateSpace
 extract state-space type from plant
 
template<typename Plant >
using control::plant_input_ports_t = typename plant_traits< linalg::remove_cvref_t< Plant > >::InputPorts
 extract input port layout type from plant
 
template<typename Plant >
using control::plant_output_ports_t = typename plant_traits< linalg::remove_cvref_t< Plant > >::OutputPorts
 extract output port layout type from plant
 
template<typename Plant >
using control::plant_state_vec_t = typename plant_traits< linalg::remove_cvref_t< Plant > >::State
 extract state vector from plant
 
template<typename Plant >
using control::plant_input_vec_t = typename plant_traits< linalg::remove_cvref_t< Plant > >::Input
 extract full input vector from plant
 
template<typename Plant >
using control::plant_output_vec_t = typename plant_traits< linalg::remove_cvref_t< Plant > >::Output
 extract full output vector from plant
 

Enumerations

enum struct  control::PortRole : uint8_t { control::EXOGENOUS , control::CONTROL , control::PERFORMANCE , control::MEASUREMENT }
 Plant port role. More...
 
enum struct  control::TimeDomainType : uint8_t { control::CONTINUOUS = 0 , control::DISCRETE }
 time domain type More...
 

Variables

template<typename StateSpace >
constexpr bool control::is_continuous_v
 check if continuous or not
 
template<typename Plant >
constexpr bool control::plant_is_continuous_v
 check if plant model is continuous