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 :
- Configuration des signatures de couleur avec la signature AI Vision dans VEXcode EXP
- Configuration des codes couleur avec la signature AI Vision dans VEXcode EXP
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 :
- Classifications IA avec le capteur de vision IA dans VEXcode EXP
- AprilTags avec le capteur de vision IA dans VEXcode EXP
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 AIVision.
prendre un instantané
La méthode takeSnapshot 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 :
AIVision1__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 -
avril Étiquettes-
aivision::TOUS_LES_ÉTIQUETTES
La prise d'un instantané créera un tableau de 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 tableau.
Dans cet exemple, un instantané est pris de la signature de couleur « Bleu » du capteur de vision AI nommé AIVision1. Il affiche le nombre d'objets détectés dans le réseau et capture un nouvel instantané toutes les 0,5 secondes.
while (true) {
// Obtenir un instantané de tous les objets de couleur bleue.
AIVision.takeSnapshot(AIVision1__Blue);
// Vérifier qu'un objet a été détecté dans l'instantané avant de récupérer les données.
if (AIVision.objectCount > 0) {
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
Brain.Screen.print(AIVision1.objectCount);
}
wait(5, msec);
}
objets
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. La méthode objects vous permet d'accéder à ces propriétés.
Les propriétés disponibles sont les suivantes :
- identifiant
- centreX et centreY
- origineX et origineY
- largeur
- hauteur
- angle
- existe
- score
Pour accéder à une propriété d'un objet, utilisez le nom du capteur de vision IA, suivi de la méthode de l'objet, puis 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 serait AIVision1.objects[0].width.
identifiant
La propriété id est uniquement disponible pour les classifications IA et du avril.
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.
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.
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.
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 tous les objets de couleur bleue.
AIVision.takeSnapshot(AIVision__Blue);
// Vérifier qu'un objet a été détecté dans l'instantané avant de récupérer les données.
if (AIVision.objectCount > 0) {
if (AIVision.objects[0].centerX > 150.0 && 170.0 > AIVision.objects[0].centerX) {
Drivetrain.turn(right);
} else {
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é.
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.
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.
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 tous les objets bleus.
AIVision.takeSnapshot(AIVision1__Blue);
// Vérifier qu'un objet a été détecté dans l'instantané avant de récupérer les données.
if (AIVision.objectCount > 0) {
if (AIVision.objects[0].width < 250.0) {
Drivetrain.drive(forward);
} else {
Drivetrain.stop();
}
}
wait(5, msec);
}
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.
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 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.
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.
nombre d'objets
La méthode objectCount renvoie le nombre d'objets détectés dans le dernier instantané.
Dans cet exemple, deux objets ont été détectés avec la signature de couleur « Bleu ». Ils seront tous deux placés dans le tableau lorsque la méthode takeSnapshot sera utilisée.
Ce fragment de code met à jour en continu le cerveau EXP avec le nombre d'objets détectés. D’après l’exemple fourni, il enverra de manière répétée la valeur 2, indiquant que deux objets ont été détectés.
while (true) {
// Obtenir un instantané de tous les objets bleus.
AIVision.takeSnapshot(AIVision__Blue);
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
// Vérifier qu'un objet a été détecté dans l'instantané avant de récupérer les données.
if (AIVision.objectCount > 0) {
Brain.Screen.print(AIVision1.objectCount);
}
wait(5, msec);
}