29 #ifndef ROUTE_COORDINATOR_TIMELESS_H 30 #define ROUTE_COORDINATOR_TIMELESS_H 49 seg_occupation_t(
const uint32_t _robot,
const float &_spaceOcupied,
const uint32_t _startTime,
const int32_t _endTime) : robot(_robot), spaceOccupied(_spaceOcupied), startTime(_startTime), endTime(_endTime), mainSeg(true)
52 seg_occupation_t(
const uint32_t _robot,
const float &_spaceOcupied,
const uint32_t _startTime,
const int32_t _endTime,
const bool &_mainSeg) : robot(_robot), spaceOccupied(_spaceOcupied), startTime(_startTime), endTime(_endTime), mainSeg(_mainSeg)
65 void reset(
const std::vector<Segment> &_graph,
const uint32_t _nrRobots);
76 bool addSegment(
const uint32_t _startTime,
const int32_t _endTime,
const uint32_t _segId,
const uint32_t _robotNr,
const uint32_t _robotSize,
bool _mainSeg);
87 bool checkSegment(
const uint32_t _startTime,
const int32_t _endTime,
const uint32_t _segId,
const uint32_t _robotNr,
const uint32_t _robotSize, int32_t &_lastCollisionRobot)
const;
98 bool addCrossingSegment(
const uint32_t _startTime,
const int32_t _endTime,
const uint32_t _segId,
const uint32_t _robotNr,
const uint32_t _robotSize,
const bool &_mainSeg);
109 bool checkCrossingSegment(
const uint32_t _startTime,
const int32_t _endTime,
const uint32_t _segId,
const uint32_t _robotNr,
const uint32_t _robotSize, int32_t &_lastCollisionRobot)
const;
116 int32_t
findSegId(
const int32_t _robot,
const uint32_t _timestep)
const;
163 void reset(
const std::vector<Segment> &_graph,
const uint32_t _nrRobots);
171 bool addRoute(
const std::vector<RouteVertex> &_path,
const uint32_t _diameterPixel,
const uint32_t _robotId);
183 bool checkSegment(
const Vertex &_next,
const uint32_t _startTime,
const int32_t _endTime,
const uint32_t _diameterPixel, int32_t &_collisionRobot,
const uint32_t _robotId,
bool _ignoreGoal =
false)
const;
202 bool isGoal(
const Vertex &_seg,
const uint32_t _robotId)
const;
206 const uint32_t
getStart(
const uint32_t _robotId)
const;
210 const uint32_t
getEnd(
const uint32_t _robotId)
const;
217 int32_t
findSegNr(
const uint32_t _robot,
const uint32_t _potential)
const;
241 bool checkSegmentSingle(
const Vertex &_next,
const uint32_t _startTime,
const int32_t _endTime,
const uint32_t _diameterPixel, int32_t &_collisionRobot,
const uint32_t _robotId,
const bool &_ignoreGoal)
const;
249 #endif // PATH_COORDINATOR_TIMELESS_H
seg_occupation_t(const uint32_t _robot, const float &_spaceOcupied, const uint32_t _startTime, const int32_t _endTime, const bool &_mainSeg)
void removeRobot(const uint32_t _robot)
removes a Robot from the Routing Table
uint32_t getSize() const
returns the length of the timeline (max Time)
const uint32_t getEnd(const uint32_t _robotId) const
returns the Goal of a robot
bool setStartSegments(const std::vector< uint32_t > &_startSegments)
updates the start segments of the planning attempt
std::vector< float > segmentSpace_
std::vector< uint32_t > robotSize_
int32_t findSegId(const int32_t _robot, const uint32_t _timestep) const
returns the segment id at which the robot is at timepoint _potential
int32_t findSegNr(const uint32_t _robot, const uint32_t _potential) const
returns the segment id at which the robot is at timepoint _potential
std::vector< uint32_t > startSegments_
std::vector< std::pair< uint32_t, float > > getListOfRobotsHigherPrioritizedRobots(const uint32_t _robot, const uint32_t _segId, const int32_t _potential) const
returns all robots which pass the segment before the given robot and a given time ...
struct multi_robot_router::RouteCoordinatorTimed::Timeline::seg_occupation_t seg_occupation
std::vector< uint32_t > goalSegments_
RouteCoordinatorTimed()
constructor
bool checkSegmentSingle(const Vertex &_next, const uint32_t _startTime, const int32_t _endTime, const uint32_t _diameterPixel, int32_t &_collisionRobot, const uint32_t _robotId, const bool &_ignoreGoal) const
bool checkCrossingSegment(const uint32_t _startTime, const int32_t _endTime, const uint32_t _segId, const uint32_t _robotNr, const uint32_t _robotSize, int32_t &_lastCollisionRobot) const
checks if a robot can enter a segment at a specific time if located in a crossing (neighbours > 1) ...
bool checkSegment(const uint32_t _startTime, const int32_t _endTime, const uint32_t _segId, const uint32_t _robotNr, const uint32_t _robotSize, int32_t &_lastCollisionRobot) const
checks if a robot can enter a segment at a specific time
std::vector< std::vector< uint32_t > > robotSegments_
bool addCrossingSegment(const uint32_t _startTime, const int32_t _endTime, const uint32_t _segId, const uint32_t _robotNr, const uint32_t _robotSize, const bool &_mainSeg)
adds a segment in a crossing (neighbours > 1) to the timeline and checks if the occupation is valid ...
std::vector< std::vector< seg_occupation > > timeline_
bool isGoal(const Vertex &_seg, const uint32_t _robotId) const
returns if a Vertex is the goal vertex for a robot
int32_t findPotentialUntilRobotOnSegment(const uint32_t _robot, const uint32_t _segId) const
returns the time point, when a robot leaves a vertex
bool addSegment(const uint32_t _startTime, const int32_t _endTime, const uint32_t _segId, const uint32_t _robotNr, const uint32_t _robotSize, bool _mainSeg)
adds a segment to the timeline and checks if the occupation is valid
bool addRoute(const std::vector< RouteVertex > &_path, const uint32_t _diameterPixel, const uint32_t _robotId)
adds a new route to the Routing table and checks if the Routing Table is valid
const uint32_t getStart(const uint32_t _robotId) const
returns the start of a robot
seg_occupation_t(const uint32_t _robot, const float &_spaceOcupied, const uint32_t _startTime, const int32_t _endTime)
int32_t getTimeUntilRobotOnSegment(const int32_t _robotNr, const uint32_t _segId) const
returns the time point, when a robot leaves a vertex
bool setGoalSegments(const std::vector< uint32_t > &_goalSegments)
updates the goal segments of the planning attempt
void reset(const std::vector< Segment > &_graph, const uint32_t _nrRobots)
resets the planning session of multiple robots