pinocchio  3.7.0
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
 
Loading...
Searching...
No Matches
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
12namespace 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