Séminaire sur le Wall Follow - vaul-ulaval/vaul-wiki GitHub Wiki

Wall follow pas à pas

1. Ouvrir le devcontainer de simulation dans vscode

  1. Référez-vous au tutoriel pour ouvrir la simulation.
  2. Le code que vous aurez à modifier aujourd’hui se trouve dans tutorial.py.
  3. La présentation power point expliquant le lidar et le PID est ici.

2. Ouvrir le layout Foxglove

  1. Téléchargez le layout : foxglove_layout_autodrive.json
  2. Ouvrez-le dans Foxglove avec l’option Import from file...

3. Lancer l’algorithme Wall-Follow et visualiser les rayons du lidar

  1. Dans le terminal du devcontainer, exécutez :
   ros2 run seminar3 wall_follow_node
  1. Dans Foxglove, vous devriez maintenant voir le robot la visualization d'un des rayons du lidar en vert.

  2. Ajustez le lidar_viz_angle pour afficher un rayon lidar différent.


4. Ajuster le contrôleur Wall-Follow (TODO #1)

Vous pouvez expérimenter avec les paramètres dans tutorial.py et observer leur impact sur le comportement du robot.

Params

THETA_DEG = 60
LOOKAHEAD = 0.6  # m
DESIRED_DISTANCE_FROM_WALL = 0.5  # m
KP = 1.2
KD = 0.0

Note : Le nœud doit être redémarré pour que les changements prennent effet.

# Arrêter avec Ctrl-C, puis redémarrer :
ros2 run seminar3 wall_follow_node

5. Implémentation de la fonction lidar_angle_to_distance (TODO #2)

  • Retourne la mesure du lidar à un angle donné theta_rad.
  • Pour un angle de 0 rad, la fonction doit retourner la mesure directement devant le robot.
  • Utilisez des print pour mieux comprendre les variables.
  • Validez votre code en comparant le comportement de votre robot avec celui de la solution fournie.

6. Implémentation de la fonction apply_pd (TODO #3)

  • Cette fonction calcule l’angle de braquage à appliquer en fonction de l’erreur :

    distance désirée au mur – distance mesurée.

  • Référez-vous à la section PID du power point pour implémenter cette fonction.

7. Implémentation de la fonction compute_future_distance_to_wall (TODO #4)

  • Cette fonction est la logique principale du wall follow.
  • Référez-vous à la documentation pour l'implémenter.

8. Implémentation de la fonction compute_throttle_command (TODO #5)

  • Félicitation, vous avez codé toute la logique du wall follow ! 🎉
  • Vous pouvez maintenant implémenter la fonction compute_throttle_command pour optimiser la vitesse du robot. Voici quelques pistes de solutions :
  1. Vitesse en fonction de l'angle de braquage.
  2. Modélisation de la vitesse maximale possible selon la friction statique entre les pneus et la piste. Page allo-prof friction statique