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 :
- Configuration des signatures de couleur avec la signature AI Vision dans VEXcode V5
- Configuration des codes couleur avec le capteur de vision AI dans VEXcode V5
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 :
- Utilisation des classifications IA avec le capteur de vision IA
- Utilisation d'AprilTags avec le capteur de vision AI
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
.
- 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 :
-
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
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.
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.
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.
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.
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.
Les mesures de largeur et de hauteur aident à identifier différents objets. Par exemple, un Buckyball aura une hauteur plus grande qu'un Ring.
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
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.
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.
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.
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.