Programmation avec le capteur de vision IA dans VEXcode EXP Python

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 AprilTags sont actuellement suivis par l'utilitaire AI Vision. Chaque étiquette est identifiée, localisée et délimitée, indiquant son suivi par le système. Dans cet exemple, les identifiants AprilTag sont 0, 3 et 9.

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.

L'utilitaire AI Vision suit quatre objets : deux BuckyBalls et deux Rings. Chaque objet est identifié, localisé et délimité, indiquant ainsi son suivi par le système. L'utilitaire enregistre l'identifiant de l'objet ; dans cet exemple, il y a une boule rouge, une boule bleue, un anneau vert et un anneau rouge.

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 vers 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.

Le capteur de vision IA suit une fullerène bleue. La Buckyball possède un rectangle de suivi autour d'elle, et l'étiquette ci-dessus indique qu'elle a une position X de 176 et une position Y de 117. Le centre du rectangle de suivi est mis en évidence pour indiquer que la position est mesurée à partir de ce centre.

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.

Le capteur de vision IA suit deux cubes bleus. Les cubes sont entourés de rectangles de suivi, et l'un d'eux est beaucoup plus proche de la caméra. Le plus proche a une position Y de 184, et le plus éloigné a une position Y de 70.

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é.

Le capteur de vision IA suit une fullerène bleue. La Buckyball possède un rectangle de suivi autour d'elle, et l'étiquette ci-dessus indique qu'elle a une position X de 176 et une position Y de 117. Le coin supérieur gauche du rectangle de suivi est mis en évidence pour indiquer que la position d'origine est mesurée à partir de ce coin supérieur gauche.

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.

Le capteur de vision IA suit une fullerène bleue. La buckminsterfullerène possède un rectangle de suivi autour d'elle, et l'étiquette ci-dessus indique qu'elle a une largeur de 80 pixels et une hauteur de 78 pixels. Les flèches rouges mettent en évidence le rectangle de suivi pour indiquer sa largeur et sa hauteur.

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.

Le capteur de vision IA suit deux cubes bleus. Les cubes sont entourés de rectangles de suivi, et l'un d'eux est beaucoup plus proche de la caméra. Celui le plus proche a une largeur de 144 et une hauteur de 113, et celui le plus éloigné a une largeur de 73 et une hauteur de 84.

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 qu'il soit plus large que 250 pixels.
drivetrain.drive(AVANCE)
sinon :
drivetrain.stop()

attendre(5, MSEC)

angle

Animation d'un carré rouge et d'un carré vert tournant ensemble pour illustrer les 360 degrés d'un angle.

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.

Le capteur de vision IA suit un code couleur vert puis bleu. La vidéo montre un cube vert empilé sur un cube bleu. La valeur angulaire du code couleur est mise en évidence et indique 87 degrés, ce qui signifie que le code couleur est orienté verticalement.

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.

Le capteur de vision IA suit un code couleur vert puis bleu. La vidéo montre un cube vert placé à côté d'un cube bleu, mais ils sont positionnés selon un angle inconfortable par rapport au capteur. La valeur angulaire du code couleur est mise en évidence et affiche 0 degré, ce qui indique que l'angle du code couleur ne peut pas être lu.

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'utilitaire AI Vision suit quatre objets : deux BuckyBalls et deux Rings. Chaque objet est identifié, localisé et délimité, indiquant ainsi son suivi par le système. L'utilitaire affiche également le score de classification IA de chaque objet ; dans cet exemple, chaque score est de 99 %.

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: