Class NegotiatingRouteValidator

Nested Relationships

Nested Types

Inheritance Relationships

Base Type

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.