Labo 2 : Freinage d'urgence automatique - vaul-ulaval/vaul-wiki GitHub Wiki

Introduction :

Ce laboratoire est basé sur les travaux du projet f1tenth_labs_openrepo.

I. Objectifs d'apprentissage

  • Utilisation du message LaserScan dans ROS 2.
  • Temps Instantané avant Collision (iTTC).
  • Systèmes critiques en matière de sécurité.

II. Vue d'ensemble

L'objectif de ce laboratoire est de développer un nœud de sécurité pour les voitures de course qui arrêtera la voiture en cas de collision lorsqu'elle se déplace à des vitesses élevées. Nous mettrons en œuvre l'iTTC en utilisant le message LaserScan dans le simulateur.

Bien que de nombreux messages ROS 2 soient largement identiques à ceux de ROS 1, vous pouvez utiliser ros2 interface show <msg_name> pour voir la définition des messages. Assurez-vous que tous les packages nécessaires sont correctement installés avant de procéder.

Messages clés :

  • LaserScan : Contient plusieurs champs utiles, dont le champ ranges qui est particulièrement important pour nous. Il faut s'abonner au topic /scan et calculer l'iTTC à partir des messages LaserScan.
  • Odometry : Le simulateur et la voiture publient tous deux des messages Odometry, renseignant sur la position, l'orientation et la vitesse de la voiture.
  • AckermannDriveStamped : Message que vous avez déjà utilisé auparavant. Il sera utilisé pour envoyer des commandes de conduite au simulateur et à la voiture.

III. Calcul de l'iTTC

L'iTTC est une approximation du temps avant collision, basée sur les mesures actuelles de distance et de vitesse du véhicule. Après vos calculs, vous devriez obtenir un tableau d'iTTC correspondant à chaque angle. Lorsque ce temps descend en dessous d'un certain seuil, cela signifie qu'une collision est imminente.

IV. Freinage d'urgence automatique avec iTTC

Pour ce labo, vous allez créer un "Safety Node" qui stoppera la voiture avant qu'elle ne heurte un obstacle. Ce nœud ROS 2 s'abonnera aux messages LaserScan et Odometry. Si nécessaire, il publiera un message AckermannDriveStamped avec le champ speed réglé à 0.0 m/s pour freiner.

Pour tester votre nœud, lancez la simulation et utilisez l'outil de réinitialisation pour conduire le véhicule vers un mur.

Noms des topics pour vos publishers et subscribers :

  • LaserScan : /scan
  • Odometry : /ego_racecar/odom
  • AckermannDriveStamped : /drive

V. Implentation

  1. Vous pouvez mettre en œuvre ce nœud en C++ ou en Python. Un package squelette est fourni que vous pouvez utiliser. Développez directement dans votre workspace de votre simulation.

VI. Tester

Demander à un membre plus expérimenté du VAUL pour tester votre solution sur le robot.

⚠️ **GitHub.com Fallback** ⚠️