Trajets à la demande

Ce document décrit le service de trajets à la demande dans Fleet Engine. Il suppose que vous avez lu Qu'est-ce que Fleet Engine ? et que vous connaissez la fonctionnalité de service Fleet Engine spécifique dont vous avez besoin.

Lorsque vous lisez cette documentation, tenez compte des points suivants:

  • Vous attribuez des trajets à des véhicules afin de modéliser l'association réelle entre le trajet et le conducteur qui l'effectue. Consultez la section Présentation des véhicules pour mieux comprendre leur fonctionnement dans Fleet Engine.
  • Ce document décrit également certains éléments du véhicule qui ne s'appliquent qu'aux trajets à la demande.
  • Fleet Engine pour les trajets à la demande utilise deux ressources: un Trip et un Vehicle. Fleet Engine fournit à la fois un service gRPC et des interfaces REST :
    • TripService: gRPC et REST
    • VehicleService: gRPC et REST
    • Par souci de simplicité, ce manuel utilise des exemples gRPC.

Qu'est-ce qu'un trajet à la demande ?

Dans Fleet Engine, un trajet représente un trajet à la demande qui peut atteindre divers objectifs de transport. Par exemple:

  • Personnes: transportez une ou plusieurs personnes entre les lieux de prise en charge et de dépose.
  • Aliments et produits: récupérez une ou plusieurs commandes de repas dans un établissement donné et livrez-les à un ou plusieurs destinataires à leur domicile.

Éléments de trajet

L'illustration suivante montre les éléments de base d'un trajet: l'ID du véhicule attribué, l'état du trajet et les points de cheminement du trajet. Les types de points de cheminement varient selon l'étape du trajet: prise en charge, point intermédiaire et dépose. Dans tous les trajets, une destination ou un point de cheminement intermédiaire est facultatif. Dans l'exemple d'image, le véhicule est arrivé au point de ramassage.

Modèle de données pour les trajets

Comme votre backend attribue des trajets aux véhicules, il doit également connaître les autres trajets planifiés pour le véhicule. C'est pourquoi les diagrammes suivants illustrent le modèle de données de la ressource Trip, ainsi que le diagramme de la ressource Vehicle associée. Vous pouvez examiner les deux diagrammes pour explorer les relations entre les deux ressources, en gardant à l'esprit les points suivants:

  • Les trajets sont attribués à un véhicule par ID.
  • L'association "trajet-véhicule" est de type "plusieurs à un". Autrement dit, un trajet donné peut être le seul trajet planifié pour le véhicule, ou il peut être l'un des nombreux trajets du véhicule.
  • Les objets "Trip" contiennent deux listes de points de cheminement, l'une pour le trajet lui-même et l'autre pour le véhicule attribué. Cela est expliqué plus en détail dans ce document.
  • Le véhicule à la demande comporte également une liste de points de cheminement du trajet, décrite plus en détail dans ce document.

Modèle de données de trajet

Modèle de données du véhicule

Types de trajets

Lorsque votre service crée un trajet, il peut définir le champ tripType sur l'un des éléments suivants: EXCLUSIVE ou SHARED.

Voyages exclusifs

Un trajet exclusif est un trajet qui ne se chevauche pas avec d'autres trajets, et que le véhicule effectue avant ou après d'autres trajets dans son planning. Cela signifie que lorsque votre système attribue des trajets exclusifs, il ne peut les attribuer qu'à un véhicule à effectuer dans l'ordre, et non simultanément. Par exemple, vous pouvez créer des trajets exclusifs avec les caractéristiques suivantes:

  • Trajet avec un seul lieu de prise en charge et un seul lieu de dépose pour un véhicule qui n'a aucun autre trajet prévu.
  • Un trajet avec un point de prise en charge, un point intermédiaire et un point de dépôt pour un véhicule sans autre trajet prévu
  • Trajet avec un point de départ et un point d'arrivée ajoutés à la fin d'un trajet déjà planifié pour le véhicule. Dans ce cas, chaque trajet est exclusif à l'autre, mais les trajets sont organisés l'un à la suite de l'autre. De plus, ces trajets peuvent inclure des destinations intermédiaires, si nécessaire.

