- 3.0.2 optimal control module.
ct::optcon::FHDTLQR< STATE_DIM, CONTROL_DIM, SCALAR > Class Template Reference

Finite-Horizon Discrete Time LQR. More...

#include <FHDTLQR.hpp>

Public Types

typedef Eigen::Matrix< SCALAR, STATE_DIM, STATE_DIM > state_matrix_t
 
typedef Eigen::Matrix< SCALAR, CONTROL_DIM, CONTROL_DIM > control_matrix_t
 
typedef Eigen::Matrix< SCALAR, CONTROL_DIM, STATE_DIM > control_state_matrix_t
 
typedef Eigen::Matrix< SCALAR, STATE_DIM, CONTROL_DIM > control_gain_matrix_t
 
typedef Eigen::Matrix< SCALAR, CONTROL_DIM, STATE_DIM > control_feedback_t
 
typedef core::StateVectorArray< STATE_DIM, SCALARstate_vector_array_t
 
typedef core::ControlVectorArray< CONTROL_DIM, SCALARcontrol_vector_array_t
 
typedef ct::core::StateMatrixArray< STATE_DIM, SCALARstate_matrix_array_t
 
typedef ct::core::FeedbackArray< STATE_DIM, CONTROL_DIM, SCALARcontrol_feedback_array_t
 
typedef ct::core::StateControlMatrixArray< STATE_DIM, CONTROL_DIM, SCALARcontrol_gain_matrix_array_t
 

Public Member Functions

 FHDTLQR (std::shared_ptr< CostFunctionQuadratic< STATE_DIM, CONTROL_DIM, SCALAR >> costFunction)
 Constructor. More...
 
 ~FHDTLQR ()
 
void designController (const state_vector_array_t &x_trajectory, const control_vector_array_t &u_trajectory, const state_matrix_array_t &A, const control_gain_matrix_array_t &B, SCALAR dt, control_feedback_array_t &K, bool performNumericalChecks=true)
 design a time-varying feedback trajectory using user-provided matrices A and B More...
 
void designController (const state_vector_array_t &x_trajectory, const control_vector_array_t &u_trajectory, std::shared_ptr< core::LinearSystem< STATE_DIM, CONTROL_DIM, SCALAR >> derivatives, SCALAR dt, control_feedback_array_t &K, bool performNumericalChecks=true)
 design a time-varying feedback trajectory using a user-provided derivative-pointer More...
 

Public Attributes

EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef core::ControlVector< CONTROL_DIM, SCALARcontrol_vector_t
 

Detailed Description

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR = double>
class ct::optcon::FHDTLQR< STATE_DIM, CONTROL_DIM, SCALAR >

Finite-Horizon Discrete Time LQR.

compute the finite-horizon discrete time LQR solution (Example: stabilize a linear time-varying system about a trajectory). The user can either provide the linearized system matrices, or alternatively a pointer to a derivatives instance

The feedback law has form

\[ u_{fb} = -K \cdot (x - x_{ref}) \]

Template Parameters
STATE_DIMsystem state dimension
CONTROL_DIMsystem input dimension

Member Typedef Documentation

◆ state_matrix_t

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR = double>
typedef Eigen::Matrix<SCALAR, STATE_DIM, STATE_DIM> ct::optcon::FHDTLQR< STATE_DIM, CONTROL_DIM, SCALAR >::state_matrix_t

◆ control_matrix_t

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR = double>
typedef Eigen::Matrix<SCALAR, CONTROL_DIM, CONTROL_DIM> ct::optcon::FHDTLQR< STATE_DIM, CONTROL_DIM, SCALAR >::control_matrix_t

◆ control_state_matrix_t

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR = double>
typedef Eigen::Matrix<SCALAR, CONTROL_DIM, STATE_DIM> ct::optcon::FHDTLQR< STATE_DIM, CONTROL_DIM, SCALAR >::control_state_matrix_t

◆ control_gain_matrix_t

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR = double>
typedef Eigen::Matrix<SCALAR, STATE_DIM, CONTROL_DIM> ct::optcon::FHDTLQR< STATE_DIM, CONTROL_DIM, SCALAR >::control_gain_matrix_t

