00001 00013 #ifndef JACO_INTERACTIVE_MANIPULATION_H_ 00014 #define JACO_INTERACTIVE_MANIPULATION_H_ 00015 00016 #include <ros/ros.h> 00017 #include <actionlib/client/simple_action_client.h> 00018 #include <interactive_markers/interactive_marker_server.h> 00019 #include <interactive_markers/menu_handler.h> 00020 #include <rail_manipulation_msgs/GripperAction.h> 00021 #include <rail_manipulation_msgs/LiftAction.h> 00022 #include <wpi_jaco_msgs/CartesianCommand.h> 00023 #include <wpi_jaco_msgs/HomeArmAction.h> 00024 #include <wpi_jaco_msgs/JacoFK.h> 00025 #include <wpi_jaco_msgs/QuaternionToEuler.h> 00026 #include <sensor_msgs/JointState.h> 00027 #include <sensor_msgs/PointCloud.h> 00028 #include <sensor_msgs/point_cloud_conversion.h> 00029 #include <std_srvs/Empty.h> 00030 00039 class JacoInteractiveManipulation 00040 { 00041 00042 public: 00043 00047 JacoInteractiveManipulation(); 00048 00053 void processHandMarkerFeedback(const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback); 00054 00059 void updateJoints(const sensor_msgs::JointState::ConstPtr& msg); 00060 00064 void updateMarkerPosition(); 00065 00066 private: 00067 00068 bool loadParameters(const ros::NodeHandle n); 00069 00073 void makeHandMarker(); 00074 00078 void sendStopCommand(); 00079 00080 ros::NodeHandle n; 00081 00082 //messages 00083 ros::Publisher cartesianCmd; 00084 ros::Subscriber jointStateSubscriber; 00085 00086 //services 00087 ros::ServiceClient eraseTrajectoriesClient; 00088 ros::ServiceClient jacoFkClient; 00089 ros::ServiceClient qeClient; 00090 00091 //actionlib 00092 actionlib::SimpleActionClient<rail_manipulation_msgs::GripperAction> acGripper; 00093 actionlib::SimpleActionClient<rail_manipulation_msgs::LiftAction> acLift; 00094 actionlib::SimpleActionClient<wpi_jaco_msgs::HomeArmAction> acHome; 00095 00096 boost::shared_ptr<interactive_markers::InteractiveMarkerServer> imServer; 00097 interactive_markers::MenuHandler menuHandler; 00098 std::vector<float> joints; 00099 bool lockPose; 00100 std::string arm_name_; 00101 }; 00102 00103 #endif