00001 #ifndef STATE_CREATOR_ROBOT_POSE_H 00002 #define STATE_CREATOR_ROBOT_POSE_H 00003 00004 #include "continual_planning_executive/stateCreator.h" 00005 #include <tf/tf.h> 00006 #include <tf/transform_listener.h> 00007 #include <ros/ros.h> 00008 #include "tidyup_actions/robotPoseVisualization.h" 00009 00010 namespace tidyup_actions 00011 { 00012 00014 00029 class StateCreatorRobotPose : public continual_planning_executive::StateCreator 00030 { 00031 public: 00032 StateCreatorRobotPose(); 00033 ~StateCreatorRobotPose(); 00034 00036 00041 virtual void initialize(const std::deque<std::string> & arguments); 00042 00043 virtual bool fillState(SymbolicState & state); 00044 00045 protected: 00047 00052 bool extractPoseStamped(const SymbolicState & state, const string & object, 00053 geometry_msgs::PoseStamped & pose) const; 00054 00057 std_msgs::ColorRGBA getLocationColor(const SymbolicState & state, const string & location) const; 00058 00060 visualization_msgs::MarkerArray getLocationMarkers(const SymbolicState & state, const string & location, 00061 const string & ns, int id, bool useMeshes) const; 00062 00063 void publishLocationsAsMarkers(const SymbolicState & state); 00064 00066 sensor_msgs::JointState getArmSideJointState() const; 00067 00068 protected: 00069 tf::TransformListener _tf; 00070 00071 double _goalToleranceXY; 00072 double _goalToleranceYaw; 00073 00074 static const bool s_PublishLocationsAsMarkers = true; 00075 static const bool s_PublishMeshMarkers = true; 00076 00077 ros::Publisher _markerPub; 00078 00079 std::string _robotPoseObject; 00080 std::string _robotPoseType; 00081 std::string _atPredicate; 00082 std::string _locationType; 00083 00084 mutable RobotPoseVisualization _robotPoseVis; 00085 }; 00086 00087 }; 00088 00089 #endif 00090