pinocchio  1.2.6-7-g6de3e-dirty
spatial/fwd.hpp
1 //
2 // Copyright (c) 2015-2016 CNRS
3 // Copyright (c) 2016 Wandercraft, 86 rue de Paris 91400 Orsay, France.
4 //
5 // This file is part of Pinocchio
6 // Pinocchio is free software: you can redistribute it
7 // and/or modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation, either version
9 // 3 of the License, or (at your option) any later version.
10 //
11 // Pinocchio is distributed in the hope that it will be
12 // useful, but WITHOUT ANY WARRANTY; without even the implied warranty
13 // of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // General Lesser Public License for more details. You should have
15 // received a copy of the GNU Lesser General Public License along with
16 // Pinocchio If not, see
17 // <http://www.gnu.org/licenses/>.
18 
19 #ifndef __se3_fwd_hpp__
20 #define __se3_fwd_hpp__
21 
22 #include <Eigen/Core>
23 
24 namespace se3
25 {
26  template<typename _Scalar, int _Options=0> class SE3Tpl;
27  template<typename _Scalar, int _Options=0> class MotionTpl;
28  template<typename _Scalar, int _Options=0> class ForceTpl;
29  template<typename _Scalar, int _Options=0> class InertiaTpl;
30  template<typename _Scalar, int _Options=0> class Symmetric3Tpl;
31 
32  typedef SE3Tpl <double,0> SE3;
34  typedef ForceTpl <double,0> Force;
37 
38  template<class C> struct traits {};
39 
40  #define SPATIAL_TYPEDEF_TEMPLATE(derived) \
41  typedef typename traits<derived>::Scalar Scalar; \
42  typedef typename traits<derived>::Vector3 Vector3; \
43  typedef typename traits<derived>::Vector4 Vector4; \
44  typedef typename traits<derived>::Vector6 Vector6; \
45  typedef typename traits<derived>::Matrix3 Matrix3; \
46  typedef typename traits<derived>::Matrix4 Matrix4; \
47  typedef typename traits<derived>::Matrix6 Matrix6; \
48  typedef typename traits<derived>::Angular_t Angular_t; \
49  typedef typename traits<derived>::Linear_t Linear_t; \
50  typedef typename traits<derived>::ConstAngular_t ConstAngular_t; \
51  typedef typename traits<derived>::ConstLinear_t ConstLinear_t; \
52  typedef typename traits<derived>::ActionMatrix_t ActionMatrix_t; \
53  typedef typename traits<derived>::Quaternion_t Quaternion_t; \
54  typedef typename traits<derived>::SE3 SE3; \
55  typedef typename traits<derived>::Force Force; \
56  typedef typename traits<derived>::Motion Motion; \
57  typedef typename traits<derived>::Symmetric3 Symmetric3; \
58  enum { \
59  LINEAR = traits<derived>::LINEAR, \
60  ANGULAR = traits<derived>::ANGULAR \
61  }
62 
63  #define SPATIAL_TYPEDEF_NO_TEMPLATE(derived) \
64  typedef traits<derived>::Scalar Scalar; \
65  typedef traits<derived>::Vector3 Vector3; \
66  typedef traits<derived>::Vector4 Vector4; \
67  typedef traits<derived>::Vector6 Vector6; \
68  typedef traits<derived>::Matrix3 Matrix3; \
69  typedef traits<derived>::Matrix4 Matrix4; \
70  typedef traits<derived>::Matrix6 Matrix6; \
71  typedef traits<derived>::Angular_t Angular_t; \
72  typedef traits<derived>::Linear_t Linear_t; \
73  typedef traits<derived>::ConstAngular_t ConstAngular_t; \
74  typedef traits<derived>::ConstLinear_t ConstLinear_t; \
75  typedef traits<derived>::ActionMatrix_t ActionMatrix_t; \
76  typedef traits<derived>::Quaternion_t Quaternion_t; \
77  typedef traits<derived>::SE3 SE3; \
78  typedef traits<derived>::Force Force; \
79  typedef traits<derived>::Motion Motion; \
80  typedef traits<derived>::Symmetric3 Symmetric3; \
81  enum { \
82  LINEAR = traits<derived>::LINEAR, \
83  ANGULAR = traits<derived>::ANGULAR \
84  }
85 
86 
87 } // namespace se3
88 
89 #endif // ifndef __se3_fwd_hpp__
Concreate Class representing a force.
Definition: force.hpp:243