Waypoint Actions#
Waypoint Action is the task(s) that are to be completed at a specific Waypoint. Each Waypoint can have multiple Waypoint Actions. There are currently four main types of Waypoint Actions: Pickup, Drop-off, Rebalancing, Service Break.
For Pickup, Drop-off and ServiceBreak Waypoint Actions, there is a promised arrival time range - showing the time window that this action is expected
to be completed within. Additionally, pickup and drop-off Waypoint Actions have a mandatory ride id
attribute. This
is used to provide a link between the ordered ride and the Waypoint Action, which is useful in case a ride needs to be
cancelled due to an issue completing Waypoint Action or in case we need to remove the Waypoint Action due to a ride
cancellation.
Pickup#
Pickup Waypoint Action type is for the collection of Passengers.
Pickup Waypoint Action#
For Pickup Action, a ride id and a promised arrival time window should be provided.
{
"pickup": {
"ride_id": "00eedc02-b670-41c5-af64-b066994b9ab7-ride",
"promised_arrival_time": {
"start_time": {
"seconds": "1710340713",
"nanos": 664000000
},
"end_time": {
"seconds": "1710340713",
"nanos": 664000000
}
}
}
}
Pickup Flow#
The pickup flow for a Waypoint with a single Pickup Waypoint Action is visualized in the diagram below.
graph TB subgraph pick-up [Pick-Up] direction TB pu-waypoint-reached[WaypointReached] boarding-prep-started[BoardingPreparationStarted] boarding-prep-success([SendBoardingPreparationSuccessful or NFC Authentication]) boarding-prep-completed[BoardingPreparationCompleted] cabin-safety-check-started([Cabin Safety Check Started]) cabin-safety-check-completed([Cabin Safety Check Completed]) picked-up[PickedUp] pu-waypoint-completed[WaypointCompleted] pu-waypoint-reached --> boarding-prep-started boarding-prep-started --> boarding-prep-success boarding-prep-success --> boarding-prep-completed boarding-prep-completed --doors open<br/>passenger boarding--> cabin-safety-check-started cabin-safety-check-started -- doors closed--> cabin-safety-check-completed cabin-safety-check-completed --> picked-up picked-up --> pu-waypoint-completed end
The flow follows the following steps:
Vehicle arrives and stops at Waypoint, with
WaypointReached
event sent.Vehicle waits for passenger to be authenticated - sending
BoardingPreparationStarted
event as soon as ready for authentication. Based on the chosen operation mode, this can either be fulfilled by the Vehicle using an NFC module or by the API user.When authentication is completed and the Vehicle can be boarded, the Vehicle sends a
BoardingPreparationCompleted
event and the doors of the Vehicle are opened ready for passengers to board.Once the passenger has boarded, a Cabin Safety Check needs to be completed by an Operator.
On starting the Cabin Safety Check, the doors will be closed (opening them would restart the cabin safety check).
Following successful completion of the Cabin Safety Check, a
PickedUp
event is emitted.The Vehicle is then ready to continue driving (as no other Waypoint Actions at this Waypoint), indicated by a
WaypointCompleted
event.Upon completion of this Waypoint, the Waypoint and corresponding Waypoint Action are removed from the Mission.
Drop-off#
Drop off Waypoint Action type is for the delivery of Passengers.
Drop-off Waypoint Action#
For Drop-off Action, a ride id and promised arrival time window should be provided.
{
"dropoff": {
"ride_id": "00eedc02-b670-41c5-af64-b066994b9ab7-ride",
"promised_arrival_time": {
"start_time": {
"seconds": "1710340713",
"nanos": 664000000
},
"end_time": {
"seconds": "1710340713",
"nanos": 664000000
}
}
}
}
Drop-off Flow#
This process is visualized in the diagram below for a Waypoint with a single drop-off Waypoint Action.
graph TB subgraph drop-off [Drop-Off] direction TB do-waypoint-reached[WaypointReached] cabin-safety-check-started([Cabin Safety Check Started]) cabin-safety-check-completed([Cabin Safety Check Completed]) droppedoff[DroppedOff] do-waypoint-completed[WaypointCompleted] do-waypoint-reached --doors open</br>passnge deboarding --> cabin-safety-check-started cabin-safety-check-started --doors closed--> cabin-safety-check-completed cabin-safety-check-completed --> droppedoff droppedoff --> do-waypoint-completed end
The flow follows the following steps:
Vehicle arrives and stops at Waypoint, with
WaypointReached
event sent.Doors are immediately opened so deboarding can commence.
Once the passenger has deboarded, a Cabin Safety Check needs to be completed by an Operator.
On starting the Cabin Safety Check, the doors will be closed (opening them would restart the cabin safety check).
Following successful completion of the Cabin Safety Check, a
DroppedOff
event is emitted.The Vehicle is then ready to continue driving (as no other Waypoint Actions at this Waypoint), indicated by a
WaypointCompleted
event.Upon completion of this Waypoint, the Waypoint and corresponding Waypoint Action are removed from the Mission.
Rebalancing#
Rebalancing Waypoint Action type is for the Vehicle to be sent to any location (no passenger action).
Rebalancing Waypoint Action#
Rebalancing Actions are independent of rides (no ride id can be provided).
{
"rebalancing": {}
}
Rebalancing Flow#
This process is visualized in the diagram below for a Waypoint with a single Rebalancing Waypoint Action.
graph TB subgraph rebalancing [Rebalancing] direction TB rb-waypoint-reached[WaypointReached] update-mission([UpdateMission by Client]) route-updated[VehicleRouteUpdated] departs-next-waypoint([Vehicle travels to Next Waypoint]) rb-waypoint-reached --vehicle waits--> update-mission update-mission --> route-updated route-updated --vehicle starts driving--> departs-next-waypoint end
The flow follows the following steps:
Vehicle arrives and stops at Waypoint, with
WaypointReached
event sent.Vehicle waits for Mission Update at this location.
Expectation that doors are not opened and no passengers board the vehicle.
When the Vehicle should move to a new Waypoint, a successful Mission update must be sent, confirmed by
UpdateVehicleMissionResponse
.Route is calculated to new next Waypoint and
VehicleRouteUpdated
event is sent for new Vehicle Route.Vehicle departs from Waypoint (no event issued).
Service Break#
Service Break Waypoint Action type is for the Vehicle to be sent to its break location (no passenger action). The Vehicle is not available for regular service during this time.
Service Break Waypoint Action#
Service Break Actions are independent of rides (no ride id can be provided).
{
"service_break": {
"promised_arrival_time": {
"start_time": {
"seconds": "1710340713",
"nanos": 664000000
},
"end_time": {
"seconds": "1710340713",
"nanos": 664000000
}
}
}
}
Service Break Flow#
This process is visualized in the diagram below for a Waypoint with a single Service Break Waypoint Action.
graph TB subgraph service-break [Service Break] direction TB rb-waypoint-reached[WaypointReached] update-mission([UpdateMission by Client]) route-updated[VehicleRouteUpdated] departs-next-waypoint([Vehicle Departs to Next Waypoint]) rb-waypoint-reached --vehicle waits--> update-mission update-mission --> route-updated route-updated --vehicle starts driving--> departs-next-waypoint end
The flow follows the following steps:
Vehicle arrives and stops at Waypoint, with
WaypointReached
event sent.Vehicle waits for Mission Update at this location.
Expectation that doors are not opened and no passengers board the vehicle.
When the Vehicle should move to a new Waypoint, a Mission update must be sent.
Route is calculated to new next Waypoint and
VehicleRouteUpdated
event is sent for new Vehicle Route.Vehicle departs from Waypoint (no event issued).
Multi Action Waypoints#
In addition to Waypoints with single Actions, it is possible to have multiple Actions for a single Waypoint.
First example shows a single Waypoint with 3 actions (each for a different ride). At this waypoint there are:
-Pickup of 2 rides -Drop off of 1 ride
// Waypoint with 2 pickups and a drop off
[
{
"actions": [
{
"pickup": {
"ride_id": "00eedc02-b670-41c5-af64-b066994b9ab7-ride",
"promised_arrival_time": {
"start_time": {
"seconds": "1710339813",
"nanos": 664000000
},
"end_time": {
"seconds": "1710339813",
"nanos": 664000000
}
}
}
},
{
"pickup": {
"ride_id": "b066994b9ab7-41c5-af64-00eedc02-b670-ride",
"promised_arrival_time": {
"start_time": {
"seconds": "1710339955",
"nanos": 664000000
},
"end_time": {
"seconds": "1710339955",
"nanos": 664000000
}
}
}
},
{
"dropoff": {
"ride_id": "41c5-af64-00eedc02-b670-b066994b9ab7-ride",
"promised_arrival_time": {
"start_time": {
"seconds": "1710339989",
"nanos": 664000000
},
"end_time": {
"seconds": "1710339989",
"nanos": 664000000
}
}
}
}
],
"location": {
"labels": {
"de": "Elligersweg 23",
"en": "Elligersweg 23"
},
"location": {
"latitude": 53.604013,
"longitude": 10.043214
},
"heading": 220
},
"id": "422a287e-296f-4c0b-a47d-821bf3951d53"
}
]