Cas rare mais très embêtant : pathfinder tourne en boucle
Opened this issue · 5 comments
Je pense que le path_finder n'est pas en cause. C'est l'évitement d'obstacle, couplé au navigation_manager qui créé cette situation.
- la navigation manager demande un chemin
- le path_finder génère le chemin brute (vert) qui est tout à fait praticable selon ses critères, et ensuite le lisse pour obtenir le chemin rouge
- le path_tracker reçoit ce chemin (rouge) pour suivi, cependant l’évitement d'obstacle détecte un obstacle sur le chemin et passe en évitement (le lissage a déplacé des points sur un obstacle)
- le mode évitement actuel redonne la main au navigation_manager, qui reboucle en redemandant un chemin...
Puisque la situation n'évolue pas (pas de mouvement du robot et les obstacles sont des machines), on a une boucle infinie.
A noter que cette situation est moins sujette à se produire en match réel qu'en simulation, car les machines sont rarement aussi proches
La détection d'obstacle s'effectue sur chemin lissé ?
Oui, car c'est le chemin effectivement emprunté par le robot. Ce serait potentiellement dangereux de le faire sur le chemin non lissé.
Ok, donc ça arrive uniquement quand le chemin généré est contraint de coller la machine puisque un passage de seulement une case existe et que le lissage lui, coupe sur l'obstacle, c'est ça ?
Est-ce qu'on rentre dans le cas où le navigation_manager va abort à cause d'un trop grand nombre de tentatives ?
Oui, c'est ça. Je pense que ça peut arriver plus généralement si le chemin "colle" un obstacle dans un "virage". Cela ne peut, généralement, pas arriver grâce aux dégradés, sauf dans des cas très extrêmes (Ex passer autour des dégradés génère un chemin beaucoup plus long que de coller l'obstacle).
Oui, l'issue avait été ouverte avant la mise en place de ce mécanisme de protection. Néanmoins ça reste un problème à régler à la source.