34 #include <tuw_multi_robot_msgs/RobotGoalsArray.h> 35 #include <tuw_multi_robot_msgs/RobotGoals.h> 37 #include <nav_msgs/Odometry.h> 38 #include <tuw_multi_robot_msgs/Graph.h> 39 #include <nav_msgs/Path.h> 40 #include <nav_msgs/OccupancyGrid.h> 41 #include <tuw_multi_robot_msgs/RouterStatus.h> 42 #include <dynamic_reconfigure/server.h> 43 #include <tuw_multi_robot_router/routerConfig.h> 47 #include <opencv/cv.hpp> 93 dynamic_reconfigure::Server<tuw_multi_robot_router::routerConfig>
param_server;
94 dynamic_reconfigure::Server<tuw_multi_robot_router::routerConfig>::CallbackType
call_type;
133 void parametersCallback ( tuw_multi_robot_router::routerConfig &config, uint32_t level );
135 void graphCallback (
const tuw_multi_robot_msgs::Graph &msg );
136 void goalsCallback (
const tuw_multi_robot_msgs::RobotGoalsArray &_goals );
137 void mapCallback (
const nav_msgs::OccupancyGrid &_map );
139 void goalCallback (
const geometry_msgs::PoseStamped &_goal );
140 size_t getHash (
const std::vector<signed char> &_map,
const Eigen::Vector2d &_origin,
const float &_resolution );
141 size_t getHash (
const std::vector<Segment> &_graph );
147 float getYaw (
const geometry_msgs::Quaternion &_rot );
148 float calcRadius (
const int shape,
const std::vector<float> &shape_variables )
const;
149 bool preparePlanning ( std::vector<float> &_radius, std::vector<Eigen::Vector3d> &_starts, std::vector<Eigen::Vector3d> &_goals,
const tuw_multi_robot_msgs::RobotGoalsArray &_ros_goals, std::vector<std::string> &robot_names );
152 #endif // Router_Node_H void goalsCallback(const tuw_multi_robot_msgs::RobotGoalsArray &_goals)
uint32_t getSegmentId() const
float getYaw(const geometry_msgs::Quaternion &_rot)
Eigen::Vector2d mapOrigin_
dynamic_reconfigure::Server< tuw_multi_robot_router::routerConfig > param_server
std::vector< std::string > missing_robots_
robots finished with execution time
void parametersCallback(tuw_multi_robot_router::routerConfig &config, uint32_t level)
size_t current_graph_hash_
std::vector< RobotInfoPtr > subscribed_robots_
void monitorExecution()
monitors the execution
std::string singleRobotName_
void unsubscribeTopic(std::string _robot_name)
ros::Publisher pubPlannerStatus_
void odomCallback(const ros::MessageEvent< nav_msgs::Odometry const > &_event, int _topic)
Router_Node(ros::NodeHandle &n)
Construct a new Router_Node object.
std::string singleRobotGoalTopic_
ros::Subscriber subVoronoiGraph_
bool publish_routing_table_
double sum_processing_time_total_
std::string planner_status_topic_
size_t getHash(const std::vector< signed char > &_map, const Eigen::Vector2d &_origin, const float &_resolution)
void mapCallback(const nav_msgs::OccupancyGrid &_map)
void publish()
publishes a RoutingTable
tuw_multi_robot_msgs::RouterStatus mrrp_status_
ros::Subscriber subSingleRobotGoal_
ros::NodeHandle n_
Node handler to the root node.
ros::NodeHandle n_param_
Node handler to the current node.
void robotInfoCallback(const tuw_multi_robot_msgs::RobotInfo &_robotInfo)
void graphCallback(const tuw_multi_robot_msgs::Graph &msg)
float calcRadius(const int shape, const std::vector< float > &shape_variables) const
void publishEmpty()
publishes an empty RoutingTable
std::map< std::string, double > finished_robots_
robots currently used by the planner
static bool sortSegments(const Segment &i, const Segment &j)
std::string robot_info_topic_
ros::Time time_first_robot_started_
dynamic_reconfigure::Server< tuw_multi_robot_router::routerConfig >::CallbackType call_type
bool preparePlanning(std::vector< float > &_radius, std::vector< Eigen::Vector3d > &_starts, std::vector< Eigen::Vector3d > &_goals, const tuw_multi_robot_msgs::RobotGoalsArray &_ros_goals, std::vector< std::string > &robot_names)
std::string voronoi_topic_
std::vector< Segment > graph_
ros::Subscriber subRobotInfo_
void goalCallback(const geometry_msgs::PoseStamped &_goal)
ros::Subscriber subGoalSet_
double sum_processing_time_successful_
std::vector< ros::Subscriber > subOdom_
std::vector< RobotInfoPtr > active_robots_
robots avaliable
void updateTimeout(const float _secs)
used to update the nodes timeout to latch topics