Class NegotiatingRouteValidator
Defined in File RouteValidator.hpp
Nested Relationships
Nested Types
Inheritance Relationships
Base Type
public rmf_traffic::agv::RouteValidator
(Class RouteValidator)
Class Documentation
-
class NegotiatingRouteValidator : public rmf_traffic::agv::RouteValidator
Public Functions
-
NegotiatingRouteValidator &mask(schedule::ParticipantId id)
Mask the given Participant so that conflicts with it will be ignored. In the current implementation, only one participant can be masked at a time.
- Parameters:
id – [in] The ID of a participant whose conflicts should be ignored when checking for collisions.
-
NegotiatingRouteValidator &remove_mask()
Remove any mask that has been applied using the mask() function.
-
NegotiatingRouteValidator next(schedule::ParticipantId id) const
Get a NegotiatingRouteValidator for the next rollout alternative offered by the given participant.
-
const schedule::Negotiation::VersionedKeySequence &alternatives() const
Get the set of child Table alternatives used by this NegotiatingRouteValidator.
-
operator bool() const
Implicitly cast this validator instance to true if it can be used as a validator. If it cannot be used as a validator, return false. This will have the opposite value of end().
-
bool end() const
Return true if this validator object has gone past the end of its limits. Return false if it can still be used as a validator.
-
virtual rmf_utils::optional<Conflict> find_conflict(const Route &route) const final
If the specified route has a conflict with another participant, this will return the participant ID for the first conflict that gets identified. Otherwise it will return a nullopt.
- Parameters:
route – [in] The route that is being checked.
-
virtual std::unique_ptr<RouteValidator> clone() const final
Create a clone of the underlying RouteValidator object.
-
class Generator
The Generator class begins the creation of NegotiatingRouteValidator instances. NegotiatingRouteValidator may be able to brach in multiple dimensions because of the rollout alternatives that are provided during a rejection.
Public Functions
-
Generator(schedule::Negotiation::Table::ViewerPtr viewer, rmf_traffic::Profile profile)
Constructor
This version is safe to use even if the participant being negotiated for is not in the schedule yet.
- Parameters:
viewer – [in] A viewer for the Negotiation Table that the generated validators are concerned with
profile – [in] The profile of the participant whose routes are being validated.
-
Generator(schedule::Negotiation::Table::ViewerPtr viewer)
Constructor
This version looks for the participant in the schedule to find its profile.
- Parameters:
table – [in] A viewer for the Negotiation Table that the generated validators are concerned with
-
Generator &ignore_unresponsive(bool val = true)
Toggle whether to ignore “unresponsive” (also called “read-only”) schedule participants when determining conflicts. By default, conflicts with unresponsive participants will be caught.
-
Generator &ignore_bystanders(bool val = true)
Toggle whether to ignore “bystanders” which means schedule participants that are not being involved in the negotiation. By default, conflicts with bystanders will be caught.
-
NegotiatingRouteValidator begin() const
Start with a NegotiatingRouteValidator that will use all the most preferred alternatives from every participant.
-
std::vector<rmf_utils::clone_ptr<NegotiatingRouteValidator>> all() const
Get all the Negotiating Route Validators that can be generated.
-
const std::vector<schedule::ParticipantId> &alternative_sets() const
Get the set of participants who have specified what their available rollouts are.
-
std::size_t alternative_count(schedule::ParticipantId participant) const
Get the number of alternative rollouts for the specified participant. This function will throw an excpetion if participant does not offer an alternative set.
-
Generator(schedule::Negotiation::Table::ViewerPtr viewer, rmf_traffic::Profile profile)
-
NegotiatingRouteValidator &mask(schedule::ParticipantId id)