00001 #ifndef __GENERIC_ARM_CTRL_V4_H_ 00002 #define __GENERIC_ARM_CTRL_V4_H_ 00003 00004 #include "ros/ros.h" 00005 //#include "Manipulation/ManipUtil/Joint.h" 00006 //#include "ManipUtil/datastructsManipulator.h" 00007 //#include "ManipUtil/ManipulatorXML.h" 00008 //#include "Interfaces/KinematicsInterface.h" 00009 //#include "Interfaces/armInterface_ctrl.h" 00010 00011 #include <trajectory_msgs/JointTrajectory.h> 00012 00013 #include <cob_trajectory_controller/RefVal_JS.h> 00014 #include <cob_trajectory_controller/TimeStamp.h> 00015 00016 class genericArmCtrl 00017 { 00018 public: 00019 00020 genericArmCtrl(int DOF, double PTPvel = 0.7, double PTPacc = 0.2, double maxError = 0.7); 00021 ~genericArmCtrl(); 00022 00023 std::vector<double> GetPTPvel() const; 00024 std::vector<double> GetPTPacc() const; 00025 void SetPTPvel(double vel); 00026 void SetPTPacc(double acc); 00027 00028 // void stop(); --> TODO: better reset 00029 00030 bool step(std::vector<double> current_pos, std::vector<double> & desired_vel); 00031 00032 bool moveThetas(std::vector<double> conf_goal, std::vector<double> conf_current); 00033 bool moveTrajectory(trajectory_msgs::JointTrajectory pfad, std::vector<double> conf_current); 00034 00035 00036 // bool movePos(AbsPos position); 00037 00038 int m_DOF; 00039 00040 RefVal_JS* m_pRefVals; 00041 00042 std::vector<double> m_vel_js; 00043 std::vector<double> m_acc_js; 00044 bool isMoving; 00045 00046 TimeStamp startTime_; 00047 double TotalTime_; 00048 double m_P; 00049 double m_Vorsteuer; 00050 double m_AllowedError; 00051 double m_CurrentError; 00052 double m_TargetError; 00053 double m_ExtraTime; // Zusätzliche Zeit, um evtl. verbleibende Regelfehler auszuregeln 00054 }; 00055 00056 00057 00058 #endif