00001 00026 #ifndef _TOPOLOGICAL_PREDICATE_H_ 00027 #define _TOPOLOGICAL_PREDICATE_H_ 00028 00029 #include <ros/ros.h> 00030 #include <predicate_manager/predicate.h> 00031 #include <topological_tools/PoseLabel.h> 00032 00033 namespace topological_tools 00034 { 00035 class TopologicalPredicate : public predicate_manager::Predicate 00036 { 00037 public: 00038 TopologicalPredicate ( const std::string& label_topic, 00039 const std::string& name ); 00040 00041 TopologicalPredicate ( const std::string& label_topic, 00042 const std::string& name, 00043 const uint32_t target_label ); 00044 00045 00046 void labelCallback ( const topological_tools::PoseLabelConstPtr& msg ); 00047 00048 void update(); 00049 00050 protected: 00051 ros::NodeHandle nh_; 00052 00053 private: 00054 ros::Subscriber label_subs_; 00055 00056 uint32_t target_label_; 00057 uint32_t received_label_; 00058 }; 00059 } 00060 00061 #endif