aligator  0.15.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Loading...
Searching...
No Matches
action-model-wrap.hpp
Go to the documentation of this file.
1
3#pragma once
4
7
12#include <crocoddyl/core/action-base.hpp>
13
14namespace aligator {
15namespace compat {
16namespace croc {
17template <typename Scalar>
18struct NoOpDynamics final : ExplicitDynamicsModelTpl<Scalar> {
23 NoOpDynamics(const xyz::polymorphic<Manifold> &state, const int nu)
24 : Base(state, nu) {}
25
26 void forward(const ConstVectorRef &, const ConstVectorRef &,
27 DynData &) const override {}
28
29 void dForward(const ConstVectorRef &, const ConstVectorRef &,
30 DynData &) const override {}
31};
32
33template <typename Scalar>
36 using CrocActionModel = crocoddyl::ActionModelAbstractTpl<Scalar>;
37 explicit DynamicsDataWrapperTpl(const CrocActionModel &action_model)
38 : Base((int)action_model.get_state()->get_ndx(),
39 (int)action_model.get_nu(),
40 (int)action_model.get_state()->get_nx(),
41 (int)action_model.get_state()->get_ndx()) {}
42};
43
47template <typename Scalar>
48struct ActionModelWrapperTpl final : StageModelTpl<Scalar> {
53 using CrocActionModel = crocoddyl::ActionModelAbstractTpl<Scalar>;
58
59 shared_ptr<CrocActionModel> action_model_;
60
61 explicit ActionModelWrapperTpl(shared_ptr<CrocActionModel> action_model);
62
63 bool hasDynModel() const override { return false; }
64
65 void evaluate(const ConstVectorRef &x, const ConstVectorRef &u,
66 Data &data) const override;
67
68 void computeFirstOrderDerivatives(const ConstVectorRef &x,
69 const ConstVectorRef &u,
70 Data &data) const override;
71
73 void computeSecondOrderDerivatives(const ConstVectorRef & /*x*/,
74 const ConstVectorRef & /*u*/,
75 Data & /*data*/) const override {}
76
77 shared_ptr<Data> createData() const override;
78};
79
84template <typename Scalar> struct ActionDataWrapperTpl : StageDataTpl<Scalar> {
86 using CrocActionModel = crocoddyl::ActionModelAbstractTpl<Scalar>;
87 using CrocActionData = crocoddyl::ActionDataAbstractTpl<Scalar>;
89
90 shared_ptr<CrocActionData> croc_action_data;
91
93
94 void checkData();
95
96protected:
97 // utility pointer
98 shared_ptr<DynamicsDataWrapper> dynamics_data;
100};
101
102extern template struct ActionModelWrapperTpl<context::Scalar>;
103extern template struct ActionDataWrapperTpl<context::Scalar>;
104
105} // namespace croc
106} // namespace compat
107} // namespace aligator
Headers for the Crocoddyl compatibility module.
Headers for compatibility modules.
Main package namespace.
Stage costs for control problems.
Specific data struct for explicit dynamics ExplicitDynamicsModelTpl.
ExplicitDynamicsDataTpl(int ndx1, int nu, int nx2, int ndx2)
ExplicitDynamicsModelTpl(const polymorphic< Manifold > &space, const int nu)
Base class for manifolds, to use in cost funcs, solvers...
Data struct for stage models StageModelTpl.
StageDataTpl(const StageModel &stage_model)
StageModelTpl(const PolyCost &cost, const PolyDynamics &dynamics)
A complicated child class to StageDataTpl which pipes Crocoddyl's data to the right places.
DynamicsDataWrapperTpl< Scalar > DynamicsDataWrapper
crocoddyl::ActionModelAbstractTpl< Scalar > CrocActionModel
crocoddyl::ActionDataAbstractTpl< Scalar > CrocActionData
shared_ptr< DynamicsDataWrapper > dynamics_data
ActionDataWrapperTpl(const ActionModelWrapperTpl< Scalar > &croc_action_model)
void checkData()
Check data integrity.
Wraps a crocoddyl::ActionModelAbstract.
ActionModelWrapperTpl(shared_ptr< CrocActionModel > action_model)
void evaluate(const ConstVectorRef &x, const ConstVectorRef &u, Data &data) const override
Evaluate all the functions (cost, dynamics, constraints) at this node.
DynamicsDataWrapperTpl< Scalar > DynDataWrap
void computeFirstOrderDerivatives(const ConstVectorRef &x, const ConstVectorRef &u, Data &data) const override
Compute the first-order derivatives of the StageModelTpl.
void computeSecondOrderDerivatives(const ConstVectorRef &, const ConstVectorRef &, Data &) const override
Does nothing for this class.
crocoddyl::ActionModelAbstractTpl< Scalar > CrocActionModel
shared_ptr< Data > createData() const override
Create a StageData object.
DynamicsDataWrapperTpl(const CrocActionModel &action_model)
crocoddyl::ActionModelAbstractTpl< Scalar > CrocActionModel
ExplicitDynamicsModelTpl< Scalar > Base
NoOpDynamics(const xyz::polymorphic< Manifold > &state, const int nu)
ExplicitDynamicsDataTpl< Scalar > DynData
void dForward(const ConstVectorRef &, const ConstVectorRef &, DynData &) const override
Compute the Jacobians of the forward dynamics.
void forward(const ConstVectorRef &, const ConstVectorRef &, DynData &) const override
Evaluate the forward discrete dynamics.
ManifoldAbstractTpl< Scalar > Manifold
Wraps a crocoddyl::StateAbstractTpl to a manifold (aligator::ManifoldAbstractTpl).