pinocchio  2.1.3
joint-collection.hpp
1 //
2 // Copyright (c) 2018-2019 CNRS INRIA
3 //
4 
5 #ifndef __pinocchio_joint_collection_hpp__
6 #define __pinocchio_joint_collection_hpp__
7 
8 #include "pinocchio/multibody/joint/fwd.hpp"
9 #include "pinocchio/multibody/joint/joints.hpp"
10 
11 #include <boost/variant.hpp>
12 #include <boost/variant/recursive_wrapper.hpp>
13 
14 namespace pinocchio
15 {
16 
17  template<typename _Scalar, int _Options>
18  struct JointCollectionDefaultTpl
19  {
20  typedef _Scalar Scalar;
21  enum { Options = _Options };
22 
23  // Joint Revolute
24  typedef JointModelRevoluteTpl<Scalar,Options,0> JointModelRX;
25  typedef JointModelRevoluteTpl<Scalar,Options,1> JointModelRY;
26  typedef JointModelRevoluteTpl<Scalar,Options,2> JointModelRZ;
27 
28  // Joint Revolute Unaligned
29  typedef JointModelRevoluteUnalignedTpl<Scalar,Options> JointModelRevoluteUnaligned;
30 
31  // Joint Revolute UBounded
32  typedef JointModelRevoluteUnboundedTpl<Scalar,Options,0> JointModelRUBX;
33  typedef JointModelRevoluteUnboundedTpl<Scalar,Options,1> JointModelRUBY;
34  typedef JointModelRevoluteUnboundedTpl<Scalar,Options,2> JointModelRUBZ;
35 
36  // Joint Prismatic
37  typedef JointModelPrismaticTpl<Scalar,Options,0> JointModelPX;
38  typedef JointModelPrismaticTpl<Scalar,Options,1> JointModelPY;
39  typedef JointModelPrismaticTpl<Scalar,Options,2> JointModelPZ;
40 
41  // Joint Prismatic Unaligned
42  typedef JointModelPrismaticUnalignedTpl<Scalar,Options> JointModelPrismaticUnaligned;
43 
44  // Joint Spherical
45  typedef JointModelSphericalTpl<Scalar,Options> JointModelSpherical;
46 
47  // Joint Spherical ZYX
48  typedef JointModelSphericalZYXTpl<Scalar,Options> JointModelSphericalZYX;
49 
50  // Joint Translation
51  typedef JointModelTranslationTpl<Scalar,Options> JointModelTranslation;
52 
53  // Joint FreeFlyer
54  typedef JointModelFreeFlyerTpl<Scalar,Options> JointModelFreeFlyer;
55 
56  // Joint Planar
57  typedef JointModelPlanarTpl<Scalar,Options> JointModelPlanar;
58 
59  // Joint Composite
60  typedef JointModelCompositeTpl<Scalar,Options,::pinocchio::JointCollectionDefaultTpl> JointModelComposite;
61 
62  typedef boost::variant<
63 // JointModelVoid,
64  JointModelRX, JointModelRY, JointModelRZ
65  , JointModelFreeFlyer, JointModelPlanar
66  , JointModelRevoluteUnaligned
67  , JointModelSpherical, JointModelSphericalZYX
68  , JointModelPX, JointModelPY, JointModelPZ
69  , JointModelPrismaticUnaligned
70  , JointModelTranslation
71  , JointModelRUBX, JointModelRUBY, JointModelRUBZ
72  , boost::recursive_wrapper<JointModelComposite>
73  > JointModelVariant;
74 
75 
76  // Joint Revolute
77  typedef JointDataRevoluteTpl<Scalar,Options,0> JointDataRX;
78  typedef JointDataRevoluteTpl<Scalar,Options,1> JointDataRY;
79  typedef JointDataRevoluteTpl<Scalar,Options,2> JointDataRZ;
80 
81  // Joint Revolute Unaligned
82  typedef JointDataRevoluteUnalignedTpl<Scalar,Options> JointDataRevoluteUnaligned;
83 
84  // Joint Revolute UBounded
85  typedef JointDataRevoluteUnboundedTpl<Scalar,Options,0> JointDataRUBX;
86  typedef JointDataRevoluteUnboundedTpl<Scalar,Options,1> JointDataRUBY;
87  typedef JointDataRevoluteUnboundedTpl<Scalar,Options,2> JointDataRUBZ;
88 
89  // Joint Prismatic
90  typedef JointDataPrismaticTpl<Scalar,Options,0> JointDataPX;
91  typedef JointDataPrismaticTpl<Scalar,Options,1> JointDataPY;
92  typedef JointDataPrismaticTpl<Scalar,Options,2> JointDataPZ;
93 
94  // Joint Prismatic Unaligned
95  typedef JointDataPrismaticUnalignedTpl<Scalar,Options> JointDataPrismaticUnaligned;
96 
97  // Joint Spherical
98  typedef JointDataSphericalTpl<Scalar,Options> JointDataSpherical;
99 
100  // Joint Spherical ZYX
101  typedef JointDataSphericalZYXTpl<Scalar,Options> JointDataSphericalZYX;
102 
103  // Joint Translation
104  typedef JointDataTranslationTpl<Scalar,Options> JointDataTranslation;
105 
106  // Joint FreeFlyer
107  typedef JointDataFreeFlyerTpl<Scalar,Options> JointDataFreeFlyer;
108 
109  // Joint Planar
110  typedef JointDataPlanarTpl<Scalar,Options> JointDataPlanar;
111 
112  // Joint Composite
113  typedef JointDataCompositeTpl<Scalar,Options,::pinocchio::JointCollectionDefaultTpl> JointDataComposite;
114 
115  typedef boost::variant<
116 // JointDataVoid
117  JointDataRX, JointDataRY, JointDataRZ
118  , JointDataFreeFlyer, JointDataPlanar
119  , JointDataRevoluteUnaligned
120  , JointDataSpherical, JointDataSphericalZYX
121  , JointDataPX, JointDataPY, JointDataPZ
122  , JointDataPrismaticUnaligned
123  , JointDataTranslation
124  , JointDataRUBX, JointDataRUBY, JointDataRUBZ
125  , boost::recursive_wrapper<JointDataComposite>
126  > JointDataVariant;
127 
128  };
129 
130  typedef JointCollectionDefault::JointModelVariant JointModelVariant;
131  typedef JointCollectionDefault::JointDataVariant JointDataVariant;
132 
133 } // namespace pinocchio
134 
135 #endif // ifndef __pinocchio_joint_collection_hpp__
Main pinocchio namespace.
Definition: treeview.dox:24