Crocoddyl
 
Loading...
Searching...
No Matches
ActionModelCodeGenTpl< _Scalar > Class Template Reference
Inheritance diagram for ActionModelCodeGenTpl< _Scalar >:
ActionModelAbstractTpl< _Scalar >

Public Types

typedef ActionDataAbstractTpl< Scalar > ActionDataAbstract
 
typedef ActionDataAbstractTpl< ADScalar > ADActionDataAbstract
 
typedef ActionDataCodeGenTpl< ADScalar > ADActionDataCodeGen
 
typedef crocoddyl::ActionModelAbstractTpl< ADScalar > ADBase
 
typedef CppAD::ADFun< CGScalar > ADFun
 
typedef MathBaseTpl< ADScalar >::Matrix3s ADMatrix3s
 
typedef MathBaseTpl< ADScalar >::MatrixXs ADMatrixXs
 
typedef CppAD::AD< CGScalar > ADScalar
 
typedef MathBaseTpl< ADScalar >::Vector3s ADVector3s
 
typedef MathBaseTpl< ADScalar >::VectorXs ADVectorXs
 
typedef ActionModelAbstractTpl< Scalar > Base
 
typedef CppAD::cg::CG< Scalar > CGScalar
 
typedef ActionDataCodeGenTpl< Scalar > Data
 
typedef MathBaseTpl< Scalar >::MatrixXs MatrixXs
 
typedef _Scalar Scalar
 
typedef MathBaseTpl< Scalar >::VectorXs VectorXs
 
- Public Types inherited from ActionModelAbstractTpl< _Scalar >
typedef ActionDataAbstractTpl< Scalar > ActionDataAbstract
 
typedef MathBaseTpl< Scalar > MathBase
 
typedef StateAbstractTpl< Scalar > StateAbstract
 
typedef MathBase::VectorXs VectorXs
 

Public Member Functions

 ActionModelCodeGenTpl (std::shared_ptr< ADBase > admodel, std::shared_ptr< Base > model, const std::string &library_name, const std::size_t n_env=0, std::function< void(std::shared_ptr< ADBase >, const Eigen::Ref< const ADVectorXs > &)> fn_record_env=empty_record_env, const std::string &function_name_calc="calc", const std::string &function_name_calcDiff="calcDiff")
 
void calc (const std::shared_ptr< ActionDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u)
 
void calcDiff (const std::shared_ptr< ActionDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u)
 
void collect_calcDiffout ()
 
void collect_calcout ()
 
void compileLib ()
 
std::shared_ptr< ActionDataAbstractcreateData ()
 Create the action data.
 
bool existLib () const
 
Eigen::DenseIndex getInputDimension () const
 Dimension of the input vector.
 
void initLib ()
 
void loadLib (const bool generate_if_not_exist=true)
 
typedef PINOCCHIO_EIGEN_PLAIN_ROW_MAJOR_TYPE (ADMatrixXs) RowADMatrixXs
 
void recordCalc ()
 
void recordCalcDiff ()
 
void set_env (const std::shared_ptr< ActionDataAbstract > &data, const Eigen::Ref< const VectorXs > &env_val) const
 
- Public Member Functions inherited from ActionModelAbstractTpl< _Scalar >
 ActionModelAbstractTpl (std::shared_ptr< StateAbstract > state, const std::size_t nu, const std::size_t nr=0, const std::size_t ng=0, const std::size_t nh=0, const std::size_t ng_T=0, const std::size_t nh_T=0)
 Initialize the action model.
 
virtual void calc (const std::shared_ptr< ActionDataAbstract > &data, const Eigen::Ref< const VectorXs > &x)
 Compute the total cost value for nodes that depends only on the state.
 
virtual void calc (const std::shared_ptr< ActionDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u)=0
 Compute the next state and cost value.
 
virtual void calcDiff (const std::shared_ptr< ActionDataAbstract > &data, const Eigen::Ref< const VectorXs > &x)
 Compute the derivatives of the cost functions with respect to the state only.
 
virtual void calcDiff (const std::shared_ptr< ActionDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u)=0
 Compute the derivatives of the dynamics and cost functions.
 
