Description des packages

race_path_follower

race_node.py

Node permettant à la voiture de suivre une trajectoire définie par des points dans un fichier tracks.yaml.

Le robot démarre à partir de p0, puis navigue vers les points p1, p2, p3, etc.

Fonctionnement général

  1. Le node charge les points depuis un fichier tracks.yaml.

  2. Il récupère la trajectoire active avec active_track.

  3. Il initialise la pose du robot avec p0.

  4. Il attend que Nav2 soit prêt.

  5. Il attend que l’utilisateur tape d puis Entrer dans le terminal.

  6. Il envoie successivement chaque point objectif à Nav2 avec goToPose.

  7. En cas d’échec, il tente une récupération avec une marche arrière.

  8. Il recommence jusqu’à atteindre le nombre de tours demandé.

Paramètres ROS

Paramètre

Description

Valeur par défaut

laps

Nombre de tours à effectuer

1

max_retries

Nombre maximum d’essais de recovery par objectif

30

tracks_file

Chemin vers le fichier des trajectoires

tracks.yaml

active_track

Nom de la trajectoire à utiliser

""

Si active_track est vide, le node utilise la valeur définie dans tracks.yaml.

Remarques importantes

  • p0 est uniquement la pose initiale.

  • La voiture ne navigue que vers p1, p2, p3, etc.

  • Si un objectif échoue, le node tente une récupération puis réessaie.

  • Si le nombre maximum d’essais est atteint, le point est ignoré et le node passe au suivant.

  • Le node utilise BasicNavigator de nav2_simple_commander.

Bug present

  • Lors des transitions entre les points, la voiture fait une ligne droite le temps de calculer la nouvelle trajectoire.

  • Parfois la voiture tourne trop vite ou rentre dans un mur trop rapidement ce qui met sa position dans un mur ce qui empèche nav2 de plannifier une nouvelle trajectoire. Pour contrer le probleme on a une fonction run_recovery() qui lance l’action backup() de nav2 qui recule de 30cm (pour activer AMCL) sauf qu’elle aussi est bloquer par le même probleme (« start occupied » dans les logs). Stuck_in_angle