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

A basic quadratic term of type $ J = x^T Q x + u^T R u $. More...

#include <TermQuadratic.hpp>

Inheritance diagram for ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >:
ct::optcon::TermBase< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >

Public Types

typedef Eigen::Matrix< SCALAR_EVAL, CONTROL_DIM, CONTROL_DIM > control_matrix_t
 
typedef Eigen::Matrix< SCALAR_EVAL, CONTROL_DIM, STATE_DIM > control_state_matrix_t
 
typedef Eigen::Matrix< SCALAR_EVAL, STATE_DIM, STATE_DIM > state_matrix_double_t
 
typedef Eigen::Matrix< SCALAR_EVAL, CONTROL_DIM, CONTROL_DIM > control_matrix_double_t
 
typedef Eigen::Matrix< SCALAR_EVAL, CONTROL_DIM, STATE_DIM > control_state_matrix_double_t
 
- Public Types inherited from ct::optcon::TermBase< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >
typedef Eigen::Matrix< SCALAR_EVAL, STATE_DIM, STATE_DIM > state_matrix_t
 
typedef Eigen::Matrix< SCALAR_EVAL, CONTROL_DIM, CONTROL_DIM > control_matrix_t
 
typedef Eigen::Matrix< SCALAR_EVAL, CONTROL_DIM, STATE_DIM > control_state_matrix_t
 
typedef Eigen::Matrix< SCALAR_EVAL, STATE_DIM, STATE_DIM > state_matrix_double_t
 
typedef Eigen::Matrix< SCALAR_EVAL, CONTROL_DIM, CONTROL_DIM > control_matrix_double_t
 
typedef Eigen::Matrix< SCALAR_EVAL, CONTROL_DIM, STATE_DIM > control_state_matrix_double_t
 

Public Member Functions

 TermQuadratic ()
 
 TermQuadratic (const state_matrix_t &Q, const control_matrix_t &R)
 
 TermQuadratic (const state_matrix_t &Q, const control_matrix_t &R, const core::StateVector< STATE_DIM, SCALAR_EVAL > &x_ref, const core::ControlVector< CONTROL_DIM, SCALAR_EVAL > &u_ref)
 
 TermQuadratic (const std::string &configFile, const std::string &termName, bool verbose=false)
 
 TermQuadratic (const TermQuadratic &arg)
 
virtual ~TermQuadratic ()
 
virtual TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR > * clone () const override
 Deep-copy term. More...
 
void setWeights (const Eigen::Matrix< SCALAR_EVAL, STATE_DIM, STATE_DIM > &Q, const Eigen::Matrix< SCALAR_EVAL, CONTROL_DIM, CONTROL_DIM > &R)
 
const state_matrix_tgetStateWeight () const
 
state_matrix_tgetStateWeight ()
 
const control_matrix_tgetControlWeight () const
 
control_matrix_tgetControlWeight ()
 
void setStateAndControlReference (const core::StateVector< STATE_DIM, SCALAR_EVAL > &x_ref, const core::ControlVector< CONTROL_DIM, SCALAR_EVAL > &u_ref)
 
virtual SCALAR evaluate (const Eigen::Matrix< SCALAR, STATE_DIM, 1 > &x, const Eigen::Matrix< SCALAR, CONTROL_DIM, 1 > &u, const SCALAR &t) override
 Evaluates the term at x, u, t. More...
 
core::StateVector< STATE_DIM, SCALAR_EVAL > stateDerivative (const core::StateVector< STATE_DIM, SCALAR_EVAL > &x, const core::ControlVector< CONTROL_DIM, SCALAR_EVAL > &u, const SCALAR_EVAL &t) override
 compute derivative of this cost term w.r.t. the state More...
 
state_matrix_t stateSecondDerivative (const core::StateVector< STATE_DIM, SCALAR_EVAL > &x, const core::ControlVector< CONTROL_DIM, SCALAR_EVAL > &u, const SCALAR_EVAL &t) override
 compute second order derivative of this cost term w.r.t. the state More...
 
core::ControlVector< CONTROL_DIM, SCALAR_EVAL > controlDerivative (const core::StateVector< STATE_DIM, SCALAR_EVAL > &x, const core::ControlVector< CONTROL_DIM, SCALAR_EVAL > &u, const SCALAR_EVAL &t) override
 compute derivative of this cost term w.r.t. the control input More...
 
control_matrix_t controlSecondDerivative (const core::StateVector< STATE_DIM, SCALAR_EVAL > &x, const core::ControlVector< CONTROL_DIM, SCALAR_EVAL > &u, const SCALAR_EVAL &t) override
 compute second order derivative of this cost term w.r.t. the control input More...
 
control_state_matrix_t stateControlDerivative (const core::StateVector< STATE_DIM, SCALAR_EVAL > &x, const core::ControlVector< CONTROL_DIM, SCALAR_EVAL > &u, const SCALAR_EVAL &t) override
 compute the cross-term derivative (state-control) of this cost function term More...
 
virtual void loadConfigFile (const std::string &filename, const std::string &termName, bool verbose=false) override
 load this term from a configuration file More...
 