virtual bool checkData (const std::shared_ptr< ActionDataAbstract > &data)
 Checks that a specific data belongs to this model.
 
virtual const VectorXs & get_g_lb () const
 Return the lower bound of the inequality constraints.
 
virtual const VectorXs & get_g_ub () const
 Return the upper bound of the inequality constraints.
 
bool get_has_control_limits () const
 Indicates if there are defined control limits.
 
virtual std::size_t get_ng () const
 Return the number of inequality constraints.
 
virtual std::size_t get_ng_T () const
 Return the number of inequality terminal constraints.
 
virtual std::size_t get_nh () const
 Return the number of equality constraints.
 
virtual std::size_t get_nh_T () const
 Return the number of equality terminal constraints.
 
std::size_t get_nr () const
 Return the dimension of the cost-residual vector.
 
std::size_t get_nu () const
 Return the dimension of the control input.
 
const std::shared_ptr< StateAbstract > & get_state () const
 Return the state.
 
const VectorXs & get_u_lb () const
 Return the control lower bound.
 
const VectorXs & get_u_ub () const
 Return the control upper bound.
 
virtual void print (std::ostream &os) const
 Print relevant information of the action model.
 
virtual void quasiStatic (const std::shared_ptr< ActionDataAbstract > &data, Eigen::Ref< VectorXs > u, const Eigen::Ref< const VectorXs > &x, const std::size_t maxiter=100, const Scalar tol=Scalar(1e-9))
 Computes the quasic static commands.
 
VectorXs quasiStatic_x (const std::shared_ptr< ActionDataAbstract > &data, const VectorXs &x, const std::size_t maxiter=100, const Scalar tol=Scalar(1e-9))
 
void set_g_lb (const VectorXs &g_lb)
 Modify the lower bound of the inequality constraints.
 
void set_g_ub (const VectorXs &g_ub)
 Modify the upper bound of the inequality constraints.
 
void set_u_lb (const VectorXs &u_lb)
 Modify the control lower bounds.
 
void set_u_ub (const VectorXs &u_ub)
 Modify the control upper bounds.
 

Static Public Member Functions

static void empty_record_env (std::shared_ptr< ADBase >, const Eigen::Ref< const ADVectorXs > &)
 

Protected Attributes

ADFun ad_calc
 
ADFun ad_calcDiff
 
ADVectorXs ad_calcDiffout
 
ADVectorXs ad_calcout
 
std::shared_ptr< ADActionDataAbstractad_data
 
std::shared_ptr< ADBasead_model
 
ADVectorXs ad_X
 
ADVectorXs ad_X2
 
bool build_forward
 Options to generate or not the source code for the evaluation function.
 
std::unique_ptr< CppAD::cg::GenericModel< Scalar > > calcDiffFun_ptr
 
std::unique_ptr< CppAD::cg::ModelCSourceGen< Scalar > > calcDiffgen_ptr
 
std::unique_ptr< CppAD::cg::GenericModel< Scalar > > calcFun_ptr
 
std::unique_ptr< CppAD::cg::ModelCSourceGen< Scalar > > calcgen_ptr
 
std::unique_ptr< CppAD::cg::DynamicLib< Scalar > > dynamicLib_ptr
 
std::unique_ptr< CppAD::cg::DynamicModelLibraryProcessor< Scalar > > dynamicLibManager_ptr
 
std::function< void(std::shared_ptr< ADBase >, const Eigen::Ref< const ADVectorXs > &)> fn_record_env
 A function that updates the environment variables before starting record.
 
const std::string function_name_calc
 Name of the function.
 
const std::string function_name_calcDiff
 
bool has_control_limits_
 
std::unique_ptr< CppAD::cg::ModelLibraryCSourceGen< Scalar > > libcgen_ptr
 
const std::string library_name
 Name of the library.
 
std::shared_ptr< Basemodel
 < Upper control limits
 
const std::size_t n_env
 Size of the environment variables.
 
std::size_t nr_
 
std::size_t nu_
 < Dimension of the cost residual
 
std::shared_ptr< StateAbstractstate_
 < Control dimension
 
VectorXs u_lb_
 < Model of the state
 
