Étant donné que la spécification d'une position cible appropriée peut s'avérer délicate dans de nombreuses situations, l'approche suivante basée sur des cartes quadrillées d'occupation 2D peut être utile. Il est communément appelé "itération de valeur" et associé à un algorithme de planification de trajectoire simple et assez efficace (en fonction de la mise en oeuvre). En raison de sa simplicité, il est bien connu dans la robotique mobile, en particulier pour les "robots simples" naviguant dans des environnements intérieurs. Comme suggéré ci-dessus, cette approche fournit un moyen de trouver un chemin s'éloignant d'une position de départ sans spécifier explicitement une position cible comme suit. Notez qu'une position cible peut éventuellement être spécifiée, si disponible. En outre, l’approche / l’algorithme constitue une recherche en profondeur,
Dans le cas binaire, la grille d'occupation 2D est une carte pour les cellules de grille occupées et zéro ailleurs. Notez que cette valeur d'occupation peut aussi être continue dans la plage [0,1], je reviendrai sur celle ci-dessous. La valeur d'une cellule de grille donnée, g i, est V (g i ) .
La version de base
- En supposant que la cellule de grille g 0 contienne la position de départ. Définissez V (g 0 ) = 0 et mettez g 0 dans une file d'attente FIFO.
- Prenez la cellule de grille suivante, g i, de la file d'attente.
- Pour tous les voisins g j de g i :
- Si g j n'est pas occupé et n'a pas été visité précédemment:
- V (g j ) = V (g i ) +1
- Mark g j comme visité.
- Ajoutez g j à la file d'attente FIFO.
- Si un seuil de distance donné n’est pas encore atteint, continuez avec (2.), sinon continuez avec (5.).
- Le chemin est obtenu en suivant la pente la plus raide à partir de g 0 .
Notes sur l'étape 4.
- Comme indiqué ci-dessus, l'étape (4.) nécessite de garder une trace de la distance maximale parcourue, ce qui a été omis dans la description ci-dessus pour des raisons de clarté / concision.
- Si une position cible est donnée, l'itération est arrêtée dès que la position cible est atteinte, c'est-à-dire traitée / visitée dans le cadre de l'étape (3.).
- Bien entendu, il est également possible de traiter simplement l’ensemble de la grille, c’est-à-dire de continuer jusqu’à ce que toutes les cellules (gratuites) de la grille aient été traitées / visitées. Le facteur limitant est évidemment la taille de la carte quadrillée associée à sa résolution.
Extensions et autres commentaires
L'équation de mise à jour V (g j ) = V (g i ) +1 laisse beaucoup de place pour appliquer toutes sortes d'heuristiques supplémentaires en réduisant l'échelle V (g j )ou le composant additif afin de réduire la valeur de certaines options de chemin. La plupart, sinon toutes, de telles modifications peuvent être incorporées de manière simple et générique en utilisant une carte de grille avec des valeurs continues de [0,1], ce qui constitue en réalité une étape de prétraitement de la carte de base binaire initiale. Par exemple, l'ajout d'une transition de 1 à 0 le long des frontières d'un obstacle oblige l '"acteur" à rester de préférence à l'écart des obstacles. Une telle carte en grille peut, par exemple, être générée à partir de la version binaire par flou, par dilatation pondérée ou similaire. L'ajout des menaces et des ennemis en tant qu'obstacles de grand rayon flou pénalise les chemins qui s'en approchent. On peut également utiliser un processus de diffusion sur la grille globale comme ceci:
V (g j ) = (1 / (N + 1)) × [V (g j ) + somme (V (g i ))]
où " somme " fait référence à la somme sur toutes les cellules de la grille voisines. Par exemple, au lieu de créer une carte binaire, les valeurs initiales (entières) pourraient être proportionnelles à l'ampleur des menaces, et les obstacles représentent des "petites" menaces. Après avoir appliqué le processus de diffusion, les valeurs de grille doivent / doivent être mises à l'échelle à [0,1], et les cellules occupées par des obstacles, des menaces et des ennemis doivent être définies / forcées à 1. Sinon, la mise à l'échelle dans l'équation de mise à jour peut ne fonctionne pas comme souhaité.
Il y a beaucoup de variations sur ce schéma général / approche. Les obstacles, etc. peuvent avoir de petites valeurs, tandis que les cellules de grille libres ont de grandes valeurs, ce qui peut nécessiter une descente de gradient dans la dernière étape en fonction de l'objectif. Dans tous les cas, l'approche est, à mon humble avis, étonnamment polyvalente, assez facile à mettre en œuvre et potentiellement assez rapide (sous réserve de la taille / résolution de la carte en grille). Enfin, à l'instar de nombreux algorithmes de planification de chemin qui n'assument pas une position cible spécifique, il existe un risque évident de rester bloqué dans des impasses. Dans une certaine mesure, il pourrait être possible d'appliquer des étapes de post-traitement dédiées avant la dernière étape pour réduire ce risque.
Voici une autre brève description avec une illustration en Java-Script (?), Bien que l'illustration ne fonctionne pas avec mon navigateur :(
http://www.cs.ubc.ca/~poole/demos/mdp/vi.html
Vous trouverez beaucoup plus de détails sur la planification dans le livre suivant. L'itération de valeur est spécifiquement traitée dans le chapitre 2, section 2.3.1 Plans optimaux de longueur fixe.
http://planning.cs.uiuc.edu/
Espérons que cela aide, Cordialement, Derik.