virtual void updateReferenceState (const Eigen::Matrix< SCALAR_EVAL, STATE_DIM, 1 > &newRefState) override
 updates the reference state for this term More...
 
virtual void updateReferenceControl (const Eigen::Matrix< SCALAR_EVAL, CONTROL_DIM, 1 > &newRefControl) override
 updates the reference control for this term More...
 
virtual Eigen::Matrix< SCALAR_EVAL, STATE_DIM, 1 > getReferenceState () const override
 retrieve this term's current reference state More...
 
- Public Member Functions inherited from ct::optcon::TermBase< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >
 TermBase (std::string name="Unnamed")
 Default constructor. More...
 
 TermBase (const TermBase &arg)
 Copy Cunstructor. More...
 
virtual ~TermBase ()
 Destructor. More...
 
SCALAR_EVAL eval (const Eigen::Matrix< SCALAR_EVAL, STATE_DIM, 1 > &x, const Eigen::Matrix< SCALAR_EVAL, CONTROL_DIM, 1 > &u, const SCALAR_EVAL &t)
 Gets called by the analytical costfunction. Adds time dependent activations on top of the term. More...
 
virtual bool isActiveAtTime (SCALAR_EVAL t)
 Returns if term is non-zero at a specific time By default, all terms are evaluated at all times. However, if a term is not active at a certain time, you can overload this function to spare evaluations of the term and its derivatives. More...
 
SCALAR_EVAL computeActivation (SCALAR_EVAL t)
 compute time activation More...
 
void setTimeActivation (std::shared_ptr< ct::core::tpl::ActivationBase< SCALAR_EVAL >> c_i, bool verbose=false)
 set the time activation functions for this term More...
 
void loadTimeActivation (const std::string &filename, const std::string &termName, bool verbose=false)
 load the time activation functions for this term from file More...
 
const std::string & getName () const
 Returns the name of the term. More...
 
void setName (const std::string &termName)
 Sets the name of the term. More...
 

Public Attributes

EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef Eigen::Matrix< SCALAR_EVAL, STATE_DIM, STATE_DIM > state_matrix_t
 

Protected Member Functions

template<typename SC >
SC evalLocal (const Eigen::Matrix< SC, STATE_DIM, 1 > &x, const Eigen::Matrix< SC, CONTROL_DIM, 1 > &u, const SC &t)
 

Protected Attributes

state_matrix_t Q_
 
control_matrix_t R_
 
core::StateVector< STATE_DIM, SCALAR_EVAL > x_ref_
 
core::ControlVector< CONTROL_DIM, SCALAR_EVAL > u_ref_
 
- Protected Attributes inherited from ct::optcon::TermBase< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >
std::string name_
 a name identifier for this term More...
 
std::shared_ptr< ct::core::tpl::ActivationBase< SCALAR_EVAL > > c_i_
 time activations for this term More...
 

Detailed Description

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

A basic quadratic term of type $ J = x^T Q x + u^T R u $.

An example for using this term is given in CostFunctionTest.cpp

Examples:
DMS.cpp, LQR.cpp, NLOC.cpp, NLOC_boxConstrained.cpp, NLOC_generalConstrained.cpp, and NLOC_MPC.cpp.

Member Typedef Documentation

◆ control_matrix_t

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

◆ control_state_matrix_t

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

◆ state_matrix_double_t

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL = double, typename SCALAR = SCALAR_EVAL>
typedef Eigen::Matrix<SCALAR_EVAL, STATE_DIM, STATE_DIM> ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::state_matrix_double_t

◆ control_matrix_double_t

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL = double, typename SCALAR = SCALAR_EVAL>
typedef Eigen::Matrix<SCALAR_EVAL, CONTROL_DIM, CONTROL_DIM> ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::control_matrix_double_t

◆ control_state_matrix_double_t

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL = double, typename SCALAR = SCALAR_EVAL>
typedef Eigen::Matrix<SCALAR_EVAL, CONTROL_DIM, STATE_DIM> ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::control_state_matrix_double_t

Constructor & Destructor Documentation

◆ TermQuadratic() [1/5]

◆ TermQuadratic() [2/5]

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL , typename SCALAR >
ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::TermQuadratic ( const state_matrix_t Q,
const control_matrix_t R 
)

◆ TermQuadratic() [3/5]

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL, typename SCALAR >
ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::TermQuadratic ( const state_matrix_t Q,
const control_matrix_t R,
const core::StateVector< STATE_DIM, SCALAR_EVAL > &  x_ref,
const core::ControlVector< CONTROL_DIM, SCALAR_EVAL > &  u_ref 
)

◆ TermQuadratic() [4/5]

◆ TermQuadratic() [5/5]

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL = double, typename SCALAR = SCALAR_EVAL>
ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::TermQuadratic ( const TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR > &  arg)

◆ ~TermQuadratic()

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL , typename SCALAR >
ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::~TermQuadratic ( )
virtual

Member Function Documentation

◆ clone()

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL , typename SCALAR >
TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR > * ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::clone ( ) const
overridevirtual

