- 3.0.2 core module.
|
interface class for a general linear system or linearized system More...
#include <LinearSystem.h>
Public Types | |
typedef Base::time_t | time_t |
typedef StateVector< STATE_DIM, SCALAR > | state_vector_t |
state vector type More... | |
typedef ControlVector< CONTROL_DIM, SCALAR > | control_vector_t |
input vector type More... | |
typedef StateMatrix< STATE_DIM, SCALAR > | state_matrix_t |
state Jacobian type More... | |
typedef StateControlMatrix< STATE_DIM, CONTROL_DIM, SCALAR > | state_control_matrix_t |
input Jacobian type More... | |
Public Types inherited from ct::core::ControlledSystem< STATE_DIM, CONTROL_DIM, SCALAR > | |
typedef std::shared_ptr< ControlledSystem< STATE_DIM, CONTROL_DIM, SCALAR > > | Ptr |
typedef Base::time_t | time_t |
Public Types inherited from ct::core::System< STATE_DIM, SCALAR > | |
typedef SCALAR | time_t |
the type of the time variable More... | |
Public Member Functions | |
LinearSystem (const ct::core::SYSTEM_TYPE &type=ct::core::SYSTEM_TYPE::GENERAL) | |
default constructor More... | |
virtual | ~LinearSystem () |
destructor More... | |
virtual LinearSystem< STATE_DIM, CONTROL_DIM, SCALAR > * | clone () const override=0 |
deep cloning More... | |
virtual void | computeControlledDynamics (const state_vector_t &state, const time_t &t, const control_vector_t &control, state_vector_t &derivative) override |
compute the system dynamics More... | |
virtual const state_matrix_t & | getDerivativeState (const state_vector_t &x, const control_vector_t &u, const time_t t=time_t(0.0))=0 |
get the A matrix of a linear system More... | |
virtual const state_control_matrix_t & | getDerivativeControl (const state_vector_t &x, const control_vector_t &u, const time_t t=time_t(0.0))=0 |
get the B matrix of a linear system More... | |
virtual void | getDerivatives (state_matrix_t &A, state_control_matrix_t &B, const state_vector_t &x, const control_vector_t &u, const time_t t=time_t(0.0)) |
Get both linear system matrices A and B in one call. More... | |
Public Member Functions inherited from ct::core::ControlledSystem< STATE_DIM, CONTROL_DIM, SCALAR > | |
ControlledSystem (const SYSTEM_TYPE &type=SYSTEM_TYPE::GENERAL) | |
default constructor More... | |
ControlledSystem (std::shared_ptr< ct::core::Controller< STATE_DIM, CONTROL_DIM, SCALAR >> controller, const SYSTEM_TYPE &type=SYSTEM_TYPE::GENERAL) | |
constructor More... | |
ControlledSystem (const ControlledSystem &arg) | |
copy constructor More... | |
virtual | ~ControlledSystem () |
destructor More... | |
void | setController (const std::shared_ptr< Controller< STATE_DIM, CONTROL_DIM, SCALAR >> &controller) |
set a new controller More... | |
void | getController (std::shared_ptr< Controller< STATE_DIM, CONTROL_DIM, SCALAR >> &controller) const |
get the controller instance More... | |
std::shared_ptr< Controller< STATE_DIM, CONTROL_DIM, SCALAR > > | getController () |
get the controller instace More... | |
virtual void | computeDynamics (const StateVector< STATE_DIM, SCALAR > &state, const time_t &t, StateVector< STATE_DIM, SCALAR > &derivative) override |
compute the dynamics of the system More... | |
virtual void | computeControlledDynamics (const StateVector< STATE_DIM, SCALAR > &state, const time_t &t, const ControlVector< CONTROL_DIM, SCALAR > &control, StateVector< STATE_DIM, SCALAR > &derivative)=0 |
ControlVector< CONTROL_DIM, SCALAR > | getLastControlAction () |
Public Member Functions inherited from ct::core::System< STATE_DIM, SCALAR > | |
System (const SYSTEM_TYPE &type=SYSTEM_TYPE::GENERAL) | |
default constructor More... | |
System (const System &other) | |
copy constructor More... | |
virtual | ~System () |
destructor More... | |
virtual void | computeDynamics (const StateVector< STATE_DIM, SCALAR > &state, const time_t &t, StateVector< STATE_DIM, SCALAR > &derivative)=0 |
computes the system dynamics More... | |
SYSTEM_TYPE | getType () const |
get the type of system More... | |
virtual bool | isSymplectic () const |
Determines if the system is in symplectic form. More... | |
Public Attributes | |
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef ControlledSystem< STATE_DIM, CONTROL_DIM, SCALAR > | Base |
Public Attributes inherited from ct::core::ControlledSystem< STATE_DIM, CONTROL_DIM, SCALAR > | |
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef System< STATE_DIM, SCALAR > | Base |
Public Attributes inherited from ct::core::System< STATE_DIM, SCALAR > | |
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef SCALAR | S |
the scalar type More... | |
Additional Inherited Members | |
Protected Attributes inherited from ct::core::ControlledSystem< STATE_DIM, CONTROL_DIM, SCALAR > | |
std::shared_ptr< Controller< STATE_DIM, CONTROL_DIM, SCALAR > > | controller_ |
the controller instance More... | |
ControlVector< CONTROL_DIM, SCALAR > | controlAction_ |
Protected Attributes inherited from ct::core::System< STATE_DIM, SCALAR > | |
SYSTEM_TYPE | type_ |
type of system More... | |
interface class for a general linear system or linearized system
Defines the interface for a linear system
STATE_DIM | size of state vector |
CONTROL_DIM | size of input vector |
typedef Base::time_t ct::core::LinearSystem< STATE_DIM, CONTROL_DIM, SCALAR >::time_t |
typedef StateVector<STATE_DIM, SCALAR> ct::core::LinearSystem< STATE_DIM, CONTROL_DIM, SCALAR >::state_vector_t |
state vector type
typedef ControlVector<CONTROL_DIM, SCALAR> ct::core::LinearSystem< STATE_DIM, CONTROL_DIM, SCALAR >::control_vector_t |
input vector type
typedef StateMatrix<STATE_DIM, SCALAR> ct::core::LinearSystem< STATE_DIM, CONTROL_DIM, SCALAR >::state_matrix_t |
state Jacobian type
typedef StateControlMatrix<STATE_DIM, CONTROL_DIM, SCALAR> ct::core::LinearSystem< STATE_DIM, CONTROL_DIM, SCALAR >::state_control_matrix_t |
input Jacobian type
|
inline |
default constructor
type | system type |
|
inlinevirtual |
destructor
|
overridepure virtual |
deep cloning
Implements ct::core::ControlledSystem< STATE_DIM, CONTROL_DIM, SCALAR >.
Implemented in ct::core::SystemLinearizer< STATE_DIM, CONTROL_DIM, SCALAR >, ct::core::SwitchedLinearSystem< STATE_DIM, CONTROL_DIM, SCALAR >, LinearizedOscillator, ct::core::LTISystem< STATE_DIM, CONTROL_DIM >, ct::core::generated::TestNonlinearSystemLinearized, ct::optcon::example::DiehlSystemLinear, ct::optcon::example::LinearizedSystem, ct::optcon::example::LinearizedSystem, ct::optcon::example::tpl::LinearOscillatorLinear< class >, LinkedMasses, ct::optcon::example::MIMOIntegratorLinear< state_dim, control_dim >, ct::optcon::example::SpringLoadedMassLinear, ct::models::HyA::HyALinearizedForward, ct::models::HyA::HyALinearizedReverse, ct::models::HyQ::HyQBareModelLinearizedForward, ct::models::HyQ::HyQBareModelLinearizedReverse, ct::models::HyQ::HyQWithContactModelLinearizedForward, ct::models::HyQ::HyQWithContactModelLinearizedReverse, ct::models::InvertedPendulum::InvertedPendulumActDynLinearizedForward, and ct::models::QuadrotorLinear.
Referenced by ct::core::LinearSystem< 2, 1 >::~LinearSystem().
|
inlineoverridevirtual |
compute the system dynamics
This computes the system dynamics
state | current state |
t | current time |
control | control input |
derivative | state derivative |
|
pure virtual |
get the A matrix of a linear system
x | state vector (required for linearizing non-linear systems, ignored for pure linear system) |
u | input vector (required for linearizing non-linear systems, ignored for pure linear system) |
t | current time |
Implemented in ct::core::SystemLinearizer< STATE_DIM, CONTROL_DIM, SCALAR >, and ct::core::SwitchedLinearSystem< STATE_DIM, CONTROL_DIM, SCALAR >.
Referenced by ct::core::LinearSystem< 2, 1 >::computeControlledDynamics(), and ct::core::LinearSystem< 2, 1 >::getDerivatives().
|
pure virtual |
get the B matrix of a linear system
x | state vector (required for linearizing non-linear systems, ignored for pure linear system) |
u | input vector (required for linearizing non-linear systems, ignored for pure linear system) |
t | current time |
Implemented in ct::core::SystemLinearizer< STATE_DIM, CONTROL_DIM, SCALAR >, and ct::core::SwitchedLinearSystem< STATE_DIM, CONTROL_DIM, SCALAR >.
Referenced by ct::core::LinearSystem< 2, 1 >::computeControlledDynamics(), and ct::core::LinearSystem< 2, 1 >::getDerivatives().
|
inlinevirtual |
Get both linear system matrices A and B in one call.
Motvation: For certain derived instances, it may be more efficient to compute A and B simulatenously. In that case, this method can be overloaded for maximum efficiency. As default case, it simply calls above methods independently.
A | matrix A of linear system |
B | matrix B of linear system |
x | the current state |
u | the current input |
t | the current time |
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef ControlledSystem<STATE_DIM, CONTROL_DIM, SCALAR> ct::core::LinearSystem< STATE_DIM, CONTROL_DIM, SCALAR >::Base |