Codage avec le capteur de vision AI dans VEXcode V5 Python

Assurez-vous d'avoir signatures de couleur et codes de couleur configurés avec votre capteur de vision AI afin qu'ils puissent être utilisés avec vos blocs. Pour en savoir plus sur la façon de les configurer, vous pouvez lire les articles ci-dessous :

Le capteur de vision AI peut également détecter les classifications AI et les AprilTags. Pour savoir comment activer ces modes de détection, rendez-vous ici :

Pour en savoir plus sur ces commandes individuelles et comment les utiliser dans VEXcode, accédez au site API.


Obtenez des données visuelles avec le capteur de vision AI

Chaque commande de capteur de vision AI commencera par le nom du capteur de vision AI configuré. Pour tous les exemples de cet article, le nom du capteur de vision AI utilisé sera ai_vision_1.

prendre un instantané

La méthode take_snapshot prend une photo de ce que le capteur de vision AI voit actuellement et extrait des données de cet instantané qui peuvent ensuite être utilisées dans un projet. Lorsqu'un instantané est pris, vous devez spécifier le type d'objet sur lequel le capteur de vision AI doit collecter des données :

  • Une signature de couleuroucouleur
    • Ces signatures visuelles commencent par le nom du capteur de vision IA, un double trait de soulignement, puis le nom de la signature visuelle, par exemple : ai_vision_1__Blue.
  • Classifications IA - AiVision.ALL_AIOBJS
  • avrilTags- AiVision.ALL_TAGS

Prendre un instantané créera un tuple de tous les objets détectés que vous avez spécifiés. Par exemple, si vous souhaitez détecter une signature de couleur « bleue » et que le capteur de vision AI détecte 3 objets bleus différents, les données des trois seront placées dans le tuple.

Dans cet exemple, la variable vision_objects stocke un tuple contenant les signatures de couleur « violet »détectées à partir du capteur de vision AI nommé ai_vision_1. Il affiche le nombre d'objets détectés et capture un nouvel instantané toutes les 0,5 secondes.

while True: 
# Obtenir un instantané de toutes les signatures de couleur violette et le stocker dans vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Purple)

# Vérifier qu'un objet a été détecté dans l'instantané avant d'extraire les données.
if vision_objects[0].exists == True

brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)

brain.screen.print("Nombre d'objets :", len(vision_objects))
wait(0.5, SECONDS)

Propriétés de l'objet

Chaque objet d'un instantané possède des propriétés différentes qui peuvent être utilisées pour signaler des informations sur cet objet. Les propriétés disponibles sont les suivantes :

  • identifiant
  • centreX et centreY
  • origineX et origineY
  • largeur
  • hauteur
  • angle
  • score
  • existe

Pour accéder à la propriété d'un objet, utilisez le nom de la variable stockant le tuple, suivi de l'index de l'objet.

L'index d'objet indique la propriété de l'objet spécifique que vous souhaitez récupérer. Après avoir pris un instantané, le capteur de vision AI trie automatiquement les objets par taille. L'objet le plus grand se voit attribuer l'index 0, les objets plus petits recevant des numéros d'index plus élevés.

Par exemple, appeler la largeur de l'objet le plus grand à l'intérieur de la variable vision_objects serait : vision_objects[0].width.

identifiant

La propriété id n'est disponible que pour les classifications AI et

Trois marqueurs d'identification carrés étiquetés avec les identifiants 0, 9 et 3, chacun avec les coordonnées correspondantes et les mesures de taille affichées en texte blanc. L'ID 0 est à gauche, l'ID 9 est à droite et l'ID 3 est en bas au centre. Chaque marqueur possède un motif noir et blanc unique à l'intérieur d'un carré.

Pour unAprilTag, la propriété id représente le numéro d'identificationAprilTag(s) détecté.

L'identification AprilTags spécifiques permet une navigation sélective. Vous pouvez programmer votre robot pour qu'il se déplace vers certaines balises tout en ignorant les autres, les utilisant ainsi efficacement comme panneaux de signalisation pour une navigation automatisée.

Deux boules et deux anneaux identifiés sur l'image, avec des étiquettes indiquant leur position, leur taille et leur score. La boule rouge est à gauche, la boule bleue est à droite, l'anneau vert est en bas à gauche et l'anneau rouge est en bas à droite. Chaque objet est entouré d'un cadre blanc et les détails tels que les coordonnées X, Y, la largeur, la hauteur et un score de 99 % sont affichés en texte blanc.

