Programmation avec le capteur de vision IA en Python VEXcode V5

Assurez-vous d'avoir configuré les codes de couleur Color Signatures et Color Codes avec votre capteur de vision AI afin qu'ils puissent être utilisés avec vos blocs. Pour en savoir plus sur leur configuration, vous pouvez consulter les articles ci-dessous :

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

Pour en savoir plus sur ces commandes individuelles et sur la manière de les utiliser dans VEXcode, consultez le site de l'API.


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

Chaque commande du capteur de vision IA commencera par le nom du capteur de vision IA 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 IA voit actuellement et extrait des données de cet instantané qui peuvent ensuite être utilisées dans un projet. Lors de la prise d'une capture d'écran, vous devez spécifier le type d'objet dont le capteur de vision IA doit collecter les données :

  • Signature couleurcode couleur oucode couleur
    • 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
  • avril Étiquettes- AiVision.ALL_TAGS

La prise d'un instantané créera un tuple contenant tous les objets détectés que vous avez spécifiés. Par exemple, si vous vouliez détecter une signature de couleur « Bleu » et que le capteur de vision IA détectait 3 objets bleus différents, les données des trois seraient placées dans le tuple.

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

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

# Vérifier qu'un objet a bien été détecté dans l'instantané avant de récupérer les données.
si 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 fournir 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 à une propriété d'un objet, utilisez le nom de la variable stockant le tuple, suivi de l'index de l'objet.

L'index de l'objet indique la propriété spécifique de l'objet que vous souhaitez récupérer. Après la prise de vue, le capteur de vision IA trie automatiquement les objets par taille. L'objet le plus grand se voit attribuer l'indice 0, les objets plus petits recevant des numéros d'indice 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 est uniquement disponible pour les classifications IA et du avril.

Trois marqueurs d'identification carrés portant les numéros d'identification 0, 9 et 3, chacun avec les coordonnées et les mesures de taille correspondantes affichées en texte blanc. L'ID 0 se trouve à gauche, l'ID 9 à droite et l'ID 3 en bas au centre. Chaque marqueur présente un motif unique en noir et blanc à l'intérieur d'un carré.

Pour un AprilTag, la propriété id représente le numéro d'identificationdes AprilTag détectés.

L'identification de tags spécifiques AprilTags permet une navigation sélective. Vous pouvez programmer votre robot pour qu'il se dirige vers certaines étiquettes tout en ignorant les autres, les utilisant ainsi comme points de repère pour la navigation automatisée.

Deux balles et deux anneaux sont 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 délimité par un cadre blanc, et des détails tels que les coordonnées X et 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é.

Identification spécifique Classifications IApermet au robot de se concentrer uniquement sur des objets spécifiques, comme par exemple vouloir naviguer uniquement vers une Buckyball rouge, et non une bleue.

Consultez ces articles pour plus d'informations sur les balises AprilTags et , les classifications IA et comment activer leur détection dans l'utilitaire AI Vision.

centreX et centreY

Il s'agit des coordonnées du centre de l'objet détecté, exprimées en pixels.

Une buckminsterfullerène bleue suivie par un système de vision par ordinateur. L'objet est entouré d'un carré blanc, et à l'intérieur de ce 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 les coordonnées X:176, Y:117 et les dimensions L:80, H:78.

Les coordonnées CenterX et CenterY facilitent la navigation et le positionnement. Le capteur de vision IA possède 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 entouré de blanc avec une croix blanche centrée.

Vous pouvez constater qu'un objet plus proche du capteur de vision IA 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 centreX d'un objet détecté soit supérieure à 150 pixels, mais inférieure à 170 pixels.

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 bien été détecté dans l'instantané avant de récupérer les données.
if vision_objects[0].exists == True

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

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

origineX et origineY

OriginX et OriginY correspondent aux coordonnées en pixels du coin supérieur gauche de l'objet détecté.

Une buckminsterfullerène bleue suivie par un système de vision. Un contour blanc entoure l'objet, avec une croix blanche centrée à l'intérieur de ce contour. L'étiquette en haut à gauche indique que la couleur de l'objet est bleue, 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 facilitent la navigation et le positionnement. En combinant cette coordonnée avec la largeur et la hauteur de l'objet, vous pouvez déterminer la taille de la boîte englobante de l'objet. Cela peut faciliter le suivi d'objets en mouvement ou la navigation entre des objets.

largeur hauteur et , hauteur

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

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

Les mesures de largeur et de hauteur permettent d'identifier différents objets. Par exemple, une fullerène C18 aura une hauteur supérieure à celle d'un anneau C18.

Deux objets cubiques bleus sont 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 ses 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 L:144, H:113. Chaque cube possède une croix blanche en son centre, 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 IA. 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 sa largeur atteigne 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 bien été détecté dans l'instantané avant de récupérer les données.
if vision_objects[0].exists == True

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

# Se rapprocher de l'objet jusqu'à ce que sa largeur dépasse 250 pixels.
drivetrain.drive(AVANCE)
sinon :
drivetrain.stop()

attendre(5, MSEC)

angle

Un GIF animé en rotation montrant des blocs rouges et verts. Lorsque les blocs sont positionnés parfaitement horizontalement du rouge au vert, ils sont représentés à 0 degré. Si le bloc rouge est placé verticalement au-dessus du bloc vert, l'angle est de 90 degrés. Si les blocs sont horizontalement verts à rouges, cela représente 180 degrés. Si le bloc vert est placé verticalement au-dessus du bloc rouge, l'angle est de 20 degrés.

La propriété d'angle est uniquement disponible pour les codes couleuret ainsi que pour les étiquettes d'avril
.
Ceci représente si le code couleur ou détecté est orienté différemment.

Une pile de deux cubes, un vert au-dessus et un bleu en dessous, est suivie 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 indiqué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. En dessous, les coordonnées sont indiqué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 saisi par le robot.

score

La propriété score est utilisée lors de la détection declassifications d'IA avec le capteur de vision IA.

L'image montre quatre objets suivis par un système de vision : deux balles 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 souligné en blanc, ce qui indique la précision du suivi.

Le score de confiance indique le degré de certitude du capteur de vision IA quant à sa détection. Sur cette image, le système est sûr à 99 % d'identifier la classification IA de ces quatre objets. Vous pouvez utiliser ce score pour vous assurer 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 l'ont été dans l'instantané précédent. Cette propriété renverra True si un objet existe, et False si l'objet n'existe pas.

 

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

Last Updated: