Controlpp
Loading...
Searching...
No Matches
controlpp::StateSpace< T, NStates, NInputs, NOutputs > Class Template Reference

Base class for the state space representation of a linear time invariant system. More...

#include <controlpp/StateSpace.hpp>

Public Types

using value_type = T
 
using A_matrix_type = Eigen::Matrix< T, NStates, NStates >
 
using B_matrix_type = Eigen::Matrix< T, NStates, NInputs >
 
using C_matrix_type = Eigen::Matrix< T, NOutputs, NStates >
 
using D_matrix_type = Eigen::Matrix< T, NOutputs, NInputs >
 

Public Member Functions

 StateSpace ()=default
 
 StateSpace (const StateSpace &)=default
 
StateSpaceoperator= (const StateSpace &)=default
 
 StateSpace (const Eigen::Matrix< T, NStates, NStates > &A, const Eigen::Matrix< T, NStates, NInputs > &B, const Eigen::Matrix< T, NOutputs, NStates > &C, const Eigen::Matrix< T, NOutputs, NInputs > &D)
 
std::tuple< Eigen::Vector< T, NStates >, Eigen::Vector< T, NOutputs > > eval (const Eigen::Vector< T, NStates > &x, const Eigen::Vector< T, NInputs > &u) const
 calculates the new system states and outupts
 
template<std::convertible_to< T > U>
requires (NInputs == 1 && NOutputs != 1)
std::tuple< Eigen::Vector< U, NStates >, Eigen::Vector< U, NOutputs > > eval (const Eigen::Vector< U, NStates > &x, const U &u_scalar) const
 calculates the new system states and outupts for SISO (single input, single output) systems
 
template<std::convertible_to< T > U>
requires (NInputs == 1 && NOutputs == 1)
std::tuple< Eigen::Vector< U, NStates >, U > eval (const Eigen::Vector< U, NStates > &x, const U &u_scalar) const
 calculates the new system states and outupts for SISO (single input, single output) systems
 
const A_matrix_typeA () const
 
const B_matrix_typeB () const
 
const C_matrix_typeC () const
 
const D_matrix_typeD () const
 
A_matrix_typeA ()
 
B_matrix_typeB ()
 
C_matrix_typeC ()
 
D_matrix_typeD ()
 

Friends

std::ostream & operator<< (std::ostream &stream, const StateSpace &state_space)
 

Detailed Description

template<class T, int NStates, int NInputs, int NOutputs>
class controlpp::StateSpace< T, NStates, NInputs, NOutputs >

Base class for the state space representation of a linear time invariant system.

System describeing the matrices (A, B, C, D) of the following linear system:

\[ x = \mathbf{A} x + \mathbf{B} x y = \mathbf{C} x + \mathbf{D} u \]

Note that this class only stores the A, B, C, and D matrices and not the state x.

Member Typedef Documentation

◆ A_matrix_type

template<class T , int NStates, int NInputs, int NOutputs>
using controlpp::StateSpace< T, NStates, NInputs, NOutputs >::A_matrix_type = Eigen::Matrix<T, NStates, NStates>

◆ B_matrix_type

template<class T , int NStates, int NInputs, int NOutputs>
using controlpp::StateSpace< T, NStates, NInputs, NOutputs >::B_matrix_type = Eigen::Matrix<T, NStates, NInputs>

◆ C_matrix_type

template<class T , int NStates, int NInputs, int NOutputs>
using controlpp::StateSpace< T, NStates, NInputs, NOutputs >::C_matrix_type = Eigen::Matrix<T, NOutputs, NStates>

◆ D_matrix_type

template<class T , int NStates, int NInputs, int NOutputs>
using controlpp::StateSpace< T, NStates, NInputs, NOutputs >::D_matrix_type = Eigen::Matrix<T, NOutputs, NInputs>

◆ value_type

template<class T , int NStates, int NInputs, int NOutputs>
using controlpp::StateSpace< T, NStates, NInputs, NOutputs >::value_type = T

Constructor & Destructor Documentation

◆ StateSpace() [1/3]

template<class T , int NStates, int NInputs, int NOutputs>
controlpp::StateSpace< T, NStates, NInputs, NOutputs >::StateSpace ( )
default

◆ StateSpace() [2/3]

template<class T , int NStates, int NInputs, int NOutputs>
controlpp::StateSpace< T, NStates, NInputs, NOutputs >::StateSpace ( const StateSpace< T, NStates, NInputs, NOutputs > &  )
default

◆ StateSpace() [3/3]

