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

A state barrier term (could also be considered a soft constraint) Note that this term explicitly excludes controls, as there are better ways to limit control effort in a "soft" way, e.g. through the use of sigmoid functions. More...

#include <TermStateBarrier.hpp>

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

Public Types

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 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

 TermStateBarrier ()
 
 TermStateBarrier (const state_vector_t &ub, const state_vector_t &lb, const state_vector_t &alpha)
 
 TermStateBarrier (const TermStateBarrier &arg)
 
virtual ~TermStateBarrier ()
 
TermStateBarrier< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR > * clone () const override
 Deep-copy term. More...
 
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...
 
virtual void loadConfigFile (const std::string &filename, const std::string &termName, bool verbose=false) override
 load the term from config file, where the bounds are stored as matrices 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...
 
virtual 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)
 compute derivative of this cost term w.r.t. the state More...
 
virtual state_matrix_t stateSecondDerivative (const core::StateVector< STATE_DIM, SCALAR_EVAL > &x, const core::ControlVector< CONTROL_DIM, SCALAR_EVAL > &u, const SCALAR_EVAL &t)
 compute second order derivative of this cost term w.r.t. the state More...
 
virtual 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)
 compute derivative of this cost term w.r.t. the control input More...
 
virtual control_matrix_t controlSecondDerivative (const core::StateVector< STATE_DIM, SCALAR_EVAL > &x, const core::ControlVector< CONTROL_DIM, SCALAR_EVAL > &u, const SCALAR_EVAL &t)
 compute second order derivative of this cost term w.r.t. the control input More...
 
virtual 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)
 compute the cross-term derivative (state-control) of this cost function term 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, 1 > state_vector_t
 

Protected Member Functions

void initialize ()
 

Protected Attributes

state_vector_t alpha_
 
state_vector_t ub_
 
state_vector_t lb_
 
std::vector< ct::core::tpl::BarrierActivation< SCALAR, ct::core::tpl::TraitSelector< SCALAR > > > barriers_
 
- 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::TermStateBarrier< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >

A state barrier term (could also be considered a soft constraint) Note that this term explicitly excludes controls, as there are better ways to limit control effort in a "soft" way, e.g. through the use of sigmoid functions.

Todo:
implement sigmoid barriers

Member Typedef Documentation

◆ 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, STATE_DIM, STATE_DIM> ct::optcon::TermStateBarrier< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::state_matrix_t

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

Constructor & Destructor Documentation

◆ TermStateBarrier() [1/3]

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL , typename SCALAR >
ct::optcon::TermStateBarrier< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::TermStateBarrier ( )

◆ TermStateBarrier() [2/3]

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL , typename SCALAR >
ct::optcon::TermStateBarrier< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::TermStateBarrier ( const state_vector_t ub,
const state_vector_t lb,
const state_vector_t alpha 
)

◆ TermStateBarrier() [3/3]

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

◆ ~TermStateBarrier()

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

Member Function Documentation

◆ clone()

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL , typename SCALAR >
TermStateBarrier< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR > * ct::optcon::TermStateBarrier< 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::TermStateBarrier< 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 ct::optcon::TermStateBarrier< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::barriers_, ct::optcon::TermBase< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::computeActivation(), i, t, u, and x.

◆ loadConfigFile()

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL , typename SCALAR >
void ct::optcon::TermStateBarrier< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::loadConfigFile ( const std::string &  filename,
const std::string &  termName,
bool  verbose = false 
)
overridevirtual

◆ initialize()

Member Data Documentation

◆ state_vector_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, 1> ct::optcon::TermStateBarrier< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::state_vector_t

◆ alpha_

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL = double, typename SCALAR = SCALAR_EVAL>
state_vector_t ct::optcon::TermStateBarrier< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::alpha_
protected

◆ ub_

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL = double, typename SCALAR = SCALAR_EVAL>
state_vector_t ct::optcon::TermStateBarrier< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::ub_
protected

◆ lb_

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL = double, typename SCALAR = SCALAR_EVAL>
state_vector_t ct::optcon::TermStateBarrier< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::lb_
protected

◆ barriers_

template<size_t STATE_DIM, size_t CONTROL_DIM, typename SCALAR_EVAL = double, typename SCALAR = SCALAR_EVAL>
std::vector<ct::core::tpl::BarrierActivation<SCALAR, ct::core::tpl::TraitSelector<SCALAR> > > ct::optcon::TermStateBarrier< STATE_DIM, CONTROL_DIM, SCALAR_EVAL, SCALAR >::barriers_
protected

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