Crocoddyl
joint.hpp
1 // BSD 3-Clause License
3 //
4 // Copyright (C) 2022, University of Edinburgh, Heriot-Watt University
5 // Copyright note valid unless otherwise stated in individual files.
6 // All rights reserved.
8 
9 #ifndef CROCODDYL_CORE_DATA_JOINT_HPP_
10 #define CROCODDYL_CORE_DATA_JOINT_HPP_
11 
12 #include "crocoddyl/core/data-collector-base.hpp"
13 #include "crocoddyl/core/data/actuation.hpp"
14 #include "crocoddyl/core/fwd.hpp"
15 #include "crocoddyl/core/state-base.hpp"
16 
17 namespace crocoddyl {
18 
19 template <typename _Scalar>
21  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
22 
23  typedef _Scalar Scalar;
27  typedef typename MathBase::VectorXs VectorXs;
28  typedef typename MathBase::MatrixXs MatrixXs;
29 
38  JointDataAbstractTpl(std::shared_ptr<StateAbstract> state,
39  std::shared_ptr<ActuationModelAbstract> actuation,
40  const std::size_t nu)
41  : tau(actuation->get_nu()),
42  a(state->get_nv()),
43  dtau_dx(actuation->get_nu(), state->get_ndx()),
44  dtau_du(actuation->get_nu(), nu),
45  da_dx(state->get_nv(), state->get_ndx()),
46  da_du(state->get_nv(), nu) {
47  tau.setZero();
48  a.setZero();
49  dtau_dx.setZero();
50  dtau_du.setZero();
51  da_dx.setZero();
52  da_du.setZero();
53  }
54  virtual ~JointDataAbstractTpl() {}
55 
56  VectorXs tau;
57  VectorXs a;
58  MatrixXs dtau_dx;
60  MatrixXs dtau_du;
62  MatrixXs da_dx;
64  MatrixXs da_du;
66 };
67 
68 template <typename Scalar>
70  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
71 
73  : DataCollectorAbstractTpl<Scalar>(), joint(joint) {}
74  virtual ~DataCollectorJointTpl() {}
75 
76  std::shared_ptr<JointDataAbstractTpl<Scalar> > joint;
77 };
78 
79 template <typename Scalar>
81  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
82 
90  std::shared_ptr<ActuationDataAbstractTpl<Scalar> > actuation,
91  std::shared_ptr<JointDataAbstractTpl<Scalar> > joint)
92  : DataCollectorActuationTpl<Scalar>(actuation), joint(joint) {}
93  virtual ~DataCollectorJointActuationTpl() {}
94 
95  std::shared_ptr<JointDataAbstractTpl<Scalar> > joint;
96 };
97 
98 } // namespace crocoddyl
99 
100 CROCODDYL_DECLARE_EXTERN_TEMPLATE_STRUCT(crocoddyl::JointDataAbstractTpl)
101 CROCODDYL_DECLARE_EXTERN_TEMPLATE_STRUCT(crocoddyl::DataCollectorJointTpl)
102 CROCODDYL_DECLARE_EXTERN_TEMPLATE_STRUCT(
104 
105 #endif // CROCODDYL_CORE_DATA_JOINT_HPP_
Abstract class for the actuation-mapping model.
Abstract class for the state representation.
Definition: state-base.hpp:48
EIGEN_MAKE_ALIGNED_OPERATOR_NEW DataCollectorJointActuationTpl(std::shared_ptr< ActuationDataAbstractTpl< Scalar > > actuation, std::shared_ptr< JointDataAbstractTpl< Scalar > > joint)
Initialize the joint-actuation data collector.
Definition: joint.hpp:89
VectorXs a
Generalized joint acceleration.
Definition: joint.hpp:57
VectorXs tau
Joint efforts.
Definition: joint.hpp:56
JointDataAbstractTpl(std::shared_ptr< StateAbstract > state, std::shared_ptr< ActuationModelAbstract > actuation, const std::size_t nu)
Initialize a joint data structure containing generalized accelerations and joint efforts,...
Definition: joint.hpp:38