34 #include <opencv/cv.h>    44     Router(
const uint32_t _nr_robots);
    50     void resize(
const uint32_t _nr_robots);
    60     bool makePlan(
const std::vector<Eigen::Vector3d> &_starts, 
const std::vector<Eigen::Vector3d> &_goals, 
const std::vector<float> &_radius, 
const cv::Mat &_map, 
const float &_resolution, 
const Eigen::Vector2d &_origin, 
const std::vector<Segment> &_graph, 
const std::vector<std::string> &_robot_names);
    69     const std::vector<Checkpoint> &
getRoute(
const uint32_t _robot) 
const;
   100     bool calculateStartPoints(
const std::vector<float> &_radius, 
const cv::Mat &_map, 
const float &resolution, 
const Eigen::Vector2d &origin, 
const std::vector<Segment> &_graph);
   102     int32_t 
getSegment(
const std::vector<Segment> &_graph, 
const Eigen::Vector2d &_pose) 
const;
   106     bool resolveSegment(
const std::vector<Segment> &_graph, 
const uint32_t &_segId, 
const Eigen::Vector2d &_originPoint, 
const float &_radius, uint32_t &_foundSeg) 
const;
   112     bool preprocessEndpoints(
const std::vector<float> &_radius, 
const float &resolution, 
const Eigen::Vector2d &origin, 
const std::vector<Segment> &_graph);
   114     bool processEndpointsExpander(
const cv::Mat &_map, 
const std::vector<Segment> &_graph, 
const Eigen::Vector2d &_realStart, 
const Eigen::Vector2d &_realGoal, Eigen::Vector2d &_voronoiStart, Eigen::Vector2d &_voronoiGoal, uint32_t &_segmentStart, uint32_t &_segmentGoal, 
const uint32_t _diameter, 
const uint32_t _index) 
const;
 int32_t getSegment(const std::vector< Segment > &_graph, const Eigen::Vector2d &_pose) const 
 
std::vector< Eigen::Vector2d > realStart_
 
float getOverallPathLength() const 
getter 
 
standard multi robot router without multi threading (Works best in practice) 
 
bool preprocessEndpoints(const std::vector< float > &_radius, const float &resolution, const Eigen::Vector2d &origin, const std::vector< Segment > &_graph)
 
MultiRobotRouterThreadedSrr mrrTs_
 
void setPlannerType(routerType _type, uint32_t _nr_threads)
 
std::vector< Eigen::Vector2d > realGoals_
 
std::vector< Eigen::Vector2d > voronoiGoals_
 
void resize(const uint32_t _nr_robots)
resizes the planner to a different nr of _nr_robots 
 
PointExpander pointExpander_
with the robot id one can access the robot name 
 
const std::vector< Checkpoint > & getRoute(const uint32_t _robot) const 
returns the found Routing Table 
 
float getLongestPathLength() const 
getter 
 
void optimizePaths(const std::vector< Segment > &_graph)
 
bool processEndpointsExpander(const cv::Mat &_map, const std::vector< Segment > &_graph, const Eigen::Vector2d &_realStart, const Eigen::Vector2d &_realGoal, Eigen::Vector2d &_voronoiStart, Eigen::Vector2d &_voronoiGoal, uint32_t &_segmentStart, uint32_t &_segmentGoal, const uint32_t _diameter, const uint32_t _index) const 
 
bool makePlan(const std::vector< Eigen::Vector3d > &_starts, const std::vector< Eigen::Vector3d > &_goals, const std::vector< float > &_radius, const cv::Mat &_map, const float &_resolution, const Eigen::Vector2d &_origin, const std::vector< Segment > &_graph, const std::vector< std::string > &_robot_names)
generates the plan from (Vertex[odom robotPose] to Vertex[_goals] 
 
bool resolveSegment(const std::vector< Segment > &_graph, const uint32_t &_segId, const Eigen::Vector2d &_originPoint, const float &_radius, uint32_t &_foundSeg) const 
 
uint32_t getPriorityScheduleAttemps() const 
getter 
 
std::vector< Eigen::Vector2d > voronoiStart_
 
std::vector< Eigen::Vector3d > starts_
 
float distanceToSegment(const Segment &_s, const Eigen::Vector2d &_p) const 
 
void setCollisionResolutionType(const SegmentExpander::CollisionResolverType _cr)
sets the CollisionResolverType used 
 
std::vector< uint32_t > goalSegments_
 
std::vector< uint32_t > startSegments_
 
bool priorityRescheduling_
 
uint32_t getSpeedScheduleAttemps() const 
getter 
 
std::vector< std::vector< Checkpoint > > routingTable_
 
std::vector< std::string > robot_names_
 
std::vector< Eigen::Vector3d > goals_
 
uint32_t getDuration_ms() const 
getter 
 
bool calculateStartPoints(const std::vector< float > &_radius, const cv::Mat &_map, const float &resolution, const Eigen::Vector2d &origin, const std::vector< Segment > &_graph)
 
std::shared_ptr< float > potential_
 
bool segmentOptimizations_
 
MultiRobotRouter * multiRobotRouter_
 
void postprocessRoutingTable()