00001 #ifndef KDLPV_TRAITS_H 00002 #define KDLPV_TRAITS_H 00003 00004 #include "utility.h" 00005 00006 00007 // forwards declarations : 00008 namespace KDL { 00009 class Frame; 00010 class Rotation; 00011 class Vector; 00012 class Twist; 00013 class Wrench; 00014 class FrameVel; 00015 class RotationVel; 00016 class VectorVel; 00017 class TwistVel; 00018 } 00019 00020 00037 template <typename T> 00038 struct Traits { 00039 typedef T valueType; 00040 typedef T derivType; 00041 }; 00042 00043 template <> 00044 struct Traits<KDL::Frame> { 00045 typedef KDL::Frame valueType; 00046 typedef KDL::Twist derivType; 00047 }; 00048 template <> 00049 struct Traits<KDL::Twist> { 00050 typedef KDL::Twist valueType; 00051 typedef KDL::Twist derivType; 00052 }; 00053 template <> 00054 struct Traits<KDL::Wrench> { 00055 typedef KDL::Wrench valueType; 00056 typedef KDL::Wrench derivType; 00057 }; 00058 00059 template <> 00060 struct Traits<KDL::Rotation> { 00061 typedef KDL::Rotation valueType; 00062 typedef KDL::Vector derivType; 00063 }; 00064 00065 template <> 00066 struct Traits<KDL::Vector> { 00067 typedef KDL::Vector valueType; 00068 typedef KDL::Vector derivType; 00069 }; 00070 00071 template <> 00072 struct Traits<double> { 00073 typedef double valueType; 00074 typedef double derivType; 00075 }; 00076 00077 template <> 00078 struct Traits<float> { 00079 typedef float valueType; 00080 typedef float derivType; 00081 }; 00082 00083 template <> 00084 struct Traits<KDL::FrameVel> { 00085 typedef KDL::Frame valueType; 00086 typedef KDL::TwistVel derivType; 00087 }; 00088 template <> 00089 struct Traits<KDL::TwistVel> { 00090 typedef KDL::Twist valueType; 00091 typedef KDL::TwistVel derivType; 00092 }; 00093 00094 template <> 00095 struct Traits<KDL::RotationVel> { 00096 typedef KDL::Rotation valueType; 00097 typedef KDL::VectorVel derivType; 00098 }; 00099 00100 template <> 00101 struct Traits<KDL::VectorVel> { 00102 typedef KDL::Vector valueType; 00103 typedef KDL::VectorVel derivType; 00104 }; 00105 00106 00107 00108 #endif 00109 00110 00111