◆ setWeights()

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL, typename SCALAR >
void ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::setWeights ( const Eigen::Matrix< SCALAR_EVAL, STATE_DIM, STATE_DIM > &  Q,
const Eigen::Matrix< SCALAR_EVAL, CONTROL_DIM, CONTROL_DIM > &  R 
)

◆ getStateWeight() [1/2]

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL , typename SCALAR >
const TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::state_matrix_t & ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::getStateWeight ( ) const

◆ getStateWeight() [2/2]

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL , typename SCALAR >
TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::state_matrix_t & ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::getStateWeight ( )

◆ getControlWeight() [1/2]

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL , typename SCALAR >
const TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::control_matrix_t & ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::getControlWeight ( ) const

◆ getControlWeight() [2/2]

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL , typename SCALAR >
TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::control_matrix_t & ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::getControlWeight ( )

◆ setStateAndControlReference()

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL, typename SCALAR >
void ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::setStateAndControlReference ( const core::StateVector< STATE_DIM, SCALAR_EVAL > &  x_ref,
const core::ControlVector< CONTROL_DIM, SCALAR_EVAL > &  u_ref 
)

◆ evaluate()

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL , typename SCALAR>
SCALAR ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::evaluate ( const Eigen::Matrix< SCALAR, STATE_DIM, 1 > &  x,
const Eigen::Matrix< SCALAR, CONTROL_DIM, 1 > &  u,
const SCALAR t 
)
overridevirtual

Evaluates the term at x, u, t.

Parameters
[in]xThe current state
[in]uThe current control
[in]tThe current time
Returns
The evaluatated cost term

Implements ct::optcon::TermBase< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >.

References t, u, and x.

◆ stateDerivative()

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL, typename SCALAR >
ct::core::StateVector< STATE_DIM, SCALAR_EVAL > ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::stateDerivative ( const core::StateVector< STATE_DIM, SCALAR_EVAL > &  x,
const core::ControlVector< CONTROL_DIM, SCALAR_EVAL > &  u,
const SCALAR_EVAL &  t 
)
overridevirtual

◆ stateSecondDerivative()

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL, typename SCALAR >
TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::state_matrix_t ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::stateSecondDerivative ( const core::StateVector< STATE_DIM, SCALAR_EVAL > &  x,
const core::ControlVector< CONTROL_DIM, SCALAR_EVAL > &  u,
const SCALAR_EVAL &  t 
)
overridevirtual

compute second order derivative of this cost term w.r.t. the state

Reimplemented from ct::optcon::TermBase< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >.

References ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::Q_.

Referenced by main().

◆ controlDerivative()

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL, typename SCALAR >
core::ControlVector< CONTROL_DIM, SCALAR_EVAL > ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::controlDerivative ( const core::StateVector< STATE_DIM, SCALAR_EVAL > &  x,
const core::ControlVector< CONTROL_DIM, SCALAR_EVAL > &  u,
const SCALAR_EVAL &  t 
)
overridevirtual

◆ controlSecondDerivative()

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL, typename SCALAR >
TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::control_matrix_t ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::controlSecondDerivative ( const core::StateVector< STATE_DIM, SCALAR_EVAL > &  x,
const core::ControlVector< CONTROL_DIM, SCALAR_EVAL > &  u,
const SCALAR_EVAL &  t 
)
overridevirtual

compute second order derivative of this cost term w.r.t. the control input

Reimplemented from ct::optcon::TermBase< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >.

References ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::R_.

Referenced by main().

◆ stateControlDerivative()

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL, typename SCALAR >
TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::control_state_matrix_t ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::stateControlDerivative ( const core::StateVector< STATE_DIM, SCALAR_EVAL > &  x,
const core::ControlVector< CONTROL_DIM, SCALAR_EVAL > &  u,
const SCALAR_EVAL &  t 
)
overridevirtual

compute the cross-term derivative (state-control) of this cost function term

Reimplemented from ct::optcon::TermBase< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >.

◆ loadConfigFile()

◆ updateReferenceState()

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL, typename SCALAR >
void ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::updateReferenceState ( const Eigen::Matrix< SCALAR_EVAL, STATE_DIM, 1 > &  newRefState)
overridevirtual

◆ updateReferenceControl()

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL, typename SCALAR >
void ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::updateReferenceControl ( const Eigen::Matrix< SCALAR_EVAL, CONTROL_DIM, 1 > &  newRefControl)
overridevirtual

◆ getReferenceState()

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL , typename SCALAR >
Eigen::Matrix< SCALAR_EVAL, STATE_DIM, 1 > ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::getReferenceState ( ) const
overridevirtual

◆ evalLocal()

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL , typename SCALAR >
template<typename SC >
SC ct::optcon::TermQuadratic< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::evalLocal ( const Eigen::Matrix< SC, STATE_DIM, 1 > &  x,
const Eigen::Matrix< SC, CONTROL_DIM, 1 > &  u,
const SC &  t 
)
protected

Member Data Documentation

◆ state_matrix_t

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

◆ Q_

◆ R_

◆ x_ref_

◆ u_ref_


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