00001 /* 00002 * arm_control.h 00003 * Copyright 2013 University of Massachusetts Lowell 00004 * Author: Jonathan Hasenzahl 00005 */ 00006 00007 #ifndef ARM_CONTROL_H_ 00008 #define ARM_CONTROL_H_ 00009 00010 #include "ros/ros.h" 00011 #include "arm/ManusArm.hpp" 00012 #include "arm/cartesian_move.h" 00013 #include "arm/cartesian_moves.h" 00014 #include "arm/constant_move.h" 00015 #include "arm/constant_move_time.h" 00016 #include "time_server/time_srv.h" 00017 #include "movement_definitions.h" 00018 #include <list> 00019 00030 class ArmControl 00031 { 00032 public: 00033 ArmControl(); 00034 00035 private: 00036 void init(); 00037 void run(); 00038 void cartesianMovesCallback(const arm::cartesian_moves::ConstPtr& cmd); 00039 void constantMoveCallback(const arm::constant_move::ConstPtr& cmd); 00040 void constantMoveTimeCallback(const arm::constant_move_time::ConstPtr& cmd); 00041 00042 ros::NodeHandle n_; 00043 ros::Subscriber cartesian_sub_; 00044 ros::Subscriber constant_sub_; 00045 ros::Subscriber constant_time_sub_; 00046 ros::ServiceClient time_client_; 00047 ManusArm* arm_; 00048 CartesianMove cartesian_move_; 00049 ConstantMove constant_move_; 00050 bool shutdown_; 00051 }; 00052 00053 #endif