pinocchio  2.7.0
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
fwd.hpp
1 //
2 // Copyright (c) 2015-2020 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  }
32 
38  template<typename Scalar, int Options=0> struct SE3Tpl;
39 
40  template<typename Derived> class MotionBase;
41  template<typename Derived> class MotionDense;
42  template<typename Vector6ArgType> class MotionRef;
43  template<typename Scalar, int Options=0> class MotionTpl;
44  template<typename Scalar, int Options=0> struct MotionZeroTpl;
45  template<typename Scalar, int Options=0> struct PINOCCHIO_DEPRECATED BiasZeroTpl;
46 
47  template<typename Derived> class ForceBase;
48  template<typename Derived> class ForceDense;
49  template<typename Vector6ArgType> class ForceRef;
50  template<typename Scalar, int Options=0> class ForceTpl;
51 
52  template<typename Scalar, int Options=0> class InertiaTpl;
53  template<typename Scalar, int Options=0> class Symmetric3Tpl;
54 
55 
56  typedef SE3Tpl <double,0> SE3;
58  typedef ForceTpl <double,0> Force;
62 
63 PINOCCHIO_COMPILER_DIAGNOSTIC_PUSH
64 PINOCCHIO_COMPILER_DIAGNOSTIC_IGNORED_DEPRECECATED_DECLARATIONS
65  typedef BiasZeroTpl <double,0> BiasZero;
66 PINOCCHIO_COMPILER_DIAGNOSTIC_POP
67 
68 
72  // end of group spatial
73 
74  #define SPATIAL_TYPEDEF_TEMPLATE_GENERIC(derived,TYPENAME) \
75  typedef TYPENAME traits<derived>::Scalar Scalar; \
76  typedef TYPENAME traits<derived>::Vector3 Vector3; \
77  typedef TYPENAME traits<derived>::Vector4 Vector4; \
78  typedef TYPENAME traits<derived>::Vector6 Vector6; \
79  typedef TYPENAME traits<derived>::Matrix3 Matrix3; \
80  typedef TYPENAME traits<derived>::Matrix4 Matrix4; \
81  typedef TYPENAME traits<derived>::Matrix6 Matrix6; \
82  typedef TYPENAME traits<derived>::Angular_t Angular_t; \
83  typedef TYPENAME traits<derived>::Linear_t Linear_t; \
84  typedef TYPENAME traits<derived>::ConstAngular_t ConstAngular_t; \
85  typedef TYPENAME traits<derived>::ConstLinear_t ConstLinear_t; \
86  typedef TYPENAME traits<derived>::ActionMatrix_t ActionMatrix_t; \
87  typedef TYPENAME traits<derived>::Quaternion_t Quaternion_t; \
88  typedef TYPENAME traits<derived>::SE3 SE3; \
89  typedef TYPENAME traits<derived>::Force Force; \
90  typedef TYPENAME traits<derived>::Motion Motion; \
91  typedef TYPENAME traits<derived>::Symmetric3 Symmetric3; \
92  enum { \
93  LINEAR = traits<derived>::LINEAR, \
94  ANGULAR = traits<derived>::ANGULAR \
95  }
96 
97  #define SPATIAL_TYPEDEF_TEMPLATE(derived) \
98  SPATIAL_TYPEDEF_TEMPLATE_GENERIC(derived,typename)
99 
100  #define SPATIAL_TYPEDEF_NO_TEMPLATE(derived) \
101  SPATIAL_TYPEDEF_TEMPLATE_GENERIC(derived,PINOCCHIO_MACRO_EMPTY_ARG)
102 
103  namespace internal
104  {
105  // for certain Scalar type, it might be needed to proceed to call some normalization procedure
106  // in when performing a cast. This struct is an helper to support such modality.
107  template<typename Class, typename NewScalar, typename Scalar>
108  struct cast_call_normalize_method;
109  }
110 
111 } // namespace pinocchio
112 
113 #endif // ifndef __pinocchio_spatial_fwd_hpp__
pinocchio::ForceBase
Base interface for forces representation.
Definition: force-base.hpp:22
pinocchio::SE3Tpl
Definition: fwd.hpp:38
pinocchio::MotionDense
Definition: fwd.hpp:41
pinocchio::MotionBase
Definition: fwd.hpp:40
pinocchio::MotionZeroTpl
Definition: fwd.hpp:44
pinocchio::ForceTpl
Definition: force-tpl.hpp:35
pinocchio::BiasZeroTpl
BiasZeroTpl has been replaced by MotionZeroTpl. Please use this naming instead.
Definition: motion-zero.hpp:124
pinocchio::ForceRef
Definition: force-ref.hpp:52
pinocchio::Symmetric3Tpl
Definition: fwd.hpp:53
pinocchio::ForceDense
Definition: force-dense.hpp:24
pinocchio::InertiaTpl
Definition: fwd.hpp:52
pinocchio::MotionTpl
Definition: fwd.hpp:43
pinocchio::MotionRef
Definition: fwd.hpp:42
pinocchio
Main pinocchio namespace.
Definition: treeview.dox:11