00001 #ifndef SPECIFIC_ACTIONS_H_ 00002 #define SPECIFIC_ACTIONS_H_ 00003 00004 #include <ros/ros.h> 00005 #include <actionlib/server/simple_action_server.h> 00006 #include <actionlib/client/simple_action_client.h> 00007 #include <boost/algorithm/string.hpp> 00008 #include <boost/thread/mutex.hpp> 00009 #include <carl_demos/ObtainObjectAction.h> 00010 #include <rail_manipulation_msgs/ArmAction.h> 00011 #include <rail_manipulation_msgs/PickupAction.h> 00012 #include <rail_manipulation_msgs/StoreAction.h> 00013 #include <rail_manipulation_msgs/SegmentedObjectList.h> 00014 #include <std_srvs/Empty.h> 00015 00016 #define NUM_JACO_JOINTS 6 00017 #define MAX_HOME_ATTEMPTS 3 00018 00019 class SpecificActions 00020 { 00021 00022 public: 00023 00027 SpecificActions(); 00028 00029 private: 00030 ros::NodeHandle n; 00031 00032 ros::Subscriber recognizedObjectsSubscriber; 00033 00034 ros::ServiceClient segmentClient; 00035 00036 actionlib::SimpleActionClient<rail_manipulation_msgs::ArmAction> armClient; 00037 actionlib::SimpleActionClient<rail_manipulation_msgs::PickupAction> pickupClient; 00038 actionlib::SimpleActionClient<rail_manipulation_msgs::StoreAction> storeClient; 00039 actionlib::SimpleActionServer<carl_demos::ObtainObjectAction> obtainObjectServer; 00040 00041 int recognizedObjectsCounter; 00042 00043 boost::mutex recognizedObjectsMutex; 00044 00045 rail_manipulation_msgs::SegmentedObjectList recognizedObjects; 00046 00055 void executeObtainObject(const carl_demos::ObtainObjectGoalConstPtr &goal); 00056 00064 void recognizedObjectsCallback(const rail_manipulation_msgs::SegmentedObjectList &objects); 00065 }; 00066 00067 #endif