Aikido
JointStateSpaceHelpers-impl.hpp
Go to the documentation of this file.
1 #include <memory>
2 
11 
12 namespace aikido {
13 namespace statespace {
14 namespace dart {
15 namespace detail {
16 
17 using Ptr = std::unique_ptr<JointStateSpace>;
18 
19 //==============================================================================
20 template <class JointType>
22 {
23 };
24 
25 //==============================================================================
26 template <>
27 struct createJointStateSpaceFor_impl<const ::dart::dynamics::RevoluteJoint>
28 {
29  static Ptr create(const ::dart::dynamics::RevoluteJoint* _joint)
30  {
31  if (_joint->isCyclic(0))
32  return ::aikido::common::make_unique<SO2Joint>(_joint);
33  else
34  return ::aikido::common::make_unique<R1Joint>(_joint);
35  }
36 };
37 
38 //==============================================================================
39 template <>
40 struct createJointStateSpaceFor_impl<const ::dart::dynamics::PrismaticJoint>
41 {
42  static Ptr create(const ::dart::dynamics::PrismaticJoint* _joint)
43  {
44  return ::aikido::common::make_unique<R1Joint>(_joint);
45  }
46 };
47 
48 //==============================================================================
49 template <>
50 struct createJointStateSpaceFor_impl<const ::dart::dynamics::TranslationalJoint>
51 {
52  static Ptr create(const ::dart::dynamics::TranslationalJoint* _joint)
53  {
54  return ::aikido::common::make_unique<R3Joint>(_joint);
55  }
56 };
57 
58 //==============================================================================
59 template <>
60 struct createJointStateSpaceFor_impl<const ::dart::dynamics::BallJoint>
61 {
62  static Ptr create(const ::dart::dynamics::BallJoint* _joint)
63  {
64  return ::aikido::common::make_unique<SO3Joint>(_joint);
65  }
66 };
67 
68 //==============================================================================
69 template <>
70 struct createJointStateSpaceFor_impl<const ::dart::dynamics::PlanarJoint>
71 {
72  static Ptr create(const ::dart::dynamics::PlanarJoint* _joint)
73  {
74  return ::aikido::common::make_unique<SE2Joint>(_joint);
75  }
76 };
77 
78 //==============================================================================
79 template <>
80 struct createJointStateSpaceFor_impl<const ::dart::dynamics::FreeJoint>
81 {
82  static Ptr create(const ::dart::dynamics::FreeJoint* _joint)
83  {
84  return ::aikido::common::make_unique<SE3Joint>(_joint);
85  }
86 };
87 
88 //==============================================================================
89 template <>
90 struct createJointStateSpaceFor_impl<const ::dart::dynamics::WeldJoint>
91 {
92  static Ptr create(const ::dart::dynamics::WeldJoint* _joint)
93  {
94  return ::aikido::common::make_unique<WeldJoint>(_joint);
95  }
96 };
97 
98 //==============================================================================
100  const ::dart::dynamics::BallJoint,
101  const ::dart::dynamics::FreeJoint,
102  const ::dart::dynamics::PlanarJoint,
103  const ::dart::dynamics::PrismaticJoint,
104  const ::dart::dynamics::RevoluteJoint,
105  const ::dart::dynamics::TranslationalJoint,
106  const ::dart::dynamics::WeldJoint
107  // TODO: Support ScrewJoint.
108  // TODO: Support UniversalJoint.
109  // TODO: Support EulerJoint.
110  >;
111 
112 } // namespace detail
113 
114 //==============================================================================
115 template <class JointType>
116 std::unique_ptr<JointStateSpace> createJointStateSpaceFor(JointType* _joint)
117 {
119 }
120 
121 } // namespace dart
122 } // namespace statespace
123 } // namespace aikido
WeldJoint.hpp
aikido
Format of serialized trajectory in YAML.
Definition: algorithm.hpp:4
aikido::statespace::dart::detail::createJointStateSpaceFor_impl< const ::dart::dynamics::WeldJoint >::create
static Ptr create(const ::dart::dynamics::WeldJoint *_joint)
Definition: JointStateSpaceHelpers-impl.hpp:92
aikido::statespace::dart::createJointStateSpaceFor
std::unique_ptr< JointStateSpace > createJointStateSpaceFor(JointType *_joint)
Create a JointStateSpace for a Joint whose type is known at compile time.
Definition: JointStateSpaceHelpers-impl.hpp:116
memory.hpp
aikido::statespace::dart::detail::createJointStateSpaceFor_impl< const ::dart::dynamics::PlanarJoint >::create
static Ptr create(const ::dart::dynamics::PlanarJoint *_joint)
Definition: JointStateSpaceHelpers-impl.hpp:72
aikido::statespace::dart::detail::createJointStateSpaceFor_impl< const ::dart::dynamics::FreeJoint >::create
static Ptr create(const ::dart::dynamics::FreeJoint *_joint)
Definition: JointStateSpaceHelpers-impl.hpp:82
SO3Joint.hpp
SO2Joint.hpp
aikido::statespace::dart::detail::createJointStateSpaceFor_impl
Definition: JointStateSpaceHelpers-impl.hpp:21
aikido::statespace::dart::detail::ConstSupportedJoints
common::type_list< const ::dart::dynamics::BallJoint, const ::dart::dynamics::FreeJoint, const ::dart::dynamics::PlanarJoint, const ::dart::dynamics::PrismaticJoint, const ::dart::dynamics::RevoluteJoint, const ::dart::dynamics::TranslationalJoint, const ::dart::dynamics::WeldJoint > ConstSupportedJoints
Definition: JointStateSpaceHelpers-impl.hpp:110
SE3Joint.hpp
SE2Joint.hpp
aikido::common::type_list
Wrapper for a variadic template parameter pack of types.
Definition: metaprogramming.hpp:13
RnJoint.hpp
aikido::statespace::dart::detail::Ptr
std::unique_ptr< JointStateSpace > Ptr
Definition: JointStateSpaceHelpers-impl.hpp:17
aikido::statespace::dart::detail::createJointStateSpaceFor_impl< const ::dart::dynamics::BallJoint >::create
static Ptr create(const ::dart::dynamics::BallJoint *_joint)
Definition: JointStateSpaceHelpers-impl.hpp:62
metaprogramming.hpp
dart
Definition: FrameMarker.hpp:11
aikido::statespace::dart::detail::createJointStateSpaceFor_impl< const ::dart::dynamics::TranslationalJoint >::create
static Ptr create(const ::dart::dynamics::TranslationalJoint *_joint)
Definition: JointStateSpaceHelpers-impl.hpp:52
aikido::statespace::dart::detail::createJointStateSpaceFor_impl< const ::dart::dynamics::PrismaticJoint >::create
static Ptr create(const ::dart::dynamics::PrismaticJoint *_joint)
Definition: JointStateSpaceHelpers-impl.hpp:42
aikido::statespace::dart::detail::createJointStateSpaceFor_impl< const ::dart::dynamics::RevoluteJoint >::create
static Ptr create(const ::dart::dynamics::RevoluteJoint *_joint)
Definition: JointStateSpaceHelpers-impl.hpp:29