Voyages partagés

Un trajet partagé est un trajet qui peut se chevaucher avec d'autres réservations de trajets. Pour ces types de trajets, votre système peut les attribuer pour qu'ils se produisent simultanément avec des destinations entrelacées. Par exemple, le dépôt d'un trajet peut avoir lieu après le ramassage d'un autre. De plus, les trajets partagés ne peuvent pas utiliser de points de cheminement intermédiaires.

En règle générale, vous utilisez un trajet partagé pour l'un des scénarios de partage illustrés dans la section Scénarios de trajet.

Points de cheminement du trajet

Pour Google Maps, un point de cheminement est un lieu situé sur un itinéraire, généralement défini par des coordonnées de latitude/longitude. Pour les trajets à la demande, un point de cheminement est représenté par un objet TripWaypoint, qui contient des informations supplémentaires, comme les suivantes:

  • ID du trajet
  • WaypointType, soit le lieu de prise en charge, l'emplacement intermédiaire ou le lieu de dépose
  • Informations sur le tracé et la distance entre le point de repère du trajet précédent et celui du trajet actuel
  • Conditions de circulation sur le trajet jusqu'au point de repère du trajet
  • Durée du trajet et heure d'arrivée prévue au point de repère du trajet

Consultez les références:

Types de repères de trajet

Un point de cheminement de trajet est défini par rapport au cycle de vie général d'un trajet en véhicule:

  • Point de départ : utilisé pour l'origine ou le début d'un trajet, par exemple lorsqu'un chauffeur récupère une commande de repas pour une livraison ultérieure ou lorsqu'il prend en charge une personne pour la déposer plus tard.
  • Point de cheminement intermédiaire : destination intermédiaire pouvant être utilisée à diverses fins, par exemple lorsqu'un chauffeur dépose un passager de la même partie de réservation, mais que le trajet lui-même n'est pas terminé, car d'autres passagers restent à bord. Ce point de repère est facultatif et ne peut être utilisé que pour les trajets exclusifs.
  • Point de dépôt : utilisé pour l'emplacement final du trajet, par exemple lorsque le dernier passager quitte le véhicule.

Listes de points de cheminement de trajet

Une entité Trip inclut deux listes de points de cheminement, chacun étant un champ répété de type TripWaypoint. L'une décrit les champs nécessaires au trajet lui-même, et l'autre tous les points de cheminement restants pour le véhicule associé au trajet. Vous obtenez ainsi une vue d'ensemble de tous les éléments du parcours: le trajet et l'ensemble du parcours du véhicule.

  • Points de cheminement restants pour le véhicule : champ appelé vehicle_waypoints. Il contient tous les points de repère restants pour tous les trajets attribués au véhicule.
  • Points de repère restants pour le trajet : champ appelé remaining_waypoints. Il contient des points de cheminement que le véhicule doit parcourir dans l'ordre avant le point de dépôt final du trajet. Consultez les scénarios dans la section Scénarios de trajet.
    • Pour un trajet à destination unique attribué à un véhicule sans autre trajet à son programme, cela n'inclut que des lieux de prise en charge et de dépôt, en supposant que le véhicule n'ait pas quitté le point de repère de prise en charge.
    • Pour tout autre scénario de trajet où le véhicule est également prévu pour d'autres trajets, les points de cheminement restants pour n'importe quel trajet de son itinéraire incluront tous les points de cheminement des autres trajets que le véhicule doit traverser avant d'atteindre le point de dépôt de ce trajet. Par exemple, dans un trajet en aller-retour où le véhicule est en route vers le point de dépôt du trajet A, les points de cheminement restants du trajet B incluent le point de dépôt du trajet A. Fleet Engine calcule ces informations à l'aide du champ vehicle_waypoints.