VectorXs u_ub_
 < Lower control limits
 
- Protected Attributes inherited from ActionModelAbstractTpl< _Scalar >
VectorXs g_lb_
 Lower bound of the inequality constraints.
 
VectorXs g_ub_
 Lower bound of the inequality constraints.
 
bool has_control_limits_
 
std::size_t ng_
 Number of inequality constraints.
 
std::size_t ng_T_
 Number of inequality terminal constraints.
 
std::size_t nh_
 Number of equality constraints.
 
std::size_t nh_T_
 Number of equality terminal constraints.
 
std::size_t nr_
 Dimension of the cost residual.
 
std::size_t nu_
 Control dimension.
 
std::shared_ptr< StateAbstractstate_
 Model of the state.
 
VectorXs u_lb_
 Lower control limits.
 
VectorXs u_ub_
 Upper control limits.
 
VectorXs unone_
 Neutral state.
 

Additional Inherited Members

- Public Attributes inherited from ActionModelAbstractTpl< _Scalar >
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar Scalar
 
- Protected Member Functions inherited from ActionModelAbstractTpl< _Scalar >
void update_has_control_limits ()
 Update the status of the control limits (i.e. if there are defined limits)
 

Detailed Description

template<typename _Scalar>
class crocoddyl::ActionModelCodeGenTpl< _Scalar >

Definition at line 25 of file action-base.hpp.

Member Typedef Documentation

◆ Scalar

template<typename _Scalar >
typedef _Scalar Scalar

Definition at line 27 of file action-base.hpp.

◆ Base

template<typename _Scalar >
typedef ActionModelAbstractTpl<Scalar> Base

Definition at line 28 of file action-base.hpp.

◆ Data

template<typename _Scalar >
typedef ActionDataCodeGenTpl<Scalar> Data

Definition at line 29 of file action-base.hpp.

◆ ActionDataAbstract

template<typename _Scalar >
typedef ActionDataAbstractTpl<Scalar> ActionDataAbstract

Definition at line 30 of file action-base.hpp.

◆ VectorXs

template<typename _Scalar >
typedef MathBaseTpl<Scalar>::VectorXs VectorXs

Definition at line 31 of file action-base.hpp.

◆ MatrixXs

template<typename _Scalar >
typedef MathBaseTpl<Scalar>::MatrixXs MatrixXs

Definition at line 32 of file action-base.hpp.

◆ CGScalar

template<typename _Scalar >
typedef CppAD::cg::CG<Scalar> CGScalar

Definition at line 34 of file action-base.hpp.

◆ ADScalar

template<typename _Scalar >
typedef CppAD::AD<CGScalar> ADScalar

Definition at line 35 of file action-base.hpp.

◆ ADBase

template<typename _Scalar >
typedef crocoddyl::ActionModelAbstractTpl<ADScalar> ADBase

Definition at line 36 of file action-base.hpp.

◆ ADActionDataAbstract

template<typename _Scalar >
typedef ActionDataAbstractTpl<ADScalar> ADActionDataAbstract

Definition at line 37 of file action-base.hpp.

◆ ADActionDataCodeGen

template<typename _Scalar >
typedef ActionDataCodeGenTpl<ADScalar> ADActionDataCodeGen

Definition at line 38 of file action-base.hpp.

◆ ADVectorXs

template<typename _Scalar >
typedef MathBaseTpl<ADScalar>::VectorXs ADVectorXs

Definition at line 39 of file action-base.hpp.

◆ ADMatrixXs

template<typename _Scalar >
typedef MathBaseTpl<ADScalar>::MatrixXs ADMatrixXs

Definition at line 40 of file action-base.hpp.

◆ ADVector3s

template<typename _Scalar >
typedef MathBaseTpl<ADScalar>::Vector3s ADVector3s

Definition at line 41 of file action-base.hpp.

◆ ADMatrix3s

template<typename _Scalar >
typedef MathBaseTpl<ADScalar>::Matrix3s ADMatrix3s

Definition at line 42 of file action-base.hpp.

◆ ADFun

template<typename _Scalar >
typedef CppAD::ADFun<CGScalar> ADFun

Definition at line 47 of file action-base.hpp.

