FR 3035961 A1 20161111 FR 1553991 A 20150504 1 La présente invention concerne un procédé de commande d'un déplacement d'un agent navigant dans un environnement organisé en un réseau de noeuds et de liens entre les noeuds pour un guidage de l'agent navigant entre un point de départ et un point d'arrivée de ce réseau. Elle s'applique notamment pour la commande d'un automate, par exemple un robot, se déplaçant physiquement dans un environnement bi- ou tridimensionnel dans lequel un trajet le plus efficace possible, au sens d'une fonction de coût librement choisie, est recherché entre le point de départ et le point d'arrivée. Elle s'applique également pour la transmission d'un paquet de données numériques dans un réseau de transmission de données, entre un émetteur et un destinataire de ce paquet de données. Elle s'applique également pour la transmission d'une requête dans une base de données sémantique, entre un émetteur et un destinataire de cette requête. Un procédé bien connu et fondamental pour résoudre ce type de problématique, selon laquelle un trajet optimal est recherché dans un réseau, est la mise en oeuvre de l'algorithme de Dijkstra lorsque l'on connaît le coût de traversée de tout lien entre deux noeuds du réseau. Un autre procédé connu, optimisant l'algorithme de Dijkstra lorsque l'on connaît en outre la direction du point d'arrivée à partir du point de départ, est la mise en oeuvre de l'algorithme A* (ou D* pour une version « dynamique » de A*). Ces algorithmes son efficaces et optimaux, mais uniquement lorsque le réseau peut être dans sa totalité représenté par un graphe orienté. C'est le cas lorsque tous les noeuds et liens du réseau sont connus, c'est-à-dire qu'ils ont déjà été explorés et n'ont pas évolué, et lorsqu'en outre le réseau est de dimension raisonnable de sorte que tous les paramètres portant sur ses noeuds et liens peuvent être stockés. Lorsque les coûts de traversées de certains liens évoluent, bien que les noeuds restent connus dans leur totalité, des solutions existent telles que la solution appelée « D* Lite » proposée dans l'article de Koenig et al, intitulé « Fast replanning for navigation in unknown terrain », publié dans IEEE Transactions on Robotics, vol. 21, n° 3, pages 354-363, en Juin 2005. Il existe cependant de nombreux cas réels dans lesquels il peut être souhaité de commander le déplacement d'un agent navigant dans un environnement organisé en un réseau de noeuds et de liens entre les noeuds partiellement représenté par un graphe orienté, chaque sommet et arête du graphe orienté correspondant respectivement à un noeud et à une orientation d'un lien du réseau, le graphe orienté comportant initialement une pluralité de sommets, appelés « sommets de frontière », 3035961 2 à partir de chacun desquels au moins une arête se dirige vers une partie inconnue du réseau non représentée par le graphe orienté. Dans ces nombreux cas où le réseau n'est pas totalement connu, les algorithmes de Dijkstra et A* (ou D*) ne sont pas optimaux parce qu'ils ne proposent qu'une planification de trajet dans la partie 5 connue du réseau, suivie d'une navigation conforme à cette planification, sans phase exploratoire de la partie inconnue du réseau. Dans ces cas également, la solution D* Lite peut ne pas fonctionner lorsque, outre certains liens, des noeuds du réseau peuvent ne pas être connus. Dans ces cas, des procédés combinant planification, navigation et exploration 10 de l'environnement dans lequel évolue l'agent navigant sont mieux adaptés. Par exemple, l'article de Argamon-Engelson et al, intitulé « Utility-based on-une exploration for repeated navigation in an embedded graph », publié dans Artificial Intelligence, vol. 101, n° 1-2, pages 267-284, en rrai 1998, propose un compromis entre planification/navigation et exploration dans un graphe orienté incomplet. Mais 15 cette solution, appelée « EWP » par ses auteurs, nécessite plusieurs allers-retours entre le sommet de départ et le sommet d'arrivée pour une recherche incrémentale du trajet optimal. Elle est coûteuse et n'est intéressante que lorsqu'un trajet doit être optimisé en vue d'être emprunté un grand nombre de fois. Par ailleurs, cette solution ne tire pas profit d'une méthodologie par évaluation heuristique dans sa recherche 20 progressive de trajet au cours de la phase de planification, ce qui fait tout l'intérêt des algorithmes tels que A*, D* et D* Lite. En fait, une évaluation heuristique globale est bien considérée, mais pas lors de la traversée progressive du graphe. De plus, la solution EWP n'indique pas clairement quelle méthode est employée lors de cette traversée de graphe et suppose que tous les raccourcis possibles utilisant la partie 25 inconnue sont malgré tout connus à l'avance, seule leur coût restant inconnu. Enfin, la phase exploratoire de cette solution nécessite qu'une destination soit prévue à l'avance, par exemple un autre sommet de frontière que celui à partir duquel l'exploration démarre, sans qu'il ne soit prévu de l'arrêter avant si un autre sommet connu du graphe est rencontré entre temps. 30 L'invention s'applique plus particulièrement à un procédé du type précité, lorsque le réseau n'est que partiellement représenté par un graphe orienté, comportant un guidage de l'agent navigant dans son déplacement, entre un sommet de départ et un sommet d'arrivée dans le graphe orienté, par exécution d'au moins une itération des étapes successives suivantes : 3035961 3 planification d'un trajet dans le graphe orienté, entre un sommet où se trouve l'agent navigant et le sommet d'arrivée ou un sommet de frontière, par exécution d'un algorithme de recherche de trajet sur la base d'une première évaluation heuristique de coût calculée sur des sommets du 5 graphe orienté et sur la base d'une recherche de trajet par croissance progressive du coût, commande d'une navigation de l'agent navigant entre l'endroit où il se trouve et le sommet d'arrivée ou le sommet de frontière retourné par l'étape de planification, et 10 suite à la navigation et si c'est un sommet de frontière différent du sommet d'arrivée qui est fourni par l'étape de planification, commande d'une exploration dans la partie inconnue du réseau avec enrichissement du graphe orienté par l'ajout du ou des sommet(s) et arête(s) exploré(s). Un tel procédé, appelé PHA* par ses auteurs, est divulgué dans l'article de 15 Felner et al, intitulé « PHA*: finding the shortest path with A* in an unknown physical environment », publié dans Journal of Artificial Intelligence Research, vol. 21, pages 631-670, en juin 2004. Mais là encore, la solution proposée est coûteuse en termes de navigation de l'agent navigant dans son environnement, parce que la priorité est donnée à 20 l'exploration des parties inconnues du réseau dès qu'un sommet de frontière est rencontré en cours de planification, de manière à chercher un trajet optimal entre le sommet de départ et le sommet d'arrivée, quel qu'en soit le coût exploratoire. D'ailleurs, la phase exploratoire continue, même lorsque le sommet d'arrivée est éventuellement atteint, tant que le trajet optimal n'est pas trouvé de façon certaine. 25 Cette solution, même si elle exploite avantageusement une méthodologie par évaluation heuristique dans sa recherche progressive de trajet au cours de la phase de planification, notamment l'algorithme A*, reste donc intéressante seulement si le trajet optimal trouvé est destiné à être ultérieurement emprunté un grand nombre de fois. 30 Il peut ainsi être souhaité de prévoir un procédé de commande d'un déplacement d'un agent navigant qui permette de s'affranchir d'au moins une partie des problèmes et contraintes précités. Il est donc proposé un procédé de commande d'un déplacement d'un agent navigant dans un environnement organisé en un réseau de noeuds et de liens entre 35 les noeuds partiellement représenté par un graphe orienté, chaque sommet et arête 3035961 4 du graphe orienté correspondant respectivement à un noeud et à une orientation d'un lien du réseau, le graphe orienté comportant initialement une pluralité de sommets, appelés « sommets de frontière », à partir de chacun desquels au moins une arête se dirige vers une partie inconnue du réseau non représentée par le graphe orienté, le 5 procédé comportant un guidage de l'agent navigant dans son déplacement, entre un sommet de départ et un sommet d'arrivée dans le graphe orienté, par exécution d'au moins une itération des étapes successives suivantes : planification d'un trajet dans le graphe orienté, entre un sommet où se trouve l'agent navigant et le sommet d'arrivée ou un sommet de frontière, 10 par exécution d'un algorithme de recherche de trajet sur la base d'une première évaluation heuristique de coût calculée sur des sommets du graphe orienté et sur la base d'une recherche de trajet par croissance progressive du coût, commande d'une navigation de l'agent navigant entre l'endroit où il se 15 trouve et le sommet d'arrivée ou le sommet de frontière retourné par l'étape de planification, et suite à la navigation et si c'est un sommet de frontière différent du sommet d'arrivée qui est fourni par l'étape de planification, commande d'une exploration dans la partie inconnue du réseau avec enrichissement du 20 graphe orienté par l'ajout du ou des sommet(s) et arête(s) exploré(s), dans lequel l'étape de planification de chaque itération comporte, pour chaque calcul de la première évaluation heuristique de coût sur un sommet de frontière, un calcul supplémentaire d'une deuxième évaluation heuristique de risque sur ce sommet de frontière, et fournit comme destination du trajet le sommet de frontière sur lequel 25 l'évaluation heuristique de risque calculée est la plus faible dès lors que le coût dépasse cette évaluation heuristique de risque la plus faible avant que le sommet d'arrivée ne soit atteint. Ainsi, tout en tirant profit d'une méthode de planification par évaluation heuristique, il est possible grâce à l'invention, plus précisément grâce au calcul 30 supplémentaire d'une évaluation heuristique de risque en plus de l'évaluation heuristique de coût telle qu'elle peut être proposée par des algorithmes comme A*, d'introduire dans cette planification une notion de risque à effectuer une exploration en cours de navigation et de traiter automatiquement le compromis entre une poursuite de navigation en terrain connu ou une exploration en zone inconnue. De 35 cette manière, il est possible d'engager une navigation exploratoire planifiée en 3035961 5 conservant la maîtrise du coût en termes de navigation pour guider l'agent navigant de son sommet de départ à son sommet d'arrivée le plus efficacement possible. De façon optionnelle, l'étape de planification de chaque itération est exécutée sur la base d'une implémentation de l'algorithme A* dans laquelle la première 5 évaluation heuristique de coût est définie, pour chaque sommet considéré du graphe orienté sur lequel elle est calculée, comme la somme d'un coût minimal pour se rendre du sommet où se trouve l'agent navigant au sommet considéré en naviguant dans le graphe orienté et d'une estimation heuristique de coût minimal pour se rendre du sommet considéré au sommet d'arrivée. 10 De façon optionnelle également, l'estimation heuristique de coût minimal est une distance exprimée à l'aide de la norme euclidienne entre le sommet considéré et le sommet d'arrivée. De façon optionnelle également, la deuxième évaluation heuristique de risque est définie, pour chaque sommet de frontière considéré du graphe orienté sur lequel 15 elle est calculée, comme la somme d'un coût minimal pour se rendre du sommet où se trouve l'agent navigant au sommet de frontière considéré en naviguant dans le graphe orienté et d'une estimation heuristique de coût surestimé pour se rendre du sommet de frontière considéré au sommet d'arrivée. De façon optionnelle également, l'estimation heuristique de coût surestimé 20 correspond à l'estimation heuristique de coût minimal pondérée par un coefficient multiplicatif supérieur ou égal à « 1 ». De façon optionnelle également, le coefficient multiplicatif est variable en cours de navigation ou entre deux étapes de navigations. De façon optionnelle également, l'estimation heuristique de coût surestimé est 25 en outre pondérée par un coefficient multiplicatif supplémentaire défini sur la base d'une valeur angulaire exprimée par rapport à la direction de référence d'un axe reliant le sommet de frontière considéré au sommet d'arrivée, ce coefficient multiplicatif supplémentaire étant plus précisément défini de manière à pénaliser toute navigation dans une direction s'éloignant de la direction de référence. 30 De façon optionnelle également, au moins une règle sémantique définie en fonction des besoins applicatifs est introduite dans la deuxième évaluation heuristique de risque. De façon optionnelle également, l'étape d'exploration de chaque itération se poursuit jusqu'à ce qu'un sommet quelconque du graphe orienté soit de nouveau 35 atteint. 3035961 6 De façon optionnelle également, lesdites étapes successives sont répétées jusqu'à ce que le sommet d'arrivée soit atteint ou que l'étape de planification soit bloquée au sommet où se trouve l'agent navigant. Il est également proposé un programme d'ordinateur téléchargeable depuis un 5 réseau de communication et/ou enregistré sur un support lisible par ordinateur et/ou exécutable par un processeur, comprenant des instructions pour l'exécution des étapes d'un procédé de commande d'un déplacement d'un agent navigant selon l'invention, lorsque ledit programme est exécuté par un processeur. Il est également proposé un système de commande d'un déplacement d'un 10 agent navigant dans un environnement organisé en un réseau de noeuds et de liens entre les noeuds partiellement représenté par un graphe orienté, chaque sommet et arête du graphe orienté correspondant respectivement à un noeud et à une orientation d'un lien du réseau, le graphe orienté comportant initialement une pluralité de sommets, appelés « sommets de frontière », à partir de chacun desquels au 15 moins une arête se dirige vers une partie inconnue du réseau non représentée par le graphe orienté, le système comportant un processeur de guidage programmé pour l'exécution des étapes d'un procédé de commande d'un déplacement d'un agent navigant selon l'invention. L'invention sera mieux comprise à l'aide de la description qui va suivre, 20 donnée uniquement à titre d'exemple et faite en se référant aux dessins annexés dans lesquels : la figure 1 représente schématiquement un exemple d'environnement organisé en un réseau de noeuds et de liens entre ces noeuds partiellement représenté par un graphe orienté, 25 la figure 2 représente schématiquement la structure générale d'un système de commande d'un déplacement d'un agent navigant, selon un mode de réalisation de l'invention, les figures 3 et 4 illustrent les étapes successives d'un procédé mis en oeuvre par le système de la figure 1, selon un mode de réalisation de 30 l'invention, et les figures 5A, 5B et 50 illustrent différents résultats avec ou sans application du procédé des figures 3 et 4, sur un cas de trajet suivi par un agent navigant dans un environnement représenté par une matrice de pixels. 3035961 7 L'environnement représenté sur la figure 1 est un exemple d'environnement organisé en un réseau 10 de noeuds et de liens entre les noeuds partiellement représenté par un graphe orienté. On notera que ce réseau 10 est tout à fait quelconque, que ce soit en termes de disposition des noeuds les uns par rapport aux 5 autres ou de nombre de liens par noeud. Par exemple, bien que cela ne soit pas illustré sur la figure 1, des liens du réseau 10 pourraient se croiser. Dans un certain nombre d'applications assez répandues, le réseau 10 pourrait être organisé en une matrice régulière de pixels reliés les uns aux autres selon un voisinage de huit pixels voisins par pixel. 10 Une partie du réseau 10 est connue, par exemple parce qu'elle a fait l'objet d'une exploration préalable, et est représentée en traits pleins, à la fois pour les noeuds, qui correspondent aux sommets du graphe orienté, et pour les liens, qui correspondent aux arêtes du graphe orienté. Plus précisément, chaque lien bidirectionnel connu du réseau 10 peut être potentiellement représenté par deux 15 arêtes du graphe orienté, l'une orientée dans un sens et l'autre en sens inverse. Chaque arête du graphe est associée à un coût de traversée. Une autre partie du réseau 10, référencée U et non représentée par le graphe orienté, est inconnue. Elle est représentée en traits pointillés, à la fois pour les noeuds et pour les liens, qui n'ont pas de correspondance dans le graphe orienté. 20 Une partie des sommets du graphe orienté, hachurés sur la figure 1, ont un statut particulier. Il s'agit des sommets à partir de chacun desquels au moins une arête se dirige vers ou provient de la partie inconnue U du réseau 10 et est donc elle-même inconnue. Chacun de ces sommets sera qualifié dans la suite de « sommet de frontière ». 25 Enfin, deux sommets du graphe orienté, en noir sur la figure 1, représentent respectivement un sommet de départ 12 et un sommet d'arrivée 14 relatifs au déplacement d'un agent navigant 16 dans l'environnement organisé selon le réseau 10. Conformément aux procédés de planification et navigation sans exploration 30 connus, tels que l'algorithme de Dijkstra, A* ou D*, un trajet optimal A serait recherché dans la partie connue du réseau 10, c'est-à-dire celle représentée par le graphe orienté. Il est illustré en flèches à traits pleins sur la figure 1. On notera d'ailleurs que, bien que cela ne soit pas illustré sur la figure 1, le graphe orienté représentant partiellement le réseau 10 pourrait comporter des sous-graphes orientés 35 non connectés entre eux. En particulier, le sommet de départ 12 et le sommet 3035961 8 d'arrivée 14 pourraient faire partie de sous-graphes disjoints de sorte qu'un trajet A ne pourrait pas être trouvé en opérant une recherche uniquement dans la partie connue du réseau 10. Conformément à un système/procédé de commande d'un déplacement de 5 l'agent navigant 16 par planification et navigation exploratoire selon l'invention tel que celui qui va être détaillé en références aux figures 2 à 4, un trajet B plus intéressant parce que moins coûteux que le trajet A peut être trouvé, moyennant un passage dans la partie inconnue U, par exploration à partir de l'un (noté F) des sommets de frontière. Il est illustré en flèches à traits pointillés sur la figure 1. En particulier, dans 10 le cas non illustré où le sommet de départ 12 et le sommet d'arrivée 14, bien qu'accessibles l'un pour l'autre dans le réseau 10, font initialement partie de sous-graphes disjoints, un système/procédé de commande d'un déplacement de l'agent navigant 16 selon l'invention permet de trouver un trajet moyennant nécessairement au moins une phase exploratoire. 15 Le système 20 de commande du déplacement de l'agent navigant 16 tel que représenté schématiquement sur la figure 2 comporte une unité de traitement 22 associée de façon classique à une mémoire 24 (par exemple une mémoire RAM). Cette mémoire 24 stocke par exemple notamment les paramètres permettant de définir le graphe orienté qui représente partiellement le réseau 10. 20 L'unité de traitement 22 peut être mise en oeuvre dans un dispositif informatique tel qu'un ordinateur classique comportant un processeur associé à une ou plusieurs mémoires pour le stockage de fichiers de données et de programmes d'ordinateurs. L'unité de traitement 22 peut alors elle-même être considérée comme formée d'un processeur 26 de guidage de l'agent navigant 16 associé à une mémoire 25 28 de stockage des instructions qu'il exécute sous forme de programmes d'ordinateurs. Parmi ces programmes d'ordinateur, un premier programme 30 est par exemple conçu pour l'exécution d'une planification de trajet conforme aux étapes de procédé qui seront détaillées en référence à la figure 3, un deuxième programme 32 30 est conçu pour l'exécution d'une navigation conforme aux étapes de procédé qui seront détaillées en référence à la figure 4 et un troisième programme 34 est conçu pour l'exécution d'une exploration conforme à ces mêmes étapes de procédé de la figure 4. L'unité de traitement 22 telle qu'illustrée sur la figure 2 comporte ainsi 35 fonctionnellement trois programmes d'ordinateurs ou trois fonctions d'un même 3035961 9 programme d'ordinateur. On notera en effet que les programmes d'ordinateurs 30, 32, 34 sont présentés comme distincts, mais cette distinction est purement fonctionnelle. Ils pourraient tout aussi bien être regroupés selon toutes les combinaisons possibles en un ou plusieurs logiciels. Leurs fonctions pourraient aussi 5 être au moins en partie micro programmées ou micro câblées dans des circuits intégrés dédiés. Ainsi, en variante, le dispositif informatique mettant en oeuvre l'unité de traitement 22 pourrait être remplacé par un dispositif électronique composé uniquement de circuits numériques (sans programme d'ordinateur) pour la réalisation des mêmes actions. 10 Selon une variante de réalisation possible, le système de commande 20 est autonome et distant de l'agent navigant 16. Il comporte ainsi une interface 36 de télécommunication avec cet agent navigant 16, gérée par le processeur de guidage 26. Selon une autre variante de réalisation possible, le système de commande 20 15 pourrait être embarqué dans l'agent navigant 16. Un procédé de commande du déplacement de l'agent navigant 16 mis en oeuvre par le système 20, par exemple dans l'environnement illustré sur la figure 1, du sommet de départ 12 au sommet d'arrivée 14, va maintenant être détaillé. Il comporte le guidage de l'agent navigant 16 par exécution d'au moins une itération 20 d'une succession d'étapes présentant une phase de planification 100 et une phase de navigation 300 éventuellement suivie d'une phase exploratoire 400. Un exemple non limitatif de réalisation de la phase de planification 100 est illustré sur la figure 3. Il est basé sur un perfectionnement de l'algorithme A* et est réalisé par exécution des instructions du programme d'ordinateur 30. Lors de 25 l'exécution de cette phase de planification 100 à l'occasion d'une n-ième itération, l'agent navigant 16 se trouve sur un sommet courant 0(n) quelconque du graphe orienté, plus précisément le sommet de départ 12 s'il s'agit de la première itération. L'objectif de la phase de planification 100 de la n-ième itération est de déterminer un sommet de destination T(n) dans le graphe orienté et un trajet pour s'y rendre en 30 empruntant des arêtes et sommets du graphe orienté. Cette destination est soit finale s'il s'agit du sommet d'arrivée 14, soit intermédiaire et dans ce cas il s'agit, comme cela sera montré ci-après, de l'un des sommets de frontière du graphe orienté. Pour réaliser cette planification 100 de destination et de trajet, une première évaluation heuristique de coût ô(X) est définie, pour chaque sommet X considéré du 35 graphe orienté sur lequel elle est calculable, à titre d'exemple non limitatif comme la 3035961 10 somme d'un coût minimal pour se rendre du sommet courant 0(n) au sommet X considéré en naviguant dans le graphe orienté, ce coût minimal étant noté D[0(n),X], et d'une estimation heuristique de coût minimal pour se rendre du sommet X considéré au sommet d'arrivée 14, notée H(X). Cette première évaluation heuristique 5 de coût ô(X) n'est en pratique calculée que pour certains sommets du graphe orienté, ceux qui sont sollicités sur la base d'une recherche de trajet par croissance progressive du coût ô(X), comme cela sera détaillé ci-après. Le coût minimal D[0(n),X] est par exemple celui d'un chemin admissible pour se rendre de 0(n) à X, un chemin étant défini comme admissible s'il n'existe pas de 10 chemin plus court dans le graphe orienté pour se rendre de 0(n) à X. En particulier, D[0(n),X] = .0 s'il n'existe pas de chemin dans le graphe pour se rendre de 0(n) à X. Conformément aux exigences de l'algorithme A*, l'estimation heuristique de coût minimal H(X) est elle aussi admissible, ce qui signifie qu'elle ne doit jamais surestimer les coûts de navigation. Un exemple simple pour H(X) est de la définir 15 comme une distance exprimée à l'aide de la norme euclidienne entre le sommet X considéré et le sommet d'arrivée 14 puisqu'aucun coût de navigation ne peut être inférieur à une telle distance qui représente une navigation à vol d'oiseau. Pour réaliser la planification de destination et de trajet, une deuxième évaluation heuristique de risque R(Z) est définie, mais uniquement pour chaque 20 sommet de frontière Z considéré du graphe orienté sur lequel elle est calculable, d'une façon générale de manière à être supérieure ou égale à la première évaluation heuristique de coût en Z, i.e. ô(Z). Elle est par exemple plus précisément définie, à titre d'exemple non limitatif comme la somme d'un coût minimal D[0(n),Z] pour se rendre du sommet courant 0(n) au sommet de frontière Z considéré en naviguant 25 dans le graphe orienté et d'une estimation heuristique de coût surestimé pour se rendre du sommet de frontière Z considéré au sommet d'arrivée 14. Cette estimation heuristique de coût surestimé est notée H'(Z). Cette deuxième évaluation heuristique de risque R(Z) n'est en pratique également calculée que pour certains sommets de frontière du graphe orienté, ceux qui sont sollicités sur la base de la recherche 30 précitée de trajet par croissance progressive du coût ô(X), comme cela sera détaillé ci-après. Le coût minimal D[0(n),Z] est défini pour Z de la même façon que pour tout sommet X du graphe orienté. Quant à l'estimation heuristique de coût surestimé H'(Z), elle peut être définie à partir de l'estimation heuristique de coût minimal H(Z) 35 avec l'application d'au moins un coefficient additif ou multiplicatif de risque, de telle 3035961 11 sorte qu'elle vérifie H'(Z) H(Z) de manière à assurer l'inégalité R(Z) ô(Z). En particulier, dans l'exemple d'au moins un coefficient multiplicatif de risque, on peut définir H'(Z) de la façon suivante : H' (Z) = a - (1 - fl - cos0) - H (Z), où a est un coefficient multiplicatif supérieur ou égal à « 1 » et (1 - p.cose) est un 5 coefficient multiplicatif supplémentaire défini sur la base d'une valeur angulaire e, exprimée par rapport à la direction de référence d'un axe reliant le sommet de frontière considéré Z au sommet d'arrivée 14, et d'un coefficient de pondération p inférieur ou égal à « 1 ». Avantageusement, la valeur angulaire e, exprime l'orientation de l'arête 10 partant du sommet de frontière Z courant la plus proche de la direction de référence et c'est cette arête qui sera de préférence choisie pour démarrer une exploration si le sommet de frontière Z est retenu comme destination de la phase de planification. Ainsi, le coefficient multiplicatif (1 - p.cose) est défini de manière à pénaliser toute navigation exploratoire dans une direction s'éloignant de la direction de référence. 15 On notera que l'évaluation heuristique de risque R(Z) peut être librement adaptée pour obéir à une ou plusieurs règles sémantiques de plus haut niveau pouvant être définies en fonction des besoins applicatifs. Par exemple, le coefficient multiplicatif a, ou plus généralement la fonction R(Z), peut être variable au cours d'une phase de navigation ou entre deux phases de navigation de manière à réduire 20 (a plus grand) ou augmenter (a plus petit) les prises de risques, notamment en fonction de ressources épuisables de l'agent navigant 16, ou parce qu'il est décidé de limiter les prises de risques à chaque nouvelle itération, etc. De même, s'il est connu au moins un point de recharge en ressources pour l'agent navigant 16, qu'il soit précisément identifié en partie connue du réseau 10 ou supposé en partie inconnue 25 U, il peut être souhaité d'adapter l'évaluation heuristique de risque R(Z) pour augmenter l'incitation à passer par ce point de recharge. De même, une règle d'auto-évaluation de la stratégie exploratoire de l'agent navigant 16 peut être ajoutée en mesurant par exemple en temps réel l'énergie dépensée en cours de navigation exploratoire par rapport à ce qui aurait été dépensé en planification/navigation seule 30 (en particulier par simple exécution de l'algorithme A*), de manière à adapter l'évaluation heuristique de risque R(Z), notamment en influant sur la valeur du coefficient multiplicatif a, en fonction des performances réalisées. D'autres règles sémantiques susceptibles d'influer sur l'évaluation heuristique de risque R(Z), telles que par exemple des connaissances plus ou moins précises sur des facilités ou 3035961 12 obstacles dans les parties connue et inconnue, sont envisageables et peuvent être intégrées dans cette évaluation heuristique de risque R(Z). On notera par ailleurs que d'une façon générale, l'évaluation heuristique de risque R(Z) peut être définie librement de manière à globalement surestimer la 5 somme ô(Z) = D[0(n),Z] + H(Z) et pas nécessairement H(Z) seul. Au cours d'une première étape d'initialisation 102 de la phase de planification 100, le sommet courant 0(n) sur lequel se trouve l'agent navigant 16 est placé dans une file d'attente prioritaire, appelée liste ouverte et notée Q, en association avec sa première évaluation heuristique de coût 15(0(n)). Une autre file d'attente, appelée liste 10 fermée et notée S, est définie et initialisée à l'ensemble vide. Ces deux listes, ouverte Q et fermée S, correspondent à celles qui sont utilisées de façon bien connue pour l'algorithme A*. Le sommet de destination T(n) est initialisé indifféremment à l'ensemble vide ou au sommet courant 0(n). Enfin, une valeur de coût exploratoire notée Rmin est initialisée à la valeur infinie .0. 15 Au cours d'une étape 104 suivante, le contenu de la liste ouverte Q est testé. Si elle n'est pas vide, alors le processeur 26 passe à une étape 106 de retrait de l'un des sommets de la liste ouverte Q pour le placer dans la liste fermée S. Le sommet X qui est retiré est celui, ou l'un de ceux, qui présente le coût ô(X) le plus faible. Ensuite, au cours d'une étape de test 108, la valeur de coût ô(X) du sommet X 20 sélectionné précédemment est comparée à la valeur de coût exploratoire Rmin. Si le coût ô(X) est inférieur ou égal au coût exploratoire Rmin, le processeur 26 passe à une autre étape de test 110. Au cours de l'étape de test 110, le sommet X sélectionné est comparé au sommet d'arrivée 14. Si X est différent du sommet d'arrivée 14, le processeur 26 25 passe à une autre étape de test 112. Au cours de l'étape de test 112, il est déterminé si le sommet X sélectionné est un sommet de frontière du graphe orienté. Si X est bien un sommet de frontière, le processeur 26 passe à une étape 114. Au cours de cette étape 114, l'heuristique de risque R(X) est évaluée. 30 Au cours d'une étape de test 116 suivante, le risque R(X) est comparé au coût exploratoire Rmin. S'il est strictement supérieur au coût exploratoire Rmin, le processeur 26 passe directement à une boucle 118 d'étapes 120, 122, 124, 126 exécutées pour tous les sommets T voisins du sommet X dans le graphe orienté. Sinon, le processeur 26 passe à deux étapes successives de mise à jour 128 et 130. 3035961 13 Au cours de l'étape 128, le sommet de destination T(n) devient le sommet de frontière X. Au cours de l'étape 130, le coût exploratoire R,,n est mis à jour à la valeur de R(X). L'ordre d'exécution des étapes 128 et 130 est indifférent. Elles sont suivies de la boucle 118 d'étapes 120, 122, 124, 126. 5 Le processeur 26 passe également directement à la boucle 118 d'étapes 120, 122, 124, 126 s'il est déterminé à l'étape de test 112 que le sommet X sélectionné n'est pas un sommet de frontière. Au cours de l'exécution de la boucle 118 d'étapes 120, 122, 124, 126, pour chaque voisin T du sommet X dans le graphe orienté : 10 l'heuristique de coût 15(T) est évaluée (étape 120), il est testé (étape 122) si le sommet T est déjà dans la liste fermée S et si l'heuristique de coût 15(T) évaluée à l'étape 120 est supérieure ou égale au coût associé à T dans la liste fermée S, il est testé (étape 124) si le sommet T est déjà dans la liste ouverte Q et si 15 l'heuristique de coût 15(T) évaluée à l'étape 120 est supérieure ou égale au coût associé à T dans la liste ouverte Q, et si les deux tests 122 et 124 présentent un résultat négatif, alors T est introduit dans la liste ouverte Q en association avec l'heuristique de coût 15(T) évaluée à l'étape 120. 20 En fin de boucle 118, le processeur 26 revient à l'étape de test 104. S'il est testé que la liste ouverte Q est vide à l'étape 104, le processeur 26 passe à une étape de test 132. Le processeur 26 passe également à l'étape de test 132 à l'issue de l'étape 108 si le coût ô(X) est strictement supérieur au coût exploratoire Rmin- 25 Le processeur 26 passe également à l'étape de test 132 à l'issue de l'étape 110, via une étape de mise à jour 134, si le sommet X est le sommet d'arrivée 14. Dans ce cas, le sommet de destination T(n) devient le sommet d'arrivée 14 et le coût exploratoire Rmin est mis à jour à la valeur de R(X) au cours de cette étape 134. L'étape de test 132 consiste à déterminer si le sommet de destination T(n) est 30 resté à sa valeur d'initialisation (i.e. l'ensemble vide ou le sommet courant 0(n)). Si c'est le cas, le processeur 26 passe à une étape 136 de fin de commande du déplacement de l'agent navigant 16. Arriver à cette étape 136 signifie que la planification est bloquée au sommet où se trouve l'agent navigant 16 et que le sommet d'arrivée 14 est inaccessible ou alors que l'agent navigant 16 est déjà au 35 sommet d'arrivée 14, celui-ci ayant été atteint préalablement à l'itération courante. 3035961 14 Si ce n'est pas le cas, le processeur 26 passe à une étape 138 au cours de laquelle un trajet est reconstruit depuis le sommet de destination T(n) jusqu'au sommet courant 0(n). Cette étape 138 est conforme à l'enseignement de l'algorithme A* et bien connue. Elle ne sera pas détaillée. 5 Puis au cours d'une étape finale 140, le processeur 26 fournit le sommet de destination T(n) déterminé et le trajet pour s'y rendre en empruntant des arêtes et sommets du graphe orienté. Ces informations sont nécessaires pour commencer la phase de navigation 300. Il est clair que la phase de planification 100 détaillée précédemment permet 10 de planifier une navigation entre le sommet où se trouve l'agent navigant 16 et : soit le sommet d'arrivée 14 si l'étape de test 132 est atteinte en sortie de l'étape 134, ou en sortie de l'étape 104 avec le sommet de destination T(n) égal au sommet d'arrivée 14, soit un sommet de frontière si l'étape de test 132 est atteinte en sortie de 15 l'étape 108, ou en sortie de l'étape 104 avec le sommet de destination T(n) égal à l'un des sommets de frontière du graphe orienté. En particulier, les étapes 112 et 114 imposent que pour chaque calcul de l'évaluation heuristique de coût ô(X) effectué sur un sommet de frontière, un calcul supplémentaire de l'évaluation heuristique de risque R(X) est réalisé sur ce sommet 20 de frontière et l'étape de test 108 assure alors, en combinaison avec les étapes 116, 128 et 130, que la planification 100 fournit comme destination T(n) le sommet de frontière sur lequel l'évaluation heuristique de risque R(X) calculée est la plus faible (R,,,) dès lors que le coût ô(X) dépasse cette évaluation heuristique de risque la plus faible F1,,, avant que le sommet d'arrivée 14 ne soit atteint. 25 Il est clair également que la phase de planification 100 est basée sur une recherche de trajet par croissance progressive du coût ô(X) grâce à l'étape de retrait 106 et à la gestion des listes ouverte Q et fermée S. Il est clair enfin que cette phase de planification 100, basée sur une implémentation de l'algorithme A*, pourrait aussi être basée sur un autre algorithme 30 de recherche de trajet par croissance progressive d'un coût évalué heuristiquement. En particulier, si l'on impose une estimation heuristique de coût minimal nulle pour se rendre de tout sommet considéré au sommet d'arrivée 14, cela base la phase de planification sur une implémentation de l'algorithme de Dijkstra. 3035961 15 Compte tenu du fonctionnement de la phase de planification 100 détaillée ci-dessus, le procédé plus global, référencé 200, de commande du déplacement de l'agent navigant 16 va maintenant être décrit en référence à la figure 4. Il comporte une première étape d'initialisation 202 au cours de laquelle l'indice 5 d'itération n est initialisé à « 1 » et le sommet courant 0(n) au sommet de départ 12. Au cours d'une étape 204 suivante, le sommet courant 0(n) est testé. S'il correspond au sommet d'arrivée 14, alors le processeur 26 passe à une étape 206 de fin de commande du déplacement de l'agent navigant 16 puisque ce dernier est arrivé à destination. Sinon, le processeur 26 exécute les étapes de la phase de 10 planification 100 en ayant éventuellement préalablement adapté l'évaluation heuristique de risque R(Z) au cours d'une étape optionnelle 208. Si la phase de planification 100 se termine à l'étape 136, le procédé 200 se termine alors que l'agent navigant 16 reste bloqué sans pouvoir atteindre le sommet d'arrivée 14 ou alors que l'agent navigant 16 est déjà au sommet d'arrivée 14, celui-ci 15 ayant été atteint préalablement à l'itération courante. En particulier, conformément au fonctionnement du procédé 200 avec ses phases de planification 100, navigation 300 et exploration 400, si le sommet d'arrivée 14 n'est finalement pas atteint, c'est qu'il n'existe effectivement pas de chemin du sommet de départ 12 au sommet d'arrivée 14 dans le réseau 10 et que tous les noeuds du réseau 10 atteignables depuis le 20 sommet de départ 12 ont été explorés. Si la phase de planification 100 se termine à l'étape 140, à l'issue de laquelle le sommet de destination T(n) et le trajet pour s'y rendre sont fournis, le processeur 26 démarre la phase de navigation 300 par exécution des instructions du programme d'ordinateur 32. 25 Cette phase de navigation 300 comporte une étape 302 de guidage de l'agent navigant 16 à travers le graphe orienté depuis sa position courante 0(n) jusqu'à sa destination T(n) en suivant le trajet indiqué. La destination T(n) devient alors le nouveau sommet courant 0(n+1). Elle comporte ensuite une étape 304 d'incrémentation de l'indice d'itération n 30 d'une unité, puis une étape 306 au cours de laquelle le sommet courant 0(n) REVENDICATIONS1. Procédé (200) de commande d'un déplacement d'un agent navigant (16) dans un environnement organisé en un réseau (10) de noeuds et de liens entre les noeuds partiellement représenté par un graphe orienté, chaque sommet et arête du graphe orienté correspondant respectivement à un noeud et à une orientation d'un lien du réseau, le graphe orienté comportant initialement une pluralité de sommets, appelés « sommets de frontière », à partir de chacun desquels au moins une arête se dirige vers une partie inconnue (U) du réseau non représentée par le graphe orienté, le procédé comportant un guidage de l'agent navigant (16) dans son déplacement, entre un sommet de départ (12) et un sommet d'arrivée (14) dans le graphe orienté, par exécution d'au moins une itération des étapes successives suivantes : planification (100) d'un trajet dans le graphe orienté, entre un sommet où se trouve l'agent navigant (16) et le sommet d'arrivée (14) ou un sommet de frontière (F), par exécution d'un algorithme de recherche de trajet sur la base d'une première évaluation heuristique de coût calculée (102, 120) sur des sommets du graphe orienté et sur la base d'une recherche de trajet par croissance progressive du coût (106), commande d'une navigation (300) de l'agent navigant (16) entre l'endroit où il se trouve et le sommet d'arrivée (14) ou le sommet de frontière (F) retourné par l'étape de planification (100), et suite à la navigation (300) et si c'est un sommet de frontière (F) différent du sommet d'arrivée (14) qui est fourni par l'étape de planification (100), commande d'une exploration (400) dans la partie inconnue (U) du réseau (10) avec enrichissement du graphe orienté par l'ajout du ou des sommet(s) et arête(s) exploré(s), caractérisé en ce que l'étape de planification (100) de chaque itération comporte, pour chaque calcul (102, 120) de la première évaluation heuristique de coût sur un sommet de frontière (F), un calcul supplémentaire (114) d'une deuxième évaluation heuristique de risque sur ce sommet de frontière (F), et fournit comme destination du trajet le sommet de frontière (F) sur lequel l'évaluation heuristique de risque calculée est la plus faible dès lors (108) que le coût dépasse cette évaluation heuristique de risque la plus faible avant que le sommet d'arrivée (14) ne soit atteint. 2. Procédé (200) de commande d'un déplacement d'un agent navigant (16) selon la revendication 1, dans lequel l'étape de planification (100) de chaque itération 3035961 20 est exécutée sur la base d'une implémentation de l'algorithme A* dans laquelle la première évaluation heuristique de coût est définie, pour chaque sommet considéré du graphe orienté sur lequel elle est calculée (102, 120), comme la somme d'un coût minimal pour se rendre du sommet où se trouve l'agent navigant (16) au sommet 5 considéré en naviguant dans le graphe orienté et d'une estimation heuristique de coût minimal pour se rendre du sommet considéré au sommet d'arrivée (14). 3. Procédé (200) de commande d'un déplacement d'un agent navigant (16) selon la revendication 2, dans lequel l'estimation heuristique de coût minimal est une distance exprimée à l'aide de la norme euclidienne entre le sommet considéré et le 10 sommet d'arrivée (14). 4. Procédé (200) de commande d'un déplacement d'un agent navigant (16) selon la revendication 2 ou 3, dans lequel la deuxième évaluation heuristique de risque est définie, pour chaque sommet de frontière (F) considéré du graphe orienté sur lequel elle est calculée (114), comme la somme d'un coût minimal pour se rendre 15 du sommet où se trouve l'agent navigant (16) au sommet de frontière (F) considéré en naviguant dans le graphe orienté et d'une estimation heuristique de coût surestimé pour se rendre du sommet de frontière (F) considéré au sommet d'arrivée (14). 5. Procédé (200) de commande d'un déplacement d'un agent navigant (16) selon la revendication 4, dans lequel l'estimation heuristique de coût surestimé 20 correspond à l'estimation heuristique de coût minimal pondérée par un coefficient multiplicatif supérieur ou égal à « 1 ». 6. Procédé (200) de commande d'un déplacement d'un agent navigant (16) selon la revendication 5, dans lequel le coefficient multiplicatif est variable en cours de navigation (300) ou entre deux étapes de navigations (300). 25 7. Procédé (200) de commande d'un déplacement d'un agent navigant (16) selon la revendication 5 ou 6, dans lequel l'estimation heuristique de coût surestimé est en outre pondérée par un coefficient multiplicatif supplémentaire défini sur la base d'une valeur angulaire exprimée par rapport à la direction de référence d'un axe reliant le sommet de frontière considéré au sommet d'arrivée (14), ce coefficient 30 multiplicatif supplémentaire étant plus précisément défini de manière à pénaliser toute navigation (300) dans une direction s'éloignant de la direction de référence. 8. Procédé (200) de commande d'un déplacement d'un agent navigant (16) selon l'une quelconque des revendications 1 à 7, dans lequel au moins une règle sémantique définie en fonction des besoins applicatifs est introduite dans la 35 deuxième évaluation heuristique de risque (114). 3035961 21 9. Procédé (200) de commande d'un déplacement d'un agent navigant (16) selon l'une quelconque des revendications 1 à 8, dans lequel l'étape d'exploration (400) de chaque itération se poursuit jusqu'à ce qu'un sommet quelconque du graphe orienté soit de nouveau atteint. 5 10. Procédé (200) de commande d'un déplacement d'un agent navigant (16) selon l'une quelconque des revendications 1 à 9, dans lequel lesdites étapes successives (100, 300, 400) sont répétées jusqu'à ce que le sommet d'arrivée (14) soit atteint ou que l'étape de planification (100) soit bloquée au sommet où se trouve l'agent navigant (16). 10 11. Programme d'ordinateur (30, 32, 34) téléchargeable depuis un réseau de communication et/ou enregistré sur un support lisible par ordinateur et/ou exécutable par un processeur, caractérisé en ce qu'il comprend des instructions pour l'exécution des étapes d'un procédé (200) de commande d'un déplacement d'un agent navigant (16) selon l'une quelconque des revendications 1 à 10, lorsque ledit programme (30, 15 32, 34) est exécuté par un processeur (26). 12. Système (20) de commande d'un déplacement d'un agent navigant (16) dans un environnement organisé en un réseau (10) de noeuds et de liens entre les noeuds partiellement représenté par un graphe orienté, chaque sommet et arête du graphe orienté correspondant respectivement à un noeud et à une orientation d'un 20 lien du réseau, le graphe orienté comportant initialement une pluralité de sommets, appelés « sommets de frontière », à partir de chacun desquels au moins une arête se dirige vers une partie inconnue (U) du réseau non représentée par le graphe orienté, le système comportant un processeur de guidage (22) programmé (30, 32, 34) pour l'exécution des étapes d'un procédé (200) de commande d'un déplacement d'un 25 agent navigant (16) selon l'une quelconque des revendications 1 à 10.