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

A smooth absolute term of type $ J = a sqrt((x-x_ref)^2 + alpha^2) + b sqrt((u-u_ref)^2 + alpha^2) $ where this calculation is performed component-wise and summed with individual weighting factors a[i], b[i]. More...

#include <TermSmoothAbs.hpp>

Inheritance diagram for ct::optcon::TermSmoothAbs< 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

 TermSmoothAbs (const core::StateVector< STATE_DIM, SCALAR_EVAL > a, const core::StateVector< STATE_DIM, SCALAR_EVAL > x_ref, const core::ControlVector< CONTROL_DIM, SCALAR_EVAL > b, const core::ControlVector< CONTROL_DIM, SCALAR_EVAL > u_ref, const SCALAR_EVAL alpha=0.2)
 
 TermSmoothAbs ()=default
 
 TermSmoothAbs (const TermSmoothAbs &arg)
 
TermSmoothAbs< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR > * clone () const override
 Deep-copy term. More...
 
virtual ~TermSmoothAbs ()
 
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...
 
void loadConfigFile (const std::string &filename, const std::string &termName, bool verbose=false) override
 load this term from a configuration file 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...
 
virtual void updateReferenceState (const Eigen::Matrix< SCALAR_EVAL, STATE_DIM, 1 > &newRefState)
 updates the reference state for this term More...
 
virtual void updateReferenceControl (const Eigen::Matrix< SCALAR_EVAL, CONTROL_DIM, 1 > &newRefControl)
 updates the reference control for this term More...
 
virtual Eigen::Matrix< SCALAR_EVAL, STATE_DIM, 1 > getReferenceState () const
 retrieve this term's current reference state 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

core::StateVector< STATE_DIM, SCALAR_EVAL > a_
 
core::StateVector< STATE_DIM, SCALAR_EVAL > x_ref_
 
core::ControlVector< CONTROL_DIM, SCALAR_EVAL > b_
 
core::ControlVector< CONTROL_DIM, SCALAR_EVAL > u_ref_
 
SCALAR_EVAL alphaSquared_
 
- 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::TermSmoothAbs< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >

A smooth absolute term of type $ J = a sqrt((x-x_ref)^2 + alpha^2) + b sqrt((u-u_ref)^2 + alpha^2) $ where this calculation is performed component-wise and summed with individual weighting factors a[i], b[i].

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::TermSmoothAbs< 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::TermSmoothAbs< 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::TermSmoothAbs< 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::TermSmoothAbs< 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::TermSmoothAbs< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::control_state_matrix_double_t

Constructor & Destructor Documentation

◆ TermSmoothAbs() [1/3]

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL, typename SCALAR >
ct::optcon::TermSmoothAbs< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::TermSmoothAbs ( const core::StateVector< STATE_DIM, SCALAR_EVAL >  a,
const core::StateVector< STATE_DIM, SCALAR_EVAL >  x_ref,
const core::ControlVector< CONTROL_DIM, SCALAR_EVAL >  b,
const core::ControlVector< CONTROL_DIM, SCALAR_EVAL >  u_ref,
const SCALAR_EVAL  alpha = 0.2 
)

◆ TermSmoothAbs() [2/3]

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL = double, typename SCALAR = SCALAR_EVAL>
ct::optcon::TermSmoothAbs< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::TermSmoothAbs ( )
default

◆ TermSmoothAbs() [3/3]

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

◆ ~TermSmoothAbs()

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

Member Function Documentation

◆ clone()

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

◆ evaluate()

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL , typename SCALAR>
SCALAR ct::optcon::TermSmoothAbs< 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 >
core::StateVector< STATE_DIM, SCALAR_EVAL > ct::optcon::TermSmoothAbs< 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 >
TermSmoothAbs< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::state_matrix_t ct::optcon::TermSmoothAbs< 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

◆ controlDerivative()

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL, typename SCALAR >
core::ControlVector< CONTROL_DIM, SCALAR_EVAL > ct::optcon::TermSmoothAbs< 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 >
TermSmoothAbs< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::control_matrix_t ct::optcon::TermSmoothAbs< 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

◆ stateControlDerivative()

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL, typename SCALAR >
TermSmoothAbs< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::control_state_matrix_t ct::optcon::TermSmoothAbs< 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()

◆ evalLocal()

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL , typename SCALAR >
template<typename SC >
SC ct::optcon::TermSmoothAbs< 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::TermSmoothAbs< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::state_matrix_t

◆ a_

◆ x_ref_

◆ b_

◆ u_ref_

◆ alphaSquared_


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