template<class T , int NStates, int NInputs, int NOutputs>
controlpp::StateSpace< T, NStates, NInputs, NOutputs >::StateSpace ( const Eigen::Matrix< T, NStates, NStates > &  A,
const Eigen::Matrix< T, NStates, NInputs > &  B,
const Eigen::Matrix< T, NOutputs, NStates > &  C,
const Eigen::Matrix< T, NOutputs, NInputs > &  D 
)
inline

Member Function Documentation

◆ A() [1/2]

template<class T , int NStates, int NInputs, int NOutputs>
A_matrix_type & controlpp::StateSpace< T, NStates, NInputs, NOutputs >::A ( )
inline

◆ A() [2/2]

template<class T , int NStates, int NInputs, int NOutputs>
const A_matrix_type & controlpp::StateSpace< T, NStates, NInputs, NOutputs >::A ( ) const
inline

◆ B() [1/2]

template<class T , int NStates, int NInputs, int NOutputs>
B_matrix_type & controlpp::StateSpace< T, NStates, NInputs, NOutputs >::B ( )
inline

◆ B() [2/2]

template<class T , int NStates, int NInputs, int NOutputs>
const B_matrix_type & controlpp::StateSpace< T, NStates, NInputs, NOutputs >::B ( ) const
inline

◆ C() [1/2]

template<class T , int NStates, int NInputs, int NOutputs>
C_matrix_type & controlpp::StateSpace< T, NStates, NInputs, NOutputs >::C ( )
inline

◆ C() [2/2]

template<class T , int NStates, int NInputs, int NOutputs>
const C_matrix_type & controlpp::StateSpace< T, NStates, NInputs, NOutputs >::C ( ) const
inline

◆ D() [1/2]

template<class T , int NStates, int NInputs, int NOutputs>
D_matrix_type & controlpp::StateSpace< T, NStates, NInputs, NOutputs >::D ( )
inline

◆ D() [2/2]

template<class T , int NStates, int NInputs, int NOutputs>
const D_matrix_type & controlpp::StateSpace< T, NStates, NInputs, NOutputs >::D ( ) const
inline

◆ eval() [1/3]

template<class T , int NStates, int NInputs, int NOutputs>
std::tuple< Eigen::Vector< T, NStates >, Eigen::Vector< T, NOutputs > > controlpp::StateSpace< T, NStates, NInputs, NOutputs >::eval ( const Eigen::Vector< T, NStates > &  x,
const Eigen::Vector< T, NInputs > &  u 
) const
inline

calculates the new system states and outupts

Usage Example:

StateSpace ss = some_calculation();
Eigen::Vector<float, 2> = some_measurement();
auto [new_internal_states, new_output] = ss(NStates, input);
Base class for the state space representation of a linear time invariant system.
Definition StateSpace.hpp:31

◆ eval() [2/3]

template<class T , int NStates, int NInputs, int NOutputs>
template<std::convertible_to< T > U>
requires (NInputs == 1 && NOutputs != 1)
std::tuple< Eigen::Vector< U, NStates >, Eigen::Vector< U, NOutputs > > controlpp::StateSpace< T, NStates, NInputs, NOutputs >::eval ( const Eigen::Vector< U, NStates > &  x,
const U &  u_scalar 
) const
inline

calculates the new system states and outupts for SISO (single input, single output) systems

Overload for SI systems that accepts scalar values as NInputs.

Usage Example:

StateSpace ss = some_calculation();
float input = some_measurement();
auto [new_internal_states, new_output] = ss(NStates, input);

◆ eval() [3/3]

template<class T , int NStates, int NInputs, int NOutputs>
template<std::convertible_to< T > U>
requires (NInputs == 1 && NOutputs == 1)
std::tuple< Eigen::Vector< U, NStates >, U > controlpp::StateSpace< T, NStates, NInputs, NOutputs >::eval ( const Eigen::Vector< U, NStates > &  x,
const U &  u_scalar 
) const
inline

calculates the new system states and outupts for SISO (single input, single output) systems

Overload for SISO systems that accepts scalar values as NInputs.

Usage Example:

StateSpace ss = some_calculation();
float input = some_measurement();
auto [new_internal_states, new_output] = ss(NStates, input);

◆ operator=()

template<class T , int NStates, int NInputs, int NOutputs>
StateSpace & controlpp::StateSpace< T, NStates, NInputs, NOutputs >::operator= ( const StateSpace< T, NStates, NInputs, NOutputs > &  )
default

Friends And Related Symbol Documentation

◆ operator<<

template<class T , int NStates, int NInputs, int NOutputs>
std::ostream & operator<< ( std::ostream &  stream,
const StateSpace< T, NStates, NInputs, NOutputs > &  state_space 
)
friend

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