Controlpp
Loading...
Searching...
No Matches
ContinuousStateSpace.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "StateSpace.hpp"
6
7namespace controlpp
8{
9 template<class T, int internal_states, int inputs=1, int outputs=1>
11 public:
12 using value_type = T;
13
15
20
21 constexpr static int number_of_states = internal_states;
22 constexpr static int number_of_inputs = inputs;
23 constexpr static int number_of_outputs = outputs;
24
25 private:
26 state_space_type _state_space;
27
28 public:
32
34 const Eigen::Matrix<T, internal_states, internal_states>& A,
35 const Eigen::Matrix<T, internal_states, inputs>& B,
36 const Eigen::Matrix<T, outputs, internal_states>& C,
37 const Eigen::Matrix<T, outputs, inputs>& D = Eigen::Matrix<T, outputs, inputs>::Zero()
38 ) : _state_space(A, B, C, D){}
39
41
43 const StateSpace<T, internal_states, inputs, outputs>& state_space() const {return this->_state_space;}
44
45 std::tuple<Eigen::Vector<T, internal_states>, Eigen::Vector<T, outputs>> eval(const Eigen::Vector<T, internal_states>& x, const Eigen::Vector<T, inputs>& u) const {
46 this->_state_space(x, u);
47 }
48
49 template<std::same_as<T> U>
50 requires(inputs == 1)
51 std::tuple<Eigen::Vector<U, internal_states>, Eigen::Vector<U, outputs>> eval(const Eigen::Vector<U, internal_states>& x, const U& u_scalar) const {
52 this->_state_space(x, u_scalar);
53 }
54
55 A_matrix_type& A() {return this->_state_space.A();}
56 B_matrix_type& B() {return this->_state_space.B();}
57 C_matrix_type& C() {return this->_state_space.C();}
58 D_matrix_type& D() {return this->_state_space.D();}
59
60 const A_matrix_type& A() const {return this->_state_space.A();}
61 const B_matrix_type& B() const {return this->_state_space.B();}
62 const C_matrix_type& C() const {return this->_state_space.C();}
63 const D_matrix_type& D() const {return this->_state_space.D();}
64
65 friend std::ostream& operator<<(std::ostream& stream, const ContinuousStateSpace& css){
66 stream << css.state_space();
67 return stream;
68 }
69 };
70
74 template<class T, int NumOrder, int DenOrder>
78
82 template<class T, int NumOrder, int DenOrder>
86
90 template<class T, int NumOrder, int DenOrder>
94
100 template<class T, int states>
104
105} // namespace controlpp
Definition ContinuousStateSpace.hpp:10
static constexpr int number_of_outputs
Definition ContinuousStateSpace.hpp:23
typename state_space_type::A_matrix_type A_matrix_type
Definition ContinuousStateSpace.hpp:16
ContinuousStateSpace & operator=(const ContinuousStateSpace &)=default
std::tuple< Eigen::Vector< T, internal_states >, Eigen::Vector< T, outputs > > eval(const Eigen::Vector< T, internal_states > &x, const Eigen::Vector< T, inputs > &u) const
Definition ContinuousStateSpace.hpp:45
const B_matrix_type & B() const
Definition ContinuousStateSpace.hpp:61
typename state_space_type::D_matrix_type D_matrix_type
Definition ContinuousStateSpace.hpp:19
StateSpace< T, internal_states, inputs, outputs > & state_space()
Definition ContinuousStateSpace.hpp:42
std::tuple< Eigen::Vector< U, internal_states >, Eigen::Vector< U, outputs > > eval(const Eigen::Vector< U, internal_states > &x, const U &u_scalar) const
Definition ContinuousStateSpace.hpp:51
typename state_space_type::B_matrix_type B_matrix_type
Definition ContinuousStateSpace.hpp:17
ContinuousStateSpace(const Eigen::Matrix< T, internal_states, internal_states > &A, const Eigen::Matrix< T, internal_states, inputs > &B, const Eigen::Matrix< T, outputs, internal_states > &C, const Eigen::Matrix< T, outputs, inputs > &D=Eigen::Matrix< T, outputs, inputs >::Zero())
Definition ContinuousStateSpace.hpp:33
typename state_space_type::C_matrix_type C_matrix_type
Definition ContinuousStateSpace.hpp:18
A_matrix_type & A()
Definition ContinuousStateSpace.hpp:55
const StateSpace< T, internal_states, inputs, outputs > & state_space() const
Definition ContinuousStateSpace.hpp:43
static constexpr int number_of_inputs
Definition ContinuousStateSpace.hpp:22
static constexpr int number_of_states
Definition ContinuousStateSpace.hpp:21
const C_matrix_type & C() const
Definition ContinuousStateSpace.hpp:62
const A_matrix_type & A() const
Definition ContinuousStateSpace.hpp:60
const D_matrix_type & D() const
Definition ContinuousStateSpace.hpp:63
T value_type
Definition ContinuousStateSpace.hpp:12
ContinuousStateSpace(const ContinuousStateSpace &)=default
ContinuousStateSpace(const StateSpace< T, internal_states, inputs, outputs > &state_space)
Definition ContinuousStateSpace.hpp:40
D_matrix_type & D()
Definition ContinuousStateSpace.hpp:58
B_matrix_type & B()
Definition ContinuousStateSpace.hpp:56
C_matrix_type & C()
Definition ContinuousStateSpace.hpp:57
friend std::ostream & operator<<(std::ostream &stream, const ContinuousStateSpace &css)
Definition ContinuousStateSpace.hpp:65
Continuous transfer functions in the s lapace plain.
Definition ContinuousTransferFunction.hpp:28
transfer_function_type & transfer_function()
Definition ContinuousTransferFunction.hpp:69
Eigen::Matrix< T, NStates, NInputs > B_matrix_type
Definition StateSpace.hpp:36
const A_matrix_type & A() const
Definition StateSpace.hpp:121
Eigen::Matrix< T, NOutputs, NStates > C_matrix_type
Definition StateSpace.hpp:37
const B_matrix_type & B() const
Definition StateSpace.hpp:122
const D_matrix_type & D() const
Definition StateSpace.hpp:124
Eigen::Matrix< T, NOutputs, NInputs > D_matrix_type
Definition StateSpace.hpp:38
const C_matrix_type & C() const
Definition StateSpace.hpp:123
Eigen::Matrix< T, NStates, NStates > A_matrix_type
Definition StateSpace.hpp:35
Definition TransferFunction.hpp:11
The main namespace for the Control++ library.
Definition Bode.cpp:3
ContinuousStateSpace< T, DenOrder, 1, 1 > to_continuous_state_space(const TransferFunction< T, NumOrder, DenOrder > &rp)
constructs a continuous state space function from a rational polynom
Definition ContinuousStateSpace.hpp:75
ContinuousTransferFunction< T, states+1, states+1 > to_transfer_function(const ContinuousStateSpace< T, states, 1, 1 > &dss)
Transforms a discrete state space system to a discrete transfer function.
Definition ContinuousStateSpace.hpp:101
ContinuousStateSpace< T, DenOrder, 1, 1 > to_state_space(const ContinuousTransferFunction< T, NumOrder, DenOrder > &ctf)
constructs a continuous state space function from a continuous transfer function
Definition ContinuousStateSpace.hpp:91