00001 00008 #ifndef TREE_IK_TRAJECTORY_H 00009 #define TREE_IK_TRAJECTORY_H 00010 00011 #include <robodyn_controllers/Trajectory.h> 00012 #include <robodyn_controllers/KdlTreeIk.h> 00013 00014 class TreeIkTrajectory : public JointTrajectory 00015 { 00016 public: 00017 TreeIkTrajectory(); 00018 virtual ~TreeIkTrajectory() {} 00019 00020 void setCartesianTrajectory(boost::shared_ptr<SynchedCartesianTrajectory> traj_in) 00021 { 00022 setDuration(traj_in->getDuration()); 00023 trajectory = traj_in; 00024 } 00025 00026 void setTreeIk(boost::shared_ptr<KdlTreeIk> treeIk_in) 00027 { 00028 treeIk = treeIk_in; 00029 } 00030 00031 void setInitialJoints(const KDL::JntArrayAcc& joints_in) 00032 { 00033 jointsLast = jointsInit = joints_in; 00034 } 00035 00036 void setNodeNames(const std::vector<std::string>& nodeNames_in) 00037 { 00038 nodeNames = nodeNames_in; 00039 } 00040 00041 void setNodePriorities(const std::vector<KdlTreeIk::NodePriority>& nodePriorities_in) 00042 { 00043 nodePriorities = nodePriorities_in; 00044 } 00045 00052 virtual void getPose(double time, KDL::JntArrayAcc& pose); 00053 00054 protected: 00055 boost::shared_ptr<SynchedCartesianTrajectory> trajectory; 00056 boost::shared_ptr<KdlTreeIk> treeIk; 00057 KDL::JntArrayAcc jointsInit, jointsLast; 00058 double lastTime; 00059 std::vector<std::string> nodeNames; 00060 std::vector<KDL::FrameAcc> nodeFramesAcc; 00061 std::vector<KDL::Frame> nodeFrames; 00062 std::vector<KdlTreeIk::NodePriority> nodePriorities; 00063 00064 }; 00065 00066 #endif