Skip to main content

Le défi Vision Data - Python

Icône Boîte à outils de l'enseignant Boîte à outils pour les enseignants - Le but du défi des données de vision

Le but du Défi des données de vision est de s'assurer que les élèves comprennent les données recueillies à partir de l'instantané du capteur de vision et comment les valeurs X et Y du centre sont calculées. Vos élèves doivent également terminer ce laboratoire en comprenant comment ces données peuvent être interprétées (par exemple, la valeur X du centre peut être utilisée pour déterminer où se trouve l'objet par rapport au point central du robot) et les meilleures pratiques pour nommer les objets lors de la configuration.

Capteur de vision instantané de la configuration montrant une main tenant un engrenage jaune. Une superposition carrée se trouve sur l'engrenage avec les données suivantes énumérées ci-dessus : Yellow Box, X 90, Y 62, W 102, H 98.

Remplissez le Défi des données de vision en répondant aux questions et en remplissant les données manquantes dans votre cahier d'ingénierie.

  1. Laquelle de ces instructions a été utilisée pour prendre l'instantané ci-dessus ?
    1. vision_5.take_snapshot(REDBOX)
    2. vision_5.take_snapshot(YELLOWBOX)
  2. Remplissez ces valeurs :

    Commandes du capteur de vision répertoriées sur le côté gauche avec des cases vides à remplir avec leurs valeurs. De haut en bas, les blocs sont répertoriés : vision 5 objets n'est pas nul 0, len vision 5 objets, le plus grand centre d'objet x, le plus grand centre d'objet y, la plus grande largeur d'objet et la plus grande hauteur d'objet.

  3. YELLOWBOX est-il à gauche ou à droite du point central du robot ?
  4. YELLOWBOX est-il au-dessus ou au-dessous du point central du robot ?
  5. YELLOWBOX N'EST PAS le meilleur nom pour donner cet objet si vous voulez reconnaître facilement quelle signature de couleur est laquelle. Lequel de ces noms est le meilleur ? Pourquoi ?
    1. YELLOWGEAR
    2. YELLOWCUBE

Icône Boîte à outils de l'enseignant Boîte à outils de l'enseignant - Réponses

Les réponses des étudiants peuvent être discutées en classe et/ou vous pouvez consulter leurs cahiers d'ingénierie pour vous assurer qu'ils ont terminé l'activité avec succès.

  1. vision_5.take_snapshot(YELLOWBOX)
  2. Données complétées alignées sur les commandes VEXcode. Réponses lues, dans l'ordre, vision 5 objets n'est pas vrai = Vrai ; len vision 5 objets = 1 ; plus grand centre d'objet x = 141 ; plus grand centre d'objet y = 111 ; plus grande largeur d'objet = 102 ; plus grande hauteur d'objet = 98.
  3. YELLOWBOX est légèrement à gauche du point central du robot mais seulement d'une différence de 16,5 pixels (centre 157,5 - 141).
  4. YELLOWBOX est légèrement inférieur au point central du robot, mais seulement d'une différence de 5,5 pixels (111 - centre 105,5).
  5. A. YELLOWGEAR

    C'est un meilleur nom car il décrit non seulement la couleur de l'objet mais aussi le type d'objet. C'est un engrenage, pas une boîte ou un cube.

Icône Étendre votre apprentissage Étendez votre apprentissage - Utilisez les instructions de détection dans un projet

Maintenant que certaines des données rapportées par le capteur de vision sont mieux comprises, les étudiants peuvent vouloir utiliser ces instructions de détection dans un projet. Laissez-les explorer la possibilité de le faire.

def check_red_callback():
  brain.screen.set_font(FontType.MONO40)
  brain.screen.clear_row(3)
  brain.screen.set_cursor(3, 1)
  vision_5_objects = vision_5.take_snapshot(REDBOX)

  if (vision_5_objects):
      brain.screen.print("Red Object Found")
      brain.screen.next_row()
      brain.screen.print("Number of Objects Detected:", len(vision_5_objects))
      brain.screen.next_row()
      brain.screen.print("Center X:", vision_5.largest_object().centerX)
      brain.screen.next_row()
      brain.screen.print("Center Y:", vision_5.largest_object().centerY)
      brain.screen.next_row()
      brain.screen.print("Width:", vision_5.largest_object().width)
      brain.screen.next_row()
      brain.screen.print("Height:", vision_5.largest_object().height)
      brain.screen.next_row()
  
  else:
      brain.screen.print("No Red Object")

Les étudiants plus avancés peuvent utiliser ces instructions dans un projet pour prendre des décisions.

while True:
  drivetrain.drive(FORWARD)
  vision_5_objects = vision_5.take_snapshot(REDBOX)
  if (vision_5_objects) and (vision_5.largest_object().centerX < 157.5):
      drivetrain.turn_for(LEFT, 90, DEGREES)
  else:
      drivetrain.turn_for(RIGHT, 90, DEGREES)
      wait(5, MSEC)