00001 #ifndef KDL_CHAIN_IK_H 00002 #define KDL_CHAIN_IK_H 00003 00004 #include <map> 00005 #include <vector> 00006 #include <memory> 00007 00008 #include <kdl/chain.hpp> 00009 #include <kdl/chainiksolver.hpp> 00010 #include <kdl/chainfksolver.hpp> 00011 00012 class KdlChainIk 00013 { 00014 public: 00015 KdlChainIk(const KDL::Chain& _chain); 00016 ~KdlChainIk(); 00017 00018 const std::string& getBaseFrame() const; 00019 void getJointNames(std::vector<std::string>&) const; 00020 void getJointPositions(const KDL::JntArray& joints_in, 00021 const std::vector<KDL::Frame>& tipPositions, 00022 std::vector<KDL::JntArray>& joints_out) const; 00023 void getCurrentPose(const KDL::JntArray& joints_in, KDL::Frame& currPose) const; 00024 00025 private: 00026 KDL::Chain chain; 00027 00028 std::auto_ptr<KDL::ChainFkSolverPos> fkPosSolverPtr; 00029 std::auto_ptr<KDL::ChainIkSolverVel> ikVelSolverPtr; 00030 std::auto_ptr<KDL::ChainIkSolverPos> ikPosSolverPtr; 00031 }; 00032 00033 #endif