Consultez la documentation de référence de l'entité Trip: gRPC ou REST.

Scénarios de trajet

Les schémas suivants illustrent différents scénarios de trajets compatibles. Dans ces scénarios, seul le trajet en covoiturage partagé est de type SHARED. Tous les autres sont de type EXCLUSIVE. Les diagrammes indiquent également l'état du trajet et les points de cheminement restants pour le véhicule effectuant le trajet, des concepts décrits plus loin dans ce guide.

Aller simple

Un trajet à destination unique est un trajet EXCLUSIVE avec un lieu de prise en charge et un lieu de dépose. Par exemple, un conducteur prend en charge un passager à un endroit et le transporte vers un autre, ou il récupère une commande de livraison de repas dans un restaurant et la livre à un client.

Trajets multidestinations

Un trajet multidestination est un trajet EXCLUSIVE qui contient une ou plusieurs destinations intermédiaires entre les lieux de prise en charge et de dépose. Par exemple, trois clients de services de covoiturage réservent un trajet ensemble depuis le téléphone d'une personne, mais chacun a une destination différente.

Trajets consécutifs

Les trajets consécutifs sont des trajets EXCLUSIVE qui contiennent une série de trajets indépendants qui se produisent l'un après l'autre. Chaque trajet de la chaîne peut être à destination unique ou multiple. Dans ce scénario, un conducteur s'engage à prendre en charge un autre client avant de terminer le trajet en cours.

Ces trajets ne peuvent être attribués qu'à des véhicules qui permettent de planifier des trajets consécutifs. Consultez la documentation de référence Vehicle REST et gRPC.

Voyages en covoiturage

Un trajet en covoiturage partagé diffère des autres types de trajets. Tout d'abord, il doit s'agir d'un trajet SHARED, et non d'un trajet EXCLUSIVE. Ici, le véhicule exécute les trajets simultanément plutôt que de manière séquentielle, comme pour les trajets exclusifs. Bien qu'un trajet en covoiturage partagé partage son trajet avec d'autres trajets, il ne partage pas les informations sur les lieux de prise en charge et de dépose entre les trajets. Au lieu de cela, chaque trajet est une réservation exclusive, de sorte que l'utilisateur final qui a réservé un trajet ne peut pas voir les informations de prise en charge ou de destination d'un autre trajet que le sien. Exemple :

  • Un service de navette aéroport prend en charge plusieurs clients à leur domicile et les dépose à différents terminaux d'aéroport le long du trajet. La personne 2 peut utiliser votre application grand public pour suivre la progression du trajet, mais son application n'affiche que sa partie du trajet et non l'endroit où la personne 1 a été prise en charge ni l'endroit où elle sera déposée, même si certaines parties de leurs trajets se chevauchent.
  • Un livreur de repas récupère trois commandes de repas dans le même restaurant pour les livrer à différents domiciles de clients. Grâce à votre application grand public, la personne 3 peut voir où et quand sa commande a été récupérée, ainsi que l'itinéraire du livreur, mais pas les lieux de livraison des personnes 1 et 2.

État du trajet et cycle de vie

Cette section décrit l'état du trajet, son impact sur le véhicule et les différents scénarios que vous rencontrez lorsque vous attribuez et gérez des trajets à la demande.

Un trajet passe généralement par différents états, de la création à la fin. De manière générale, un trajet peut être actif ou inactif, selon son état. L'état du trajet a un impact sur divers scénarios d'utilisation avec Fleet Engine, ainsi que sur votre capacité à identifier la progression du véhicule tout au long du trajet. La suite de ce document décrit ces scénarios.

Le tableau suivant indique l'état des trajets en fonction des types actifs et inactifs.

États des trajets actifs États des trajets inactifs
NEW
UNKNOWN_TRIP_STATUS
ENROUTE_TO_PICKUP
ARRIVED_AT_PICKUP
ENROUTE_TO_INTERMEDIATE_DESTINATION
ARRIVED_AT_INTERMEDIATE_DESTINATION
ENROUTE_TO_DROPOFF
COMPLETE
CANCELED