Constructor & Destructor Documentation

◆ ActionModelCodeGenTpl()

template<typename _Scalar >
ActionModelCodeGenTpl ( std::shared_ptr< ADBase admodel,
std::shared_ptr< Base model,
const std::string &  library_name,
const std::size_t  n_env = 0,
std::function< void(std::shared_ptr< ADBase >, const Eigen::Ref< const ADVectorXs > &)>  fn_record_env = empty_record_env,
const std::string &  function_name_calc = "calc",
const std::string &  function_name_calcDiff = "calcDiff" 
)
inline

Definition at line 49 of file action-base.hpp.

Member Function Documentation

◆ empty_record_env()

template<typename _Scalar >
static void empty_record_env ( std::shared_ptr< ADBase ,
const Eigen::Ref< const ADVectorXs > &   
)
inlinestatic

Definition at line 77 of file action-base.hpp.

◆ recordCalc()

template<typename _Scalar >
void recordCalc ( )
inline

Definition at line 80 of file action-base.hpp.

◆ collect_calcout()

template<typename _Scalar >
void collect_calcout ( )
inline

Definition at line 95 of file action-base.hpp.

◆ collect_calcDiffout()

template<typename _Scalar >
void collect_calcDiffout ( )
inline

Definition at line 100 of file action-base.hpp.

◆ recordCalcDiff()

template<typename _Scalar >
void recordCalcDiff ( )
inline

Definition at line 121 of file action-base.hpp.

◆ initLib()

template<typename _Scalar >
void initLib ( )
inline

Definition at line 136 of file action-base.hpp.

◆ compileLib()

template<typename _Scalar >
void compileLib ( )
inline

Definition at line 163 of file action-base.hpp.

◆ existLib()

template<typename _Scalar >
bool existLib ( ) const
inline

Definition at line 171 of file action-base.hpp.

◆ loadLib()

template<typename _Scalar >
void loadLib ( const bool  generate_if_not_exist = true)
inline

Definition at line 179 of file action-base.hpp.

◆ set_env()

template<typename _Scalar >
void set_env ( const std::shared_ptr< ActionDataAbstract > &  data,
const Eigen::Ref< const VectorXs > &  env_val 
) const
inline

Definition at line 199 of file action-base.hpp.

◆ calc()

template<typename _Scalar >
void calc ( const std::shared_ptr< ActionDataAbstract > &  data,
const Eigen::Ref< const VectorXs > &  x,
const Eigen::Ref< const VectorXs > &  u 
)
inline

Definition at line 205 of file action-base.hpp.

◆ calcDiff()

template<typename _Scalar >
void calcDiff ( const std::shared_ptr< ActionDataAbstract > &  data,
const Eigen::Ref< const VectorXs > &  x,
const Eigen::Ref< const VectorXs > &  u 
)
inline

Definition at line 219 of file action-base.hpp.

◆ createData()

template<typename _Scalar >
std::shared_ptr< ActionDataAbstract > createData ( )
inlinevirtual

Create the action data.

Returns
the action data

Reimplemented from ActionModelAbstractTpl< _Scalar >.

Definition at line 232 of file action-base.hpp.

◆ getInputDimension()

template<typename _Scalar >
Eigen::DenseIndex getInputDimension ( ) const
inline

Dimension of the input vector.

Definition at line 237 of file action-base.hpp.

Member Data Documentation

◆ model

template<typename _Scalar >
std::shared_ptr<Base> model
protected

< Upper control limits

Definition at line 248 of file action-base.hpp.

◆ ad_model

template<typename _Scalar >
std::shared_ptr<ADBase> ad_model
protected

Definition at line 249 of file action-base.hpp.

◆ ad_data

template<typename _Scalar >
std::shared_ptr<ADActionDataAbstract> ad_data
protected

Definition at line 250 of file action-base.hpp.

◆ function_name_calc

template<typename _Scalar >
const std::string function_name_calc
protected

Name of the function.

Definition at line 253 of file action-base.hpp.

◆ function_name_calcDiff

template<typename _Scalar >
const std::string function_name_calcDiff
protected

Definition at line 253 of file action-base.hpp.

