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()