État du trajet et points de cheminement restants du véhicule

Lorsque vous attribuez des trajets supplémentaires à un véhicule qui en effectue déjà un, vous devez comprendre la relation entre les points de cheminement restants du véhicule et l'impact de l'état du trajet sur ces points de cheminement restants.

Par exemple, vous pouvez attribuer une nouvelle demande de covoiturage à un véhicule qui n'accepte que les trajets exclusifs et qui est en train d'effectuer un trajet. Dans ce cas, vous modéliserez le trajet comme un trajet en aller-retour. Lorsque vous attribuez un tel trajet, votre système doit s'assurer que les points de cheminement du nouveau trajet se produisent après ceux du trajet en cours.

Pendant le trajet du véhicule, Fleet Engine supprime un point de cheminement de trajet précédent de la liste des points de cheminement restants du véhicule uniquement lorsque le véhicule indique qu'il est en route vers la destination suivante ou qu'il a terminé. Par exemple:

  • ENROUTE_TO_INTERMEDIATE_DESTINATION
  • ENROUTE_TO_DROPOFF
  • TERMINÉ

Lorsque l'état du trajet passe à COMPLETED, Fleet Engine supprime le dernier point de cheminement du trajet de la liste des points de cheminement restants du véhicule.

En revanche, les modifications d'état indiquant l'arrivée à un point de repère n'ont généralement aucun effet sur la liste des points de repère restants du véhicule:

  • ARRIVED_AT_PICKUP
  • ARRIVED_AT_INTERMEDIATE_DESTINATION
  • ARRIVED_AT_DROPOFF

Pour illustrer ce point avec un exemple de trajet à la demande, supposons que le chauffeur récupère un client à son domicile, le transporte vers un lieu où il attend que le client termine une tâche, puis le ramène à son domicile. Lors de sa création initiale, le trajet comporte trois points de cheminement: PICKUP, INTERMEDIATE et DROPOFF. Le tableau suivant illustre les résultats d'une requête pour les points de cheminement restants à différents stades du parcours:

État du trajet Points de cheminement restants
ARRIVED_AT_PICKUP PICKUP
INTERMEDIATE
DROPOFF
ENROUTE_TO_INTERMEDIATE_DESTINATION PICKUP
INTERMEDIATE
DROPOFF
ARRIVED_AT_INTERMEDIATE_DESTINATION PICKUP
INTERMEDIATE
DROPOFF
ENROUTE_TO_DROPOFF PICKUP
INTERMEDIATE
DROPOFF
ARRIVED_AT_DROPOFF PICKUP
INTERMEDIATE
DROPOFF
COMPLETE PICKUP
INTERMEDIATE
DROPOFF

Exigences concernant l'état des trajets réattribués ou annulés

Avant de pouvoir effectuer l'une des opérations suivantes, vous devez définir l'état du trajet sur NEW ou CANCELED.

  • Lorsque vous modifiez l'affectation d'un véhicule pour un trajet Par exemple, si un conducteur refuse l'attribution d'un véhicule pour un trajet et qu'il doit être attribué à un autre véhicule.
  • Lorsque vous annulez l'attribution d'un véhicule à un trajet Par exemple, si un conducteur annule un trajet en cours de route et que vous souhaitez effacer l'attribution du véhicule, l'état doit être NEW ou CANCELED.

Résultats de recherche en fonction de l'état du trajet

Lorsque vous utilisez le service SearchTrips pour un véhicule spécifique, il renvoie la liste des trajets actifs dans SearchTripsResponse. Les trajets actifs apparaissent également dans le champ active_trips de l'entité Vehicle. Pour en savoir plus, consultez la documentation de référence sur SearchTripsResponse: gRPC ou REST.

Par conséquent, tous les trajets dont l'état est actif apparaissent dans le champ active_trips, mais les trajets terminés ou annulés ne le font pas.

Étape suivante