Pourclassifications d'IA, la propriété id représente le type spécifique de classification d'IA détectée.

L'identification de classifications d'IA spécifiques permet au robot de se concentrer uniquement sur des objets spécifiques, comme vouloir uniquement naviguer vers une Buckyball rouge, pas une bleue.

Consultez ces articles pour plus d'informations sur les classifications AI et du avril et comment activer leur détection dans l'utilitaire AI Vision.

centreX et centreY

Il s'agit des coordonnées centrales de l'objet détecté en pixels.

Un Buckyball bleu suivi par un système de vision par ordinateur. L'objet est délimité par un carré blanc et à l'intérieur du contour se trouve un carré rouge plus petit entourant une croix blanche centrée. Dans le coin supérieur gauche de l'image, une étiquette indique que l'objet est bleu, avec des coordonnées X:176, Y:117 et des dimensions L:80, H:78.

Les coordonnées CenterX et CenterY aident à la navigation et au positionnement. Le capteur de vision AI a une résolution de 320 x 240 pixels.

Deux objets cubiques bleus suivis par un système de vision. L'objet supérieur est étiqueté avec les coordonnées X:215, Y:70 et les dimensions L:73, H:84, avec un contour blanc et une croix blanche centrée. L'objet inférieur est étiqueté avec les coordonnées X:188, Y:184 et les dimensions W:144, H:113, également délimitées en blanc avec une croix blanche centrée.

Vous pouvez voir qu’un objet plus proche du capteur de vision AI aura une coordonnée CenterY inférieure à celle d’un objet plus éloigné.

Dans cet exemple, étant donné que le centre de la vue du capteur de vision AI est (160, 120), le robot tournera à droite jusqu'à ce que la coordonnée centerX d'un objet détecté soit supérieure à 150 pixels, mais inférieure à 170 pixels.

while True:
# Obtenez un instantané de toutes les signatures de couleur bleue et stockez-le dans vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)

# Vérifiez qu'un objet a été détecté dans l'instantané avant d'extraire les données.
if vision_objects[0].exists == True

# Vérifiez si l'objet n'est pas au centre de la vue du capteur de vision IA.
if vision_objects[0].centerX > 150 et 170 > vision_objects[0].centerX:

# Continuez à tourner à droite jusqu'à ce que l'objet soit au centre de la vue.
drivetrain.turn(RIGHT)
else:
drivetrain.stop()
wait(5, MSEC)

origineX et origineY

OriginX et OriginY sont les coordonnées dans le coin supérieur gauche de l'objet détecté en pixels.

Un Buckyball bleu suivi par un système de vision. Un contour blanc entoure l'objet, avec une croix blanche centrée à l'intérieur du contour. L'étiquette en haut à gauche indique la couleur de l'objet en bleu, ainsi que les coordonnées X:176, Y:117 et les dimensions L:80, H:78. Un petit carré rouge met en évidence le coin supérieur gauche de l'objet.

Les coordonnées OriginX et OriginY aident à la navigation et au positionnement. En combinant cette coordonnée avec la largeur et la hauteur de l'objet, vous pouvez déterminer la taille de la zone de délimitation de l'objet. Cela peut aider à suivre les objets en mouvement ou à naviguer entre les objets.

largeur et hauteur

Il s'agit de la largeur ou de la hauteur de l'objet détecté en pixels.

L'image montre un Buckyball bleu avec un contour carré blanc qui le suit. Le coin supérieur gauche comporte une étiquette indiquant qu'il s'agit d'un objet bleu, avec des coordonnées X:176, Y:117 et des dimensions L:80, H:78. Les flèches rouges soulignent la largeur et la hauteur de l'objet.

Les mesures de largeur et de hauteur aident à identifier différents objets. Par exemple, un Buckyball aura une hauteur plus grande qu'un Ring.

Deux objets cubiques bleus suivis par un système de reconnaissance visuelle. Le cube supérieur a un contour blanc avec une étiquette indiquant sa position comme X:215, Y:70 et les dimensions L:73, H:84. Le cube inférieur a un contour blanc similaire avec l'étiquette affichant X:188, Y:184 et les dimensions W:144, H:113. Chaque cube possède une croix blanche centrée, indiquant probablement le point focal pour le suivi. Les étiquettes mettent en évidence les mesures et les données de suivi de chaque objet.

