00001 00012 #ifndef INTERACTIVE_WORLD_OBJECT_SEARCHER_H_ 00013 #define INTERACTIVE_WORLD_OBJECT_SEARCHER_H_ 00014 00015 #include <actionlib/client/simple_action_client.h> 00016 #include <actionlib/server/simple_action_server.h> 00017 #include <interactive_world_msgs/ObjectSearchAction.h> 00018 #include <interactive_world_msgs/DriveAndSearchAction.h> 00019 #include <ros/ros.h> 00020 00021 namespace rail 00022 { 00023 namespace interactive_world 00024 { 00025 00033 class ObjectSearcher 00034 { 00035 public: 00037 static const int AC_WAIT_TIME = 120; 00038 00045 ObjectSearcher(); 00046 00047 private: 00055 void objectSearch(const interactive_world_msgs::ObjectSearchGoalConstPtr &goal); 00056 00058 ros::NodeHandle node_, private_node_; 00060 actionlib::SimpleActionServer<interactive_world_msgs::ObjectSearchAction> as_; 00062 actionlib::SimpleActionClient<interactive_world_msgs::DriveAndSearchAction> search_ac_; 00064 ros::ServiceClient model_fetcher_srv_, find_observations_srv_, get_surfaces_srv_; 00066 ros::Duration ac_wait_time_; 00067 }; 00068 00069 } 00070 } 00071 00072 #endif