pinocchio  3.5.0
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
fwd.hpp
1 //
2 // Copyright (c) 2015-2025 CNRS INRIA
3 // Copyright (c) 2016 Wandercraft, 86 rue de Paris 91400 Orsay, France.
4 //
5 
6 #ifndef __pinocchio_spatial_fwd_hpp__
7 #define __pinocchio_spatial_fwd_hpp__
8 
9 #include "pinocchio/fwd.hpp"
10 #include "pinocchio/macros.hpp"
11 
12 namespace pinocchio
13 {
15  namespace internal
16  {
18  template<typename Type, typename Scalar>
19  struct RHSScalarMultiplication
20  {
21  typedef Type ReturnType;
22  };
23 
25  template<typename Type, typename Scalar>
26  struct LHSScalarMultiplication
27  {
28  typedef Type ReturnType;
29  };
30  } // namespace internal
32 
38  template<typename Derived>
39  class MotionBase;
40  template<typename Derived>
41  class MotionDense;
42  template<typename Vector6ArgType>
43  class MotionRef;
44  template<typename Scalar, int Options = context::Options>
45  struct MotionZeroTpl;
46 
47  template<typename Derived>
48  class ForceBase;
49  template<typename Derived>
50  class ForceDense;
51  template<typename Vector6ArgType>
52  class ForceRef;
53 
54  template<typename Scalar, int Options = context::Options>
55  class Symmetric3Tpl;
56  template<typename Scalar, int Options = context::Options>
57  struct PseudoInertiaTpl;
58  template<typename Scalar, int Options = context::Options>
59  struct LogCholeskyParametersTpl;
60 
61  typedef context::SE3 SE3;
62  typedef context::Motion Motion;
63  typedef context::Force Force;
64  typedef context::Inertia Inertia;
65  typedef Symmetric3Tpl<context::Scalar, context::Options> Symmetric3;
66  typedef MotionZeroTpl<context::Scalar, context::Options> MotionZero;
67  typedef PseudoInertiaTpl<context::Scalar, context::Options> PseudoInertia;
68  typedef LogCholeskyParametersTpl<context::Scalar, context::Options> LogCholeskyParameters;
69 
73  // end of group spatial
74 
75 #define SPATIAL_TYPEDEF_TEMPLATE_GENERIC(derived, TYPENAME) \
76  typedef TYPENAME traits<derived>::Scalar Scalar; \
77  typedef TYPENAME traits<derived>::Vector3 Vector3; \
78  typedef TYPENAME traits<derived>::Vector4 Vector4; \
79  typedef TYPENAME traits<derived>::Vector6 Vector6; \
80  typedef TYPENAME traits<derived>::Matrix3 Matrix3; \
81  typedef TYPENAME traits<derived>::Matrix4 Matrix4; \
82  typedef TYPENAME traits<derived>::Matrix6 Matrix6; \
83  typedef TYPENAME traits<derived>::Angular_t Angular_t; \
84  typedef TYPENAME traits<derived>::Linear_t Linear_t; \
85  typedef TYPENAME traits<derived>::ConstAngular_t ConstAngular_t; \
86  typedef TYPENAME traits<derived>::ConstLinear_t ConstLinear_t; \
87  typedef TYPENAME traits<derived>::ActionMatrix_t ActionMatrix_t; \
88  typedef TYPENAME traits<derived>::Quaternion_t Quaternion_t; \
89  typedef TYPENAME traits<derived>::SE3 SE3; \
90  typedef TYPENAME traits<derived>::Force Force; \
91  typedef TYPENAME traits<derived>::Motion Motion; \
92  typedef TYPENAME traits<derived>::Symmetric3 Symmetric3; \
93  enum \
94  { \
95  LINEAR = traits<derived>::LINEAR, \
96  ANGULAR = traits<derived>::ANGULAR \
97  }
98 
99 #define SPATIAL_TYPEDEF_TEMPLATE(derived) SPATIAL_TYPEDEF_TEMPLATE_GENERIC(derived, typename)
100 
101 #define SPATIAL_TYPEDEF_NO_TEMPLATE(derived) \
102  SPATIAL_TYPEDEF_TEMPLATE_GENERIC(derived, PINOCCHIO_MACRO_EMPTY_ARG)
103 
104  namespace internal
105  {
106  // for certain Scalar type, it might be needed to proceed to call some normalization procedure
107  // in when performing a cast. This struct is an helper to support such modality.
108  template<typename Class, typename NewScalar, typename Scalar>
109  struct cast_call_normalize_method;
110  } // namespace internal
111 
112 } // namespace pinocchio
113 
114 #endif // ifndef __pinocchio_spatial_fwd_hpp__
Main pinocchio namespace.
Definition: treeview.dox:11