La largeur et la hauteur indiquent également la distance d'un objet par rapport au capteur de vision AI. Des mesures plus petites signifient généralement que l'objet est plus éloigné, tandis que des mesures plus grandes suggèrent qu'il est plus proche.

Dans cet exemple, la largeur de l'objet est utilisée pour la navigation. Le robot s'approchera de l'objet jusqu'à ce que la largeur ait atteint une taille spécifique avant de s'arrêter.

while True:
# Obtenir un instantané de toutes les signatures de couleur bleue et le stocker dans vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)

# Vérifier qu'un objet a été détecté dans l'instantané avant d'extraire les données.
if vision_objects[0].exists == True

# Vérifier si le plus grand objet est proche du capteur de vision IA en mesurant sa largeur.
if vision_objects[0].width < 250:

# Conduisez plus près de l'objet jusqu'à ce qu'il soit plus large que 250 pixels.
drivetrain.drive(FORWARD)
else:
drivetrain.stop()

wait(5, MSEC)

angle

Un gif rotatif montrant des blocs rouges et verts. Lorsque les blocs sont positionnés parfaitement horizontalement du rouge au vert, ils sont affichés à 0 degré. Si le bloc rouge est au-dessus du bloc vert verticalement, il est à 90 degrés. Si les blocs sont horizontalement du vert au rouge, c'est 180 degrés. Si le bloc vert est au-dessus du bloc rouge verticalement, il est à 20 degrés.

La propriété angle n'est disponible que pour les codes couleur etAprilTags.

Cela représente si le code couleur détectéou AprilTag est orienté différemment.

Une pile de deux cubes, un vert en haut et un bleu en bas, suivis par un système de vision. Un contour blanc entoure les deux cubes, avec une croix blanche centrée sur le cube vert. L'étiquette en bas de l'image affiche Vert_Bleu A:87°, indiquant les couleurs détectées et une mesure d'angle. En dessous, les coordonnées sont répertoriées comme X:117, Y:186, avec les dimensions W:137, H:172, représentant la position et la taille des cubes empilés dans le cadre.

Vous pouvez voir si le robot est orienté différemment par rapport au code couleur ouAprilTag et prendre des décisions de navigation en fonction de cela.

Deux cubes, un vert et un bleu, placés côte à côte et suivis par un système de vision. Un contour blanc entoure les deux cubes avec une croix blanche au centre. L'étiquette en haut à gauche indique Vert_Bleu A:0°, faisant référence aux couleurs détectées et à une mesure d'angle. Ci-dessous, les coordonnées sont affichées comme X:150, Y:102, avec les dimensions W:179, H:109, représentant la position et la taille des cubes dans le cadre.

Par exemple, si un code couleur n'est pas détecté sous un angle approprié, l'objet qu'il représente risque de ne pas pouvoir être correctement détecté par le robot.

score

La propriété score est utilisée lors de la détectionclassifications AI avec le capteur de vision AI.

L'image montre quatre objets suivis par un système de vision : deux boules et deux anneaux. La boule rouge est étiquetée avec les coordonnées X:122, Y:84, W:67, H:66 et un score de 99 %. La boule bleue a X:228, Y:86, W:70, H:68, avec un score de 99%. L'anneau vert a les coordonnées X:109, Y:186, W:98, H:92 et un score de 99%. L'anneau rouge est étiqueté X:259, Y:187, W:89, H:91, avec un score de 99%. Chaque objet est entouré de blanc, indiquant la précision du suivi.

Le score de confiance indique le degré de certitude du capteur de vision IA quant à sa détection. Dans cette image, il y a 99 % de confiance dans l'identification des classifications IA de ces quatre objets. Vous pouvez utiliser ce score pour garantir que votre robot se concentre uniquement sur les détections très fiables.

existe

La propriété existe est utilisée pour détecter si une signature visuelle spécifiée a été détectée dans le dernier instantané pris.

Cela vous permet de vérifier si des objets détectés ont été détectés dans l'instantané précédent. Cette propriété renverra un True lorsqu'un objet existe et un False lorsque l'objet n'existe pas.

 

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: