Brevet FR3139219A1 — publié le 20240301

TITRE : Procédé de planification de déplacement d’un véhicule autonome par programmation par contrainte Un aspect de l’invention concerne un procédé (1) de planification de déplacement d’un véhicule dans un graphe (G) comprenant une pluralité de nœuds (A1,…,A3, B1,…,B5, C1,…,C4), chaque nœud ayant une position géographique, un des nœuds étant associé à une tâche (A, B, C), comprenant: Construction (11) d’une matrice à partir du graphe (G), la matrice comprenant, pour chaque nœud, une valeur d’une métrique prédéterminée pour chaque autre nœud de la pluralité de nœuds (A1,…,A3, B1,…,B5, C1,…,C4), Calcul (12) d’un itinéraire par un solveur retenant dans l’itinéraire des nœuds retenus parmi la pluralité de nœuds du graphe (A1,…,A3, B1,…,B5, C1,…,C4), le calcul étant réalisé à partir de la matrice et d’une pluralité de contraintes comprenant : une première contrainte contraignant le solveur à calculer comme itinéraire un circuit hamiltonien pour les nœuds retenus prenant la forme d’une liste de nœuds successifs et, pour chaque nœud non-retenu, à créer une entrée dans la liste pour laquelle le nœud successif du nœud non-retenu est lui-même, une deuxième contrainte contraignant le solveur à retenir dans l’itinéraire uniquement des nœuds différents, une troisième contrainte contraignant le solveur à trouver un itinéraire passant une fois par un nœud associé à chaque tâche (A, B, C), par le nœud de départ (D) et par le nœud d’arrivée (F), une fonction de minimisation contraignant le solveur à minimiser la somme des valeurs de métrique entre les nœuds retenus. Planification (13) du déplacement du véhicule selon l’itinéraire calculé. Procédé de planification de déplacement d’un véhicule autonome par programmation par contrainte DOMAINE TECHNIQUE DE L’INVENTION Le domaine technique de l’invention est celui de la planification automatique d’itinéraires. La présente invention concerne un procédé de planification automatique de déplacement d’un véhicule autonome par programmation par contrainte et en particulier de planification automatique d’itinéraire pour un véhicule passant par une pluralité de points géographiques pour réaliser des tâches prédéterminées, la planification étant réalisée par un solveur destiné à prendre en compte des contraintes particulières. ARRIERE-PLAN TECHNOLOGIQUE DE L’INVENTION Dans le cadre de la planification de déplacements de véhicules autonomes, il est courant de vouloir trouver le plus court chemin entre deux points d’un graphe, le graphe comportant plusieurs points. En théorie des graphes, l’algorithme de Dijkstra permet de résoudre ce problème, en calculant le chemin le plus court entre un point de départ et tous les points du graphe. Un inconvénient de Dijkstra est qu’il ne permet pas de trouver rapidement et efficacement une séquence de déplacements entre un point de départ et un point d’arrivée, la séquence de déplacements comprenant des passages imposés à plusieurs points de passage, par exemple pour réaliser un ensemble de tâches constitutif d’une mission, les tâches étant réalisées à différentes positions. Il existe donc un besoin d’avoir une solution qui permet de trouver rapidement et efficacement une séquence de déplacements entre un point de départ et un point d’arrivée comprenant des passages imposés à plusieurs points de passage. Il existe un besoin d’avoir une solution qui permet aussi de sélectionner automatiquement un ordre de tâches à effectuer entre le point de départ et le point d’arrivée. La montre une représentation schématique d’un graphe G comprenant des groupes de tâches. Le graphe G représenté à la comprend un point de départ D et un point d’arrivée F. Ces points de départ D et d’arrivée F sont des nœuds (également connus sous la dénomination « points » ou « sommets »). Le graphe G comprend d’autres nœuds, reliés par des arêtes. Parmi les autres nœuds, certains sont rassemblés sous forme de groupes A, B et C. Les groupes A, B et C sont donc des groupes de nœuds, chaque groupe de nœuds étant associé à une tâche à réaliser entre le point de départ D et le point d’arrivée F. Chaque groupe de nœuds comprend une pluralité de nœuds. Une tâche peut être réalisée en passant par un ou plusieurs des nœuds du groupe de tâches, quel que soit le nœud choisi dans ce groupe. Ainsi, au sein d’un même groupe de nœuds, les nœuds sont « équivalents », c’est-à-dire qu’ils permettent tous d’atteindre le but de réaliser la tâche associée au groupe de nœuds. Par exemple, pour le groupe de nœuds A, associé à la tâche A à effectuer, les nœuds A1, A2 ou A3 permettent chacun de réaliser la tâche A. Par exemple, le nœud A peut représenter la localisation d’un point à observer, et les nœuds A1 à A3 peuvent représenter des points d’observation permettant de réaliser la tâche d’observer le point localisé au nœud A. De même, pour le groupe de nœuds B, associé à la tâche B à effectuer, les nœuds B1, B2, B3, B4 ou B5 permettent chacun de réaliser la tâche B. Concernant le groupe de nœuds C, associé à la tâche C à effectuer, les nœuds C1, C2, C3 ou C4 permettent chacun de réaliser la tâche C. L’objectif est celui d’aller du point de départ D au point d’arrivée F en passant par au moins un nœud de chacune des tâches A, B et C en empruntant le plus court chemin, par exemple en passant par les nœuds A2, B1 et C3, afin d’observer les positions géographiques associées aux observations A, B et C lorsque les tâches sont des observations. L'ordre de passage entre les tâches n’est pas déterminé à l’avance. Ainsi, le chemin le plus court pourrait commencer par la tâche B, puis A, puis C. C’est le solveur qui détermine l’ordre de passage des points. Le plus court chemin est soit le plus court chemin en termes de distance, ou le plus court chemin en termes de temps, c’est-à-dire le chemin le plus rapide. C’est l’utilisateur qui choisit le critère de minimisation (distance ou temps). Ce critère est une donnée d’entrée de la tâche de planification. Il existe un besoin de résoudre ce problème de manière rapide et fiable dont la solution est optimale et précise, c’est-à-dire non approximée. L’invention offre une solution aux problèmes évoqués précédemment, en permettant de trouver l’itinéraire permettant d’effectuer un ensemble de tâches en respectant une contrainte liée à une métrique prédéfinie. Un aspect de l’invention concerne un procédé de planification de déplacement d’un véhicule dans un graphe, le graphe comprenant une pluralité de nœuds, chaque nœud de la pluralité de nœuds ayant une position géographique, au moins un des nœuds de la pluralité de nœuds étant associé à une tâche à réaliser par le véhicule, la pluralité de nœuds comprenant un nœud de départ et un nœud d’arrivée, le procédé de planification comprenant au moins les étapes de : Construction d’au moins une matrice à partir du graphe, la matrice comprenant, pour chaque nœud de la pluralité de nœuds du graphe, une valeur d’une métrique prédéterminée pour chaque autre nœud de la pluralité de nœuds, Calcul d’un itinéraire par un solveur, le solveur retenant dans l’itinéraire des nœuds retenus parmi la pluralité de nœuds du graphe, le calcul étant réalisé à partir de la matrice et d’une pluralité de contraintes comprenant au moins : une première contrainte contraignant le solveur à calculer comme itinéraire un chemin hamiltonien pour les nœuds retenus prenant la forme d’une liste de nœuds successifs et, pour chaque nœud non retenu dans l’itinéraire, à créer une entrée dans la liste pour laquelle le nœud successif du nœud non-retenu est lui-même, une deuxième contrainte contraignant le solveur à retenir dans l’itinéraire uniquement des nœuds différents, une troisième contrainte contraignant le solveur à trouver un itinéraire passant au moins une fois par un nœud associé à chaque tâche, et passant par le nœud de départ et par le nœud d’arrivée, une fonction de minimisation contraignant le solveur à minimiser la somme des valeurs de métrique entre les nœuds retenus pour l’itinéraire. Planification du déplacement du véhicule selon l’itinéraire calculé. Grâce à l’invention, il est possible de résoudre le problème posé, qui est celui, pour un véhicule, de réaliser une pluralité de tâches entre un point de départ et un point d’arrivée, tout en réalisant l’itinéraire respectant une valeur minimale de métrique, et ce de manière rapide, fiable et facile à utiliser pour un utilisateur non initié. En effet, l’utilisation de la programmation par contraintes avec les contraintes de l’invention pour résoudre le problème posé permettent une résolution rapide par le solveur tout en ayant un résultant garantissant le respect de ces contraintes. Par ailleurs, il est aisé pour un utilisateur non initié de sélectionner une pluralité de points par lesquels doit passer le véhicule autonome, par exemple sur une interface homme-machine, et de relancer le solveur avec les mêmes contraintes et avec les nouveaux points. De plus, l’itinéraire trouvé est optimal, c’est-à-dire qu’il n’existe pas d’itinéraire ayant une valeur de métrique plus basse et permettant de réaliser toutes les tâches. Outre les caractéristiques qui viennent d’être évoquées dans le paragraphe précédent, le procédé selon un aspect de l’invention peut présenter une ou plusieurs caractéristiques complémentaires parmi les suivantes, considérées individuellement ou selon toutes les combinaisons techniquement possibles : la métrique entre deux nœuds de la pluralité de nœuds est choisie parmi : une distance entre les positions géographiques des deux nœuds, une durée de parcours entre les positions géographiques des deux nœuds, une consommation du véhicule entre les positions géographiques des deux nœuds, un dénivelé entre les positions géographiques des deux nœuds. la planification du déplacement du véhicule comprend la configuration du véhicule avec l’itinéraire calculé. la construction de la matrice à partir du graphe comprend, en partant de chaque nœud du graphe, un parcours de l’ensemble du graphe de proche en proche, en triant les positions à considérer selon la valeur de métrique totale, sans critère d’arrêt. chaque tache à réaliser est associée à un ou plusieurs nœuds de la pluralité de nœuds, et selon lequel le calcul de l’itinéraire prend en compte une contrainte contraignant le solveur à obtenir un itinéraire comprenant au moins un nœud associé à chacune des chaque tâches à réaliser. la pluralité de contraintes pour le calcul de l’itinéraire comprend en outre une contrainte d’évaluation inverse contraignant le solveur à évaluer les nœuds successifs en ordre inverse. les valeurs de la matrice sont des entiers. les tâches sont choisies parmi des observations, une livraison ou une récupération d’un objet, ou des ravitaillements en énergie ou en carburant. le graph représente des routes d’une zone géographique et les nœuds sont les carrefours dans cette zone. Un autre aspect de l’invention concerne un véhicule, notamment autonome, configuré pour réaliser l’itinéraire obtenu par le procédé selon l’invention. Encore un autre aspect de l’invention concerne un produit programme d'ordinateur comprenant des instructions qui, lorsque le programme est exécuté par un ordinateur, conduisent celui-ci à mettre en œuvre le procédé selon l’invention. Encore un autre aspect de l’invention concerne un support d'enregistrement lisible par ordinateur comprenant des instructions qui, lorsqu'elles sont exécutées par un ordinateur, conduisent celui-ci à mettre en œuvre le procédé selon l’invention. L’invention et ses différentes applications seront mieux comprises à la lecture de la description qui suit et à l’examen des figures qui l’accompagnent. BREVE DESCRIPTION DES FIGURES Les figures sont présentées à titre indicatif et nullement limitatif de l’invention. La montre une représentation schématique d’un graphe comprenant des groupes de tâches, La montre une représentation schématique d’un procédé de planification selon l’invention, La montre une représentation schématique d’une interface homme-machine permettant d’initier le procédé selon l’invention. DESCRIPTION DETAILLEE Sauf précision contraire, un même élément apparaissant sur des figures différentes présente une référence unique. Dans la suite, on entend par : « nœud correspondant à la tâche » ou « nœud correspondant à une position géographique », un nœud comprenant une donnée tâche ou respectivement une donnée de localisation. La montre une représentation schématique d’un procédé de planification d’itinéraire selon l’invention. Le procédé 1 représenté à la comprend trois étapes, et permet de planifier l’itinéraire d’un véhicule autonome. Un véhicule autonome est un véhicule capable de se déplacer en autonomie, c’est-à-dire sans la présence ni l’implication d’un être humain. Ainsi, un véhicule autonome ne nécessite pas forcément de pilote ni de téléopérateur en ligne. Ce concept d’autonomie est applicable par exemple à un drone, aussi appelé « UAV » pour « Unmanned Aerial Vehicle », ou à un véhicule terrestre aussi appelé « UGV » (Unmanned Ground Vehicle), par exemple une voiture, un camion ou tout autre véhicule capable de se déplacer. Un véhicule autonome est programmable, c’est-à-dire qu’il est possible de lui donner des consignes par programmation. Parmi ces consignes, un véhicule autonome est capable de suivre un itinéraire. Un itinéraire est un ensemble de points géographiques, par exemple encodés sous la forme de coordonnées géographiques, par exemple comprenant une latitude et une longitude (aussi dénommées point de navigation). Lorsqu’il suit un itinéraire, le véhicule autonome se déplace jusqu’aux points de navigation formant l’itinéraire, selon un ordre défini par l’itinéraire. Pour configurer un véhicule autonome pour qu’il suive un itinéraire, le véhicule autonome comprend au moins un processeur et une mémoire, la mémoire comprenant des instructions qui, lorsqu’elles sont exécutées par le processeur, conduisent le processeur à émettre des commandes de déplacement du véhicule autonome pour suivre l’itinéraire. L’action de fournir les points de navigation, constituant un itinéraire cohérent en mémoire du véhicule autonome est une programmation, ou configuration, du véhicule autonome. L’action de fournir un itinéraire cohérent en mémoire du véhicule autonome est aussi une action de planification du déplacement du véhicule autonome. Le procédé 1 selon l’invention permet de planifier les déplacements d’un véhicule autonome dans un graphe. Un graphe est une représentation comprenant un ensemble de nœuds et d’arrêtes reliant au moins certains nœuds entre eux. Un graphe permet de représenter une situation géographique réelle, par exemple une ville, une région géographique, un quartier ou toute zone géographique délimitée. Ainsi, on entend par « planifier les déplacements d’un véhicule autonome dans un graphe » le fait de planifier les déplacements d’un véhicule dans une zone géographique donnée représentée par un graphe. Dans la présente invention, chaque nœud du graphe représente une position géographique. Les arrêtes entre les nœuds représentent un chemin que le véhicule peut emprunter, c’est-à-dire un chemin compris dans la zone géographique qui permet au véhicule autonome de se déplacer d’une première position géographique représentée par le premier nœud à une deuxième position géographique représentée par le deuxième nœud. Toutes les positions géographiques représentées par les nœuds sont comprises dans la zone géographique représentée par le graphe. Le graphe au sein duquel le procédé 1 permet de planifier les déplacements est par exemple le graphe représenté à la . Dans ce graphe, des nœuds sont groupés par tâches, comme expliqué dans l’art antérieur. L’invention couvre les cas dans lesquels le nœud central du groupe de nœuds est une position géographique à observer à partir des nœuds extérieurs du groupe de nœuds. Par exemple, pour le groupe comprenant la tâche A, le nœud central est le nœud A et les nœuds extérieurs sont les nœuds A1 à A3. Dans ce groupe de nœuds correspondant à la tâche A, le nœud A représente une position géographique à observer et les nœuds A1 à A3 représentent des positions géographiques permettant d’observer la position géographique représentée par le nœud A. Le graphe est obtenu à partir d’une carte, par exemple une carte stockée dans un fichier tel qu’un fichier de type OpenStreetMap®. Dans une première variante de l’invention, le procédé selon l’invention comprend une étape 10 préliminaire d’extraction du graphe à partir d’un fichier de carte géographique. Cette étape, comme le reste du procédé selon l’invention, est mise en œuvre par ordinateur. L’extraction du graphe peut être réalisée par tout moyen externe au solveur. Pour cela, un ordinateur comprend un processeur et une mémoire, la mémoire comprenant des instructions qui, lorsqu’elles sont exécutées par le processeur, conduisent l’ordinateur à mettre en œuvre le procédé selon l’invention. Le procédé 1 selon l’invention permet de trouver et de planifier un itinéraire débutant au nœud de départ D et arrivant au point d’arrivée F et passant par au moins un nœud de chaque tâche. L’itinéraire trouvé par l’invention a une valeur minimale d’une métrique. La métrique est par exemple la distance, l’itinéraire trouvé étant alors le plus court en termes de distance parmi tous les itinéraires possibles. Alternativement, la métrique est par exemple le temps, l’itinéraire trouvé étant alors le plus court en termes de temps parmi tous les itinéraires possibles. Alternativement encore, la métrique est une consommation du véhicule autonome, par exemple une consommation de carburant ou d’électricité, l’itinéraire trouvé étant alors l’itinéraire permettant au véhicule autonome de consommer le moins parmi tous les itinéraires possibles. La métrique est prédéterminée, c’est-à-dire qu’elle est déterminée avant l’étape 10 ou pendant l’étape 10, par exemple par un opérateur ou par configuration d’un système ou d’un ordinateur mettant en œuvre le procédé 1 selon l’invention. Plusieurs métriques peuvent être évaluées. En particulier, une première métrique peut être minimisée tandis qu’au moins une deuxième métrique peut être contrainte par au moins un seuil, l’itinéraire respectant alors la minimisation de la première métrique et le ou les seuil(s) de la ou des deuxième(s) métrique(s). La première et la deuxième métrique et chacune des autres métriques le cas échéant peuvent être linéairement indépendantes. En fonction de la métrique prédéterminée, les arrêtes du graphe se voient attribuer une valeur. Cette valeur est la valeur de la métrique entre les deux nœuds reliés par l’arrête. Par exemple, lorsque la métrique est la distance, la valeur de l’arrête, et donc la valeur de la métrique, est la distance à parcourir par le véhicule en suivant le chemin séparant les deux nœuds. Lorsque la métrique est le temps, la valeur de l’arrête, et donc la valeur de la métrique, est le temps mis par le véhicule en suivant le chemin séparant les deux nœuds, par exemple calculé par rapport à une vitesse moyenne sur ce chemin. Lorsque la métrique est la consommation du véhicule autonome, la valeur de l’arrête, et donc la valeur de la métrique, est la consommation du véhicule en suivant le chemin séparant les deux nœuds, par exemple calculée par rapport à une vitesse moyenne sur ce chemin et au type de véhicule. Lorsque la métrique est le dénivelé, la valeur de l’arrête, et donc la valeur de la métrique, est le dénivelé cumulé entre les deux nœuds. Ces valeurs attribuées aux arrêtes sont connues, par exemple récupérées d’au moins une base de données, calculées à partir du fichier de carte lors de l’étape 10 et/ou réalisées par un opérateur. Le procédé 1 selon l’invention permet de trouver un itinéraire dans un graphe tel que présenté précédemment, c’est-à-dire dans un graphe comprenant un nœud de départ, un nœud d’arrivée, une pluralité de nœuds dont certains sont groupés, et des arrêtes reliant les nœuds, les arrêtes comprenant une valeur de métrique entre les deux nœuds qu’elles relient. Le procédé 1 selon l’invention comprend une étape 11 de construction d’au moins une matrice à partir du graphe. Une telle matrice comprend, pour chaque nœud, une valeur de la métrique prédéterminée par rapport à chaque autre nœud, c’est-à-dire une valeur de la métrique prédéterminée entre chaque nœud du graphe et chaque autre nœud du graphe. Par exemple, dans le graphe de la , la matrice comprend, sur la première ligne, une valeur de métrique entre un premier nœud d’observation d’une tâche, par exemple le nœud A1, et chaque autre nœud d’observation d’une tâche du graphe, c’est-à-dire les nœuds de départ D et d’arrivée F, et les nœuds A2, A3, B1 à B5, et C1 à C4. Lorsque la métrique est la distance, la matrice comprend par exemple, à la première ligne, dans une première colonne la distance du nœud A1 avec le nœud A2, dans une deuxième colonne la distance du nœud A1 avec le nœud A3, dans une troisième colonne la distance du nœud A1 avec le nœud A, dans une quatrième colonne la distance du nœud A1 avec le nœud de départ D, etc. La matrice comprend ensuite par exemple, à la deuxième ligne, dans une première colonne la distance d’un deuxième nœud A2 avec le nœud A1, dans une deuxième colonne la distance du nœud A2 avec le nœud A3, dans une troisième colonne la distance du nœud A2 avec le nœud A, dans une quatrième colonne la distance du nœud A2 avec le nœud de départ D, etc. Alternativement, les colonnes et les lignes de la matrice peuvent être inversées. Les nœuds et leurs métriques respectives avec les autres nœuds du graphe peuvent être selon n’importe quel ordonnancement et forme dans la matrice. La matrice peut alternativement prendre la forme de plusieurs vecteurs indépendants, avec un vecteur pour chaque nœud comprenant une valeur de métrique par rapport à chacun des autres nœuds. Pour obtenir chaque valeur de métrique entre chaque nœud et les autres nœuds du graphe, cette étape 11 de construction de matrice comprend, en partant de chaque nœud du graphe, l’utilisation de l’algorithme de Dijkstra, en réalisant un parcours de l’ensemble du graphe de proche en proche, en triant les positions à considérer selon la valeur de métrique totale depuis le nœud initial, sans critère d’arrêt sur une position cible. Pour un premier nœud, le calcul de la valeur de métrique avec tous ses plus proches voisins, dits deuxièmes nœuds, comprend une première itération de déplacement du premier nœud vers chacun de ses voisins, de lecture de la valeur de métrique du premier nœud vers chacun de ses voisins, et de stockage dans la matrice, par exemple en base de données, de la valeur de la métrique entre le premier nœud et chacun de ses voisins. Puis une itération suivante comprend le déplacement depuis chaque deuxième nœud, dits « nœuds précédents », vers chaque plus proche voisin des deuxièmes nœuds, dits « nouveaux nœuds ». A chaque itération, la valeur de la métrique entre le premier nœud et le nœud précédent est ajoutée à la valeur de la métrique entre le nœud précédent et le nouveau nœud. Ainsi, on obtient pour chaque nœud l’ensemble des valeurs de métrique par rapport à chaque autre point du graphe, dans un ordre croissant ou décroissant des valeurs de métriques. Lorsque la métrique est la distance, on obtient l’ensemble des distances entre chaque nœud du graphe et chaque autre nœud du graphe, dans l’ordre croissant ou décroissant des distances. Cette technique permet de calculer en un seul parcours du graphe l’ensemble des valeurs de métrique entre un nœud du graphe et l’ensemble des autres nœuds du graphe. Cela permet aussi de détecter les nœuds qui ne sont pas reliés entre eux par le graphe. Selon un mode de réalisation préférentiel, les valeurs de métrique comprises dans la matrice sont tous des entiers, par exemple arrondis à la valeur supérieure ou à la valeur inférieure. Cela permet un gain de temps considérable, réduisant la durée d’exécution de l’étape suivante 12 de calcul d’itinéraire, lors de tests réalisés par les inventeurs, passant le temps mis par un solveur Gecode ® pour réaliser l’étape 12 de 10 secondes à 2 secondes. Cela est permis par l’utilisation d’entiers à la place de flottants comme types de variables dans le solveur pour réduire le domaine de recherche du solveur. Le procédé 1 selon l’invention comprend, après l’étape de construction de matrice, une étape 12 de calcul d’un itinéraire. Cette étape de calcul d’un itinéraire est réalisée par un solveur. Un solveur est un programme d’ordinateur configuré pour résoudre un problème mathématique posé. Un tel solveur est par exemple le solveur Gecode ® . L’utilisation d’un solveur fait partie de la présente invention. Le fonctionnement du solveur ne fait pas partie de la présente invention. Ainsi, la présente invention peut être mise en œuvre par tout solveur permettant de résoudre un problème programmé par contraintes. Pour le calcul de l’itinéraire, le solveur se base sur la ou les matrices construite(s) à l’étape 11, et sur des contraintes. Les contraintes sont prédéfinies et sont au cœur de l’invention. L’invention utilise en effet la programmation par contrainte pour résoudre la lourde tâche de trouver un itinéraire minimisant la métrique prédéterminée tout en réalisant au moins une fois chaque tâche du graphe et en partant du nœud de départ D et en arrivant au nœud d’arrivée F. En effet ce problème peut être transformé en problème connu comme « Non Polynomial Déterministe », NP et pour lequel le temps de calcul n’est pas polynomial dans le pire cas si l’on utilise un algorithme déterministe, de type génération-évaluation. Le calcul de l’itinéraire à l’étape 12 est efficace grâce aux contraintes choisies. Une contrainte est une ou plusieurs ligne(s) de code définissant un critère de résolution du problème. Le solveur est alors contraint dans sa résolution du problème par ces contraintes qu’il prend en entrée, avec la ou les matrice(s) construite(s). Lorsque le solveur cherche une solution au problème qui lui est posé, le solveur retient certains nœuds du graphe et ne retient pas certains autres nœuds. En effet, l’itinéraire calculé par le solveur ne passe pas par tous les nœuds du graphe. Les contraintes peuvent par exemple être exprimées dans le langage et outil de programmation MiniZinc ® , ou dans tout autre langage de programmation de contrainte. Les contraintes choisies seront décrites ci-après. Une première contrainte est une contrainte appelée « sous-circuit » ou « subcircuit » en anglais. Cette contrainte contraint le solveur à calculer comme itinéraire un circuit hamiltonien (ou « chemin » hamiltonien), dans un sous graphe, pour les nœuds retenus prenant la forme d’une liste de nœuds successifs et, pour chaque nœud non retenu dans l’itinéraire, à créer une entrée dans la liste pour laquelle le nœud successif du nœud non-retenu est lui-même. En effet, le solveur va chercher une solution d’une forme imposée. Cette forme est imposée par cette contrainte comme une liste de nœuds successifs, aussi appelées « successeurs ». La résolution efficace de cette contrainte est documentée dans l’état de l’art et dans les librairies des solveurs modernes. La liste de nœuds successifs peut par exemple être de la forme d’un tableau, pour lequel la valeur d’une case du tableau indique l’index, dans le tableau, du successeur. Ainsi, pour un tableau x, x [i] = j indique que le nœud j est le successeur du nœud i. Cette contrainte de « sous-circuit » impose aussi de trouver un circuit hamiltonien pour les nœuds retenus, c’est-à-dire un circuit passant par chaque nœud retenu une seule et unique fois. En cherchant à résoudre le problème, le solveur va tester plusieurs combinaisons pour obtenir l’itinéraire final. Il ne va pas retenir certaines combinaisons car leurs valeurs de métriques sont par exemple trop élevées. Lorsque, en obtenant une combinaison finale, certains nœuds ne sont pas utilisés, par exemple parce que pour la même tâche A un nœud A1 a déjà été sélectionné, les nœuds A2 et A3 ne sont pas retenus par le solveur. La contrainte « sous-circuit » impose alors que, dans la liste des successeurs créée par le solveur, le nœud A2 ait pour successeur lui-même. De la même façon, la contrainte « sous-circuit » impose que, dans la liste des successeurs créée par le solveur, le nœud A3 ait pour successeur lui-même. Ainsi, pour un tableau x, x [i] = i indique que le nœud i n’est pas dans le circuit. Une telle contrainte peut être écrite, dans le langage MiniZinc ® , de la façon suivante : constraint subcircuit(succ); avec succ la liste des successeurs. Une deuxième contrainte est une contrainte appelée « tous différents » ou « alldifferent » en anglais, contraignant le solveur à inclure dans l’itinéraire et donc dans la liste des nœuds successifs uniquement des nœuds différents. Cela permet de s’assurer que l’itinéraire trouvé ne réalise pas une boucle sans fin et que chaque point de la mission (A1, A2, A3, B1, B2, B3, …) n’est utilisé au plus qu’une fois. Les points de la mission sont les points par lesquels doit passer la mission, tandis que le graphe peut comprendre plusieurs nœuds pour lesquels il est possible de réaliser un même point de la mission. Une telle contrainte peut être écrite, dans le langage MiniZinc ® , de la façon suivante : constraint alldifferent(succ); avec succ la liste des successeurs. Une troisième contrainte est une contrainte contraignant le solveur à trouver un itinéraire passant au moins une fois par chaque tâche. Une telle contrainte peut être écrite, dans le langage MiniZinc ® , de la façon suivante : constraint forall(obs in obs_unique_list)( exists(i in 3..nb_waypoints) (is_used[i] /\ obs_list[i] == obs) ); avec obs_unique_list la liste des tâches uniques, par exemple A, B et C dans le graphe de la , avec /\ l’opérateur « ET », avec nb_waypoints le nombre de nœuds total, utilisables par le solveur, avec is_used une liste indiquant si le nœud associé est utilisé dans l’itinéraire final trouvé par le solveur, avec obs_list la liste de toutes les taches, qui doivent donc être réalisées dans l’itinéraire final par le solveur. Pour accélérer la recherche de solution, une technique dite de « réification » est utilisée ici. Pour cela, la variable booléenne supplémentaire « is_used » pour « est utilisé », associée à chaque nœud que le solveur doit trouver, est ajoutée. Cette contrainte indique que, si « is_used » est faux, alors le successeur du nœud est lui-même. La contrainte recherche ici à partir du troisième indice de la liste « obs_unique_list » car les indices 1 et 2 sont ceux des points de départ et d’arrivée qui ne font pas partie d’un groupe de nœuds associés à une observation. Une quatrième contrainte est une contrainte contraignant le solveur à trouver un itinéraire passant au moins par le nœud de départ et par le nœud d’arrivée. Une telle contrainte peut être écrite, dans le langage MiniZinc®, de la façon suivante : constraint succ[end_id] == start_id; Une fonction de minimisation aussi appelée « cout objectif » contraint le solveur à minimiser itérativement la somme des valeurs de métrique entre les nœuds retenus pour l’itinéraire. Ceci constitue la boucle principale d’un algorithme de séparation-évaluation implanté dans la plupart des solveurs modernes, comme MiniZinc ® ou GeCode ® . Le calcul de cette somme peut être écrite, dans le langage MiniZinc ® , de la façon suivante : Lorsque la métrique est la distance : constraint distance_sum = sum(i in 1..nb_waypoints) (dist_matrix[i, succ[i]]); avec distance_sum la somme des distances, avec sum une fonction de somme, avec nb_waypoints le nombre de nœuds retenus, avec dist_matrix la matrice de métriques, avec succ la liste des successeurs. Lorsque la métrique est le temps : constraint time_sum = sum(i in 1..nb_waypoints) (time_matrix[i, succ[i]]);. Avec time_sum la somme des temps, avec sum une fonction de somme, avec nb_waypoints le nombre de nœuds retenus, avec time_matrix la matrice de métriques, avec succ la liste des successeurs. Dans un mode de réalisation préférentiel, chaque nœud d’un groupe de nœuds de la pluralité de nœuds du graphe correspond à une même tâche, et l’étape 12 de calcul de l’itinéraire prend en compte une contrainte contraignant le solveur à obtenir un itinéraire comprenant au moins un nœud de chaque groupe de nœuds correspondant à une même tâche. La variable « is_used » de la troisième contrainte peut alors être utilisée pour vérifier qu’une moins un nœud de chaque groupe est utilisé. Dans un mode de réalisation préférentiel compatible avec les modes de réalisation précédemment décrits, une contrainte supplémentaire est utilisée. Cette contrainte est une contrainte d’évaluation inverse contraignant le solveur à évaluer la liste des nœuds successifs en ordre inverse. On entend par « évaluer la liste des nœuds successifs » le fait pour le solveur de remplir la liste des nœuds successifs. Un ordre inverse est un ordre dans lequel le solveur remplit la liste en commençant par la fin de la liste pour arriver au début de la liste en dernier. Une telle contrainte peut être écrite, dans le langage MiniZinc ® , de la façon suivante : constraint succ_inv = reverse(succ); avec succ la liste des successeurs, et reverse une fonction d’inversement de tableau. Cette contrainte a pour but d’orienter la recherche du solveur et d’accélérer la recherche Pour mettre en œuvre l’invention, il est demandé au solveur de calculer un itinéraire minimisant au moins une métrique. En langage MiniZinc ® , pour une minimisation de distance, et avec une liste des successeurs inversée succ_inv et une recherche sur des entiers, cette demande est formalisée comme suit : solve :: int_search(succ_inv, input_order, indomain_max, complete) minimize distance_sum; avec input_order une indication de suivre l’ordre de la liste des successeurs, indomain_max l’indication d’assigner à une variable sa valeur maximale dans le domaine de recherche, complete une indication de réaliser une recherche exhaustive, et distance_sum la somme des distances entre les noeuds de l’itinéraire. L’invention permet de trouver un itinéraire, c’est-à-dire une séquence de points de navigation, passant au moins une fois par chaque tâche souhaitée, c’est-à-dire permettant au véhicule autonome de réaliser au moins une fois chaque tâche lors de son itinéraire, tout en se déplaçant d’un point de départ D vers un points d’arrivée F en ayant un itinéraire avec une valeur de métrique minimisée. Cet itinéraire trouvé, sous la forme d’une liste de points de navigation successeurs, est ensuite planifié dans le véhicule autonome à une étape 13. Cette planification comprend la configuration du véhicule autonome directement par l’ordinateur qui met en œuvre le procédé selon l’invention et qui est capable de communiquer, par exemple à travers un réseau, avec le véhicule autonome. La configuration du véhicule autonome a été décrite précédemment. Alternativement, l’ordinateur qui met en œuvre le procédé est embarqué dans le véhicule autonome. Ceci permet au véhicule, incluant alors l’invention, de trouver lui-même l’itinéraire à suivre, sans être connecté au réseau, à partir du moment où il a récupéré le graphe des routes et les positions des objectifs de sa mission. Pour utiliser l’invention, un opérateur peut utiliser une interface homme-machine telle que celle représentée à la . L’interface homme-machine représentée à la est par exemple un écran, affichant une carte géographique sur laquelle sont superposés des points. Ces points géographiques sont représentés dans un graphe par des nœuds, et les chemins entre ces points sont des arrêtes du graphe. Un opérateur peut alors sélectionner, dans l’interface homme-machine, une métrique à minimiser, un ensemble de tâches à réaliser en sélectionnant par exemple les tâches A, B et C, et les points de départ et d’arrivée, par exemple les points D et F respectivement. Un ordinateur va alors mettre en œuvre le procédé selon l’invention pour calculer un itinéraire optimal et pour planifier l’itinéraire dans un véhicule autonome. Procédé (1) de planification de déplacement d’un véhicule dans un graphe (G), le graphe (G) comprenant une pluralité de nœuds (A1,…,A3, B1,…,B5, C1,…,C4), chaque nœud de la pluralité de nœuds (A1,…,A3, B1,…,B5, C1,…,C4) ayant une position géographique, au moins un des nœuds de la pluralité de nœuds (A1,…,A3, B1,…,B5, C1,…,C4) étant associé à une tâche (A, B, C) à réaliser par le véhicule, la pluralité de nœuds (A1,…,A3, B1,…,B5, C1,…,C4) comprenant un nœud de départ (D) et un nœud d’arrivée (F), le procédé (1) de planification comprenant au moins les étapes de : Construction (11) d’au moins une matrice à partir du graphe (G), la matrice comprenant, pour chaque nœud de la pluralité de nœuds (A1,…,A3, B1,…,B5, C1,…,C4) du graphe (G), une valeur d’une métrique prédéterminée pour chaque autre nœud de la pluralité de nœuds (A1,…,A3, B1,…,B5, C1,…,C4), Calcul (12) d’un itinéraire par un solveur, le solveur retenant dans l’itinéraire des nœuds retenus parmi la pluralité de nœuds du graphe (A1,…,A3, B1,…,B5, C1,…,C4), le calcul étant réalisé à partir de la matrice et d’une pluralité de contraintes comprenant au moins : une première contrainte contraignant le solveur à calculer comme itinéraire un chemin hamiltonien pour les nœuds retenus prenant la forme d’une liste de nœuds successifs et, pour chaque nœud non-retenu dans l’itinéraire, à créer une entrée dans la liste pour laquelle le nœud successif du nœud non-retenu est lui-même, une deuxième contrainte contraignant le solveur à retenir dans l’itinéraire uniquement des nœuds différents, une troisième contrainte contraignant le solveur à trouver un itinéraire passant au moins une fois par un nœud associé à chaque tâche (A, B, C), et passant par le nœud de départ (D) et par le nœud d’arrivée (F), une fonction de minimisation contraignant le solveur à minimiser la somme des valeurs de métrique entre les nœuds retenus pour l’itinéraire. Planification (13) du déplacement du véhicule selon l’itinéraire calculé. Procédé (1) selon la revendication précédente selon lequel la métrique entre deux nœuds de la pluralité de nœuds est choisie parmi : une distance entre les positions géographiques des deux nœuds, une durée de parcours entre les positions géographiques des deux nœuds, une consommation du véhicule entre les positions géographiques des deux nœuds, un dénivelé entre les positions géographiques des deux nœuds. Procédé (1) selon l’une quelconque des revendications précédentes selon lequel la planification du déplacement du véhicule comprend la configuration (13) du véhicule avec l’itinéraire calculé. Procédé (1) selon l’une quelconque des revendications précédentes selon lequel la construction de la matrice à partir du graphe (G) comprend, en partant de chaque nœud du graphe (G), un parcours de l’ensemble du graphe (G) de proche en proche, en triant les positions à considérer selon la valeur de métrique totale, sans critère d’arrêt. Procédé (1) selon l’une quelconque des revendications précédentes selon lequel chaque tache (A, B, C) à réaliser est associée à un ou plusieurs nœuds de la pluralité de nœuds (A1,…,A3, B1,…,B5, C1,…,C4), et selon lequel le calcul de l’itinéraire prend en compte une contrainte contraignant le solveur à obtenir un itinéraire comprenant au moins un nœud associé à chaque tâche (A, B, C) à réaliser. Procédé (1) selon l’une quelconque des revendications précédentes selon lequel la pluralité de contraintes pour le calcul de l’itinéraire comprend en outre une contrainte d’évaluation inverse contraignant le solveur à évaluer les nœuds successifs en ordre inverse. Procédé (1) selon l’une quelconque des revendications précédentes selon lequel les valeurs de la matrice sont des entiers. Procédé (1) selon l’une quelconque des revendications précédentes selon lequel les tâches sont choisies parmi des observations, une livraison ou une récupération d’un objet, ou des ravitaillements en énergie ou en carburant. Procédé (1) selon l’une quelconque des revendications précédentes selon lequel le graphe (G) représente des routes d’une zone géographique et les nœuds sont les carrefours dans cette zone. Véhicule autonome configuré pour se déplacer selon l’itinéraire planifié par le procédé (1) selon l’une quelconque des revendications précédentes. Produit programme d'ordinateur comprenant des instructions qui, lorsque le programme est exécuté par un ordinateur, conduisent celui-ci à mettre en œuvre le procédé selon l’une quelconque des revendications 1 à 9. Support d'enregistrement lisible par ordinateur comprenant des instructions qui, lorsqu'elles sont exécutées par un ordinateur, conduisent celui-ci à mettre en œuvre le procédé selon l’une quelconque des revendications 1 à 9.