9 #ifndef CROCODDYL_MULTIBODY_ACTIONS_FREE_FWDDYN_HPP_
10 #define CROCODDYL_MULTIBODY_ACTIONS_FREE_FWDDYN_HPP_
14 #include "crocoddyl/multibody/fwd.hpp"
15 #include "crocoddyl/core/diff-action-base.hpp"
16 #include "crocoddyl/core/actuation-base.hpp"
17 #include "crocoddyl/multibody/data/multibody.hpp"
18 #include "crocoddyl/multibody/states/multibody.hpp"
19 #include "crocoddyl/multibody/costs/cost-sum.hpp"
23 template <
typename _Scalar>
26 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
28 typedef _Scalar Scalar;
36 typedef typename MathBase::VectorXs VectorXs;
37 typedef typename MathBase::MatrixXs MatrixXs;
40 boost::shared_ptr<ActuationModelAbstract> actuation,
41 boost::shared_ptr<CostModelSum> costs);
44 virtual void calc(
const boost::shared_ptr<DifferentialActionDataAbstract>& data,
const Eigen::Ref<const VectorXs>& x,
45 const Eigen::Ref<const VectorXs>& u);
46 virtual void calcDiff(
const boost::shared_ptr<DifferentialActionDataAbstract>& data,
47 const Eigen::Ref<const VectorXs>& x,
const Eigen::Ref<const VectorXs>& u);
48 boost::shared_ptr<DifferentialActionDataAbstract> createData();
50 const boost::shared_ptr<ActuationModelAbstract>& get_actuation()
const;
51 const boost::shared_ptr<CostModelSum>& get_costs()
const;
52 pinocchio::ModelTpl<Scalar>& get_pinocchio()
const;
53 const VectorXs& get_armature()
const;
54 void set_armature(
const VectorXs& armature);
66 boost::shared_ptr<ActuationModelAbstract> actuation_;
67 boost::shared_ptr<CostModelSum> costs_;
68 pinocchio::ModelTpl<Scalar>& pinocchio_;
73 template <
typename _Scalar>
75 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
76 typedef _Scalar Scalar;
79 typedef typename MathBase::VectorXs VectorXs;
80 typedef typename MathBase::MatrixXs MatrixXs;
82 template <
template <
typename Scalar>
class Model>
85 pinocchio(pinocchio::DataTpl<Scalar>(model->get_pinocchio())),
86 multibody(&pinocchio, model->get_actuation()->createData()),
87 costs(model->get_costs()->createData(&multibody)),
88 Minv(model->get_state()->get_nv(), model->get_state()->get_nv()),
89 u_drift(model->get_nu()),
90 dtau_dx(model->get_nu(), model->get_state()->get_ndx()) {
91 costs->shareMemory(
this);
97 pinocchio::DataTpl<Scalar> pinocchio;
99 boost::shared_ptr<CostDataSumTpl<Scalar> > costs;
121 #include <crocoddyl/multibody/actions/free-fwddyn.hxx>
123 #endif // CROCODDYL_MULTIBODY_ACTIONS_FREE_FWDDYN_HPP_