Séminaire sur le Wall Follow - vaul-ulaval/vaul-wiki GitHub Wiki
Wall follow pas à pas
1. Ouvrir le devcontainer de simulation dans vscode
- Référez-vous au tutoriel pour ouvrir la simulation.
- Le code que vous aurez à modifier aujourd’hui se trouve dans tutorial.py.
- La présentation power point expliquant le lidar et le PID est ici.
2. Ouvrir le layout Foxglove
- Téléchargez le layout : foxglove_layout_autodrive.json
- Ouvrez-le dans Foxglove avec l’option Import from file...
3. Lancer l’algorithme Wall-Follow et visualiser les rayons du lidar
- Dans le terminal du devcontainer, exécutez :
ros2 run seminar3 wall_follow_node
-
Dans Foxglove, vous devriez maintenant voir le robot la visualization d'un des rayons du lidar en vert.
-
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
lidar_angle_to_distance
(TODO #2)
5. Implémentation de la fonction - 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.
apply_pd
(TODO #3)
6. Implémentation de la fonction - 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.
compute_future_distance_to_wall
(TODO #4)
7. Implémentation de la fonction - Cette fonction est la logique principale du wall follow.
- Référez-vous à la documentation pour l'implémenter.
compute_throttle_command
(TODO #5)
8. Implémentation de la fonction - 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 :
- Vitesse en fonction de l'angle de braquage.
- Modélisation de la vitesse maximale possible selon la friction statique entre les pneus et la piste. Page allo-prof friction statique