◆ control_feedback_t

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR = double>
typedef Eigen::Matrix<SCALAR, CONTROL_DIM, STATE_DIM> ct::optcon::FHDTLQR< STATE_DIM, CONTROL_DIM, SCALAR >::control_feedback_t

◆ state_vector_array_t

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR = double>
typedef core::StateVectorArray<STATE_DIM, SCALAR> ct::optcon::FHDTLQR< STATE_DIM, CONTROL_DIM, SCALAR >::state_vector_array_t

◆ control_vector_array_t

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR = double>
typedef core::ControlVectorArray<CONTROL_DIM, SCALAR> ct::optcon::FHDTLQR< STATE_DIM, CONTROL_DIM, SCALAR >::control_vector_array_t

◆ state_matrix_array_t

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR = double>
typedef ct::core::StateMatrixArray<STATE_DIM, SCALAR> ct::optcon::FHDTLQR< STATE_DIM, CONTROL_DIM, SCALAR >::state_matrix_array_t

◆ control_feedback_array_t

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR = double>
typedef ct::core::FeedbackArray<STATE_DIM, CONTROL_DIM, SCALAR> ct::optcon::FHDTLQR< STATE_DIM, CONTROL_DIM, SCALAR >::control_feedback_array_t

◆ control_gain_matrix_array_t

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR = double>
typedef ct::core::StateControlMatrixArray<STATE_DIM, CONTROL_DIM, SCALAR> ct::optcon::FHDTLQR< STATE_DIM, CONTROL_DIM, SCALAR >::control_gain_matrix_array_t

Constructor & Destructor Documentation

◆ FHDTLQR()

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR >
ct::optcon::FHDTLQR< STATE_DIM, CONTROL_DIM, SCALAR >::FHDTLQR ( std::shared_ptr< CostFunctionQuadratic< STATE_DIM, CONTROL_DIM, SCALAR >>  costFunction)

Constructor.

Parameters
costFunctionthe cost function to be used for designing the TVLQR

◆ ~FHDTLQR()

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR >
ct::optcon::FHDTLQR< STATE_DIM, CONTROL_DIM, SCALAR >::~FHDTLQR ( )

Member Function Documentation

◆ designController() [1/2]

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR >
void ct::optcon::FHDTLQR< STATE_DIM, CONTROL_DIM, SCALAR >::designController ( const state_vector_array_t x_trajectory,
const control_vector_array_t u_trajectory,
const state_matrix_array_t A,
const control_gain_matrix_array_t B,
SCALAR  dt,
control_feedback_array_t K,
bool  performNumericalChecks = true 
)

design a time-varying feedback trajectory using user-provided matrices A and B

Parameters
x_trajectorystate reference trajectory
u_trajectorycontrol reference trajectory
Atrajectory of system matrices A = df/dx
Btrajectory of system matrices B = df/du
dtsampling time
Ktrajectory of resulting control feedback arrays
performNumericalChecks(optional) perform some numerical checks while solving for K

◆ designController() [2/2]

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR >
void ct::optcon::FHDTLQR< STATE_DIM, CONTROL_DIM, SCALAR >::designController ( const state_vector_array_t x_trajectory,
const control_vector_array_t u_trajectory,
std::shared_ptr< core::LinearSystem< STATE_DIM, CONTROL_DIM, SCALAR >>  derivatives,
SCALAR  dt,
control_feedback_array_t K,
bool  performNumericalChecks = true 
)

design a time-varying feedback trajectory using a user-provided derivative-pointer

Parameters
x_trajectorystate reference trajectory
u_trajectorycontrol reference trajectory
derivativesshared_ptr to a LinearSystem, allowing to compute A and B
dtsampling time
Ktrajectory of resulting control feedback arrays
performNumericalChecks(optional) perform some numerical checks while solving for K

References dt, and i.

Member Data Documentation

◆ control_vector_t

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR = double>
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef core::ControlVector<CONTROL_DIM, SCALAR> ct::optcon::FHDTLQR< STATE_DIM, CONTROL_DIM, SCALAR >::control_vector_t

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