◆ library_name

template<typename _Scalar >
const std::string library_name
protected

Name of the library.

Definition at line 256 of file action-base.hpp.

◆ n_env

template<typename _Scalar >
const std::size_t n_env
protected

Size of the environment variables.

Definition at line 259 of file action-base.hpp.

◆ fn_record_env

template<typename _Scalar >
std::function<void(std::shared_ptr<ADBase>, const Eigen::Ref<const ADVectorXs>&)> fn_record_env
protected

A function that updates the environment variables before starting record.

Definition at line 265 of file action-base.hpp.

◆ build_forward

template<typename _Scalar >
bool build_forward
protected

Options to generate or not the source code for the evaluation function.

Definition at line 269 of file action-base.hpp.

◆ ad_X

template<typename _Scalar >
ADVectorXs ad_X
protected

Definition at line 271 of file action-base.hpp.

◆ ad_X2

template<typename _Scalar >
ADVectorXs ad_X2
protected

Definition at line 271 of file action-base.hpp.

◆ ad_calcout

template<typename _Scalar >
ADVectorXs ad_calcout
protected

Definition at line 273 of file action-base.hpp.

◆ ad_calcDiffout

template<typename _Scalar >
ADVectorXs ad_calcDiffout
protected

Definition at line 274 of file action-base.hpp.

◆ ad_calc

template<typename _Scalar >
ADFun ad_calc
protected

Definition at line 276 of file action-base.hpp.

◆ ad_calcDiff

template<typename _Scalar >
ADFun ad_calcDiff
protected

Definition at line 276 of file action-base.hpp.

◆ calcgen_ptr

template<typename _Scalar >
std::unique_ptr<CppAD::cg::ModelCSourceGen<Scalar> > calcgen_ptr
protected

Definition at line 278 of file action-base.hpp.

◆ calcDiffgen_ptr

template<typename _Scalar >
std::unique_ptr<CppAD::cg::ModelCSourceGen<Scalar> > calcDiffgen_ptr
protected

Definition at line 279 of file action-base.hpp.

◆ libcgen_ptr

template<typename _Scalar >
std::unique_ptr<CppAD::cg::ModelLibraryCSourceGen<Scalar> > libcgen_ptr
protected

Definition at line 280 of file action-base.hpp.

◆ dynamicLibManager_ptr

template<typename _Scalar >
std::unique_ptr<CppAD::cg::DynamicModelLibraryProcessor<Scalar> > dynamicLibManager_ptr
protected

Definition at line 282 of file action-base.hpp.

◆ dynamicLib_ptr

template<typename _Scalar >
std::unique_ptr<CppAD::cg::DynamicLib<Scalar> > dynamicLib_ptr
protected

Definition at line 283 of file action-base.hpp.

◆ calcFun_ptr

template<typename _Scalar >
std::unique_ptr<CppAD::cg::GenericModel<Scalar> > calcFun_ptr
protected

Definition at line 284 of file action-base.hpp.

◆ calcDiffFun_ptr

template<typename _Scalar >
std::unique_ptr<CppAD::cg::GenericModel<Scalar> > calcDiffFun_ptr
protected

Definition at line 285 of file action-base.hpp.

◆ has_control_limits_

template<typename _Scalar >
bool has_control_limits_
protected

Indicates whether any of the control limits is finite

Definition at line 331 of file action-base.hpp.

◆ nr_

template<typename _Scalar >
std::size_t nr_
protected

< Indicates whether any of the control limits

Definition at line 320 of file action-base.hpp.

◆ nu_

template<typename _Scalar >
std::size_t nu_
protected

< Dimension of the cost residual

Definition at line 319 of file action-base.hpp.

◆ state_

template<typename _Scalar >
std::shared_ptr<StateAbstract> state_
protected

< Control dimension

Definition at line 325 of file action-base.hpp.

◆ u_lb_

template<typename _Scalar >
VectorXs u_lb_
protected

< Model of the state

Definition at line 329 of file action-base.hpp.

◆ u_ub_

template<typename _Scalar >
VectorXs u_ub_
protected

< Lower control limits

Definition at line 330 of file action-base.hpp.


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