![]() |
- 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 |