Vision#
Introduction#
Le drone VEX AIR est équipé de deux capteurs de vision qui détectent et suivent les identifiants AprilTag. Ces capteurs lui permettent d’analyser son environnement, de suivre des objets et de réagir en fonction des données visuelles détectées.
Vous trouverez ci-dessous la liste de tous les blocs disponibles :
Actions — Contrôlez le flux vidéo et capturez les données des objets.
obtenir les données de l’objet — Capture les données pour les identifiants AprilTag.
Paramètres — Ajustez les objets détectés auxquels on accède.
set Vision object item — Sélectionne un objet spécifique dans la liste des objets détectés.
Valeurs — Récupérer la présence, la classification et les propriétés de l’objet.
Vision object exists — Indique si un objet est détecté.
L’objet Vision est l’ID AprilTag — Vérifie si un ID AprilTag détecté correspond à un ID spécifique.
Nombre d’objets de vision — Indique le nombre d’objets détectés.
Propriété de l’objet Vision — Récupère des détails tels que :
centerX & centerY — Coordonnées de position centrale dans le champ de vision du capteur.
bearing — Angle de l’objet par rapport au capteur de vision avant ou les degrés nécessaires pour que le drone fasse face à l’objet.
rotation — Orientation de l’objet.
originX & originY — Coordonnées de position du coin supérieur gauche dans la vue du capteur.
id — Numéro d’identification d’un identifiant AprilTag.
Actes#
obtenir les données de l’objet#
Le bloc de pile get object data filtre les données provenant de la trame du capteur de vision. Les capteurs de vision peuvent détecter les identifiants AprilTag.
L’ensemble de données stocke les objets classés par largeur, du plus grand au plus petit, à partir de l’index 0. Les propriétés de chaque objet sont accessibles via le bloc Vision object property. Un ensemble de données vide est signalé si aucun objet correspondant n’est détecté.
obtenir les données [tous les AprilTags v] de la caméra [avant v]
Paramètre |
Description |
|---|---|
signature |
Filtre l’ensemble de données pour n’inclure que les données de la signature spécifiée. La signature disponible est tous les AprilTags. |
caméra |
Le capteur de vision pour récupérer les données, soit vers l’avant, soit vers le bas. |
Exemple
au démarrage
[Climb upward when an AprilTag ID is detected.]
décoller à [300] [mm v] ▶
indéfiniment
obtenir les données [tous les AprilTags v] de la caméra [avant v]
si <Caméra a-t-elle détecté un objet ?> alors
se déplacer [en haut v] sur [200] [mm v] ▶
Paramètres#
élément d’objet Vision#
Le bloc de pile set Vision object item définit l’élément du jeu de données à utiliser.
définir l'objet détecté par Caméra à [1]
Paramètres |
Description |
|---|---|
article |
Le numéro de l’élément à utiliser dans l’ensemble de données. |
Exemple
au démarrage
[Display the smallest-appearing AprilTag ID.]
indéfiniment
obtenir les données [tous les AprilTags v] de la caméra [avant v]
effacer la console
si <Caméra a-t-elle détecté un objet ?> alors
définir l'objet détecté par Caméra à (nombre d'objets détectés par Caméra)
afficher (Objet [id v]) sur la console ▶
Valeurs#
L’objet de vision existe#
Le bloc booléen Vision object exists indique si le capteur de vision spécifié détecte actuellement des objets.
Vrai — Le capteur de vision spécifié détecte un objet.
Faux — Le capteur de vision spécifié ne détecte aucun objet.
<Caméra a-t-elle détecté un objet ?>
Paramètre |
Description |
|---|---|
Ce bloc ne comporte aucun paramètre. |
Exemple
au démarrage
[Climb upward when an AprilTag ID is detected.]
décoller à [300] [mm v] ▶
indéfiniment
obtenir les données [tous les AprilTags v] de la caméra [avant v]
si <Caméra a-t-elle détecté un objet ?> alors
se déplacer [en haut v] sur [200] [mm v] ▶
L’objet Vision est AprilTag ID#
Le bloc booléen objet Vision : ID AprilTag indique si l’ID AprilTag correspond à un numéro d’identification spécifique.
Vrai — L’identifiant AprilTag est le numéro.
Faux — L’identifiant AprilTag n’est pas le numéro.
<Vision object is AprilTag ID [1]>
Paramètres |
Description |
|---|---|
Numéro d’identification AprilTag |
Le nombre à comparer avec le numéro d’identification AprilTag détecté, compris entre 0 et 37. |
Exemple
au démarrage
[Display when the target AprilTag ID is detected.]
indéfiniment
obtenir les données [tous les AprilTags v] de la caméra [avant v]
effacer la console
si <Caméra a-t-elle détecté un objet ?> alors
si <Vision object is AprilTag ID [21]> alors
afficher [Target found!] sur la console ▶
fin
nombre d’objets de vision#
Le bloc de rapport Vision object count indique le nombre d’objets détectés dans l’ensemble de données sous forme de nombre entier.
(nombre d'objets détectés par Caméra)
Paramètres |
Description |
|---|---|
Ce bloc ne comporte aucun paramètre. |
Exemple
au démarrage
[Display how many AprilTag IDs are detected.]
indéfiniment
obtenir les données [tous les AprilTags v] de la caméra [avant v]
effacer la console
afficher (nombre d'objets détectés par Caméra) sur la console ▶
attendre [0.2] secondes
propriété de l’objet Vision#
Il existe plusieurs propriétés incluses avec chaque objet (indiquées ci-dessous) stockées après l’utilisation du bloc get object data.
(Objet [largeur v])
Toutes les valeurs de propriétés, à l’exception de id, décrivent la position, la taille, l’orientation ou le relèvement de l’objet détecté au moment où le bloc get object data a été utilisé. Ces valeurs sont exprimées en pixels ou en degrés. Chaque capteur de vision possède une résolution différente.
Face avant : 640 x 480 pixels
Orientation vers le bas : 640 x 400 pixels
Paramètre |
Description |
|---|---|
propriété |
Quelle propriété de l’objet détecté utiliser : |
largeur#
La propriété width indique la largeur de l’objet détecté en pixels sous forme d’un nombre entier compris entre 1 et 640.
(Objet [largeur v])
Exemple
au démarrage
[Show if the AprilTag ID appears large or small.]
indéfiniment
obtenir les données [tous les AprilTags v] de la caméra [avant v]
effacer la console
si <Caméra a-t-elle détecté un objet ?> alors
si <(Objet [largeur v]) [math_greater_than v] [100]> alors
afficher [Large] sur la console ▶
sinon
afficher [Small] sur la console ▶
fin
fin
attendre [0.2] secondes
hauteur#
La propriété hauteur indique la hauteur de l’objet détecté en pixels sous forme d’un nombre entier compris entre 1 et 480.
(Objet [hauteur v])
Exemple
au démarrage
[Show if the AprilTag ID appears large or small.]
indéfiniment
obtenir les données [tous les AprilTags v] de la caméra [avant v]
effacer la console
si <Caméra a-t-elle détecté un objet ?> alors
si <(Objet [hauteur v]) [math_greater_than v] [100]> alors
afficher [Large] sur la console ▶
sinon
afficher [Small] sur la console ▶
fin
fin
attendre [0.2] secondes
centreX#
La propriété centerX indique la coordonnée x du centre de l’objet détecté en pixels sous forme d’un nombre entier compris entre 1 et 640.
(Objet [centreX v])
Exemple
au démarrage
[Show if an AprilTag ID is to the left or the right of the camera.]
indéfiniment
obtenir les données [tous les AprilTags v] de la caméra [avant v]
effacer la console
si <Caméra a-t-elle détecté un objet ?> alors
si <(Objet [centreX v]) [math_less_than v] [320]> alors
afficher [To the left] sur la console ▶
sinon
afficher [To the right] sur la console ▶
fin
fin
attendre [0.2] secondes
centreY#
La propriété centerY indique la coordonnée y du centre de l’objet détecté en pixels sous forme d’un nombre entier compris entre 1 et 480.
(Objet [centreY v])
Exemple
au démarrage
[Take off and attempt to align the drone with an AprilTag ID on the wall.]
[Adjust the takeoff height to observe different results.]
décoller à [800] [mm v] ▶
obtenir les données [tous les AprilTags v] de la caméra [avant v]
si <Caméra a-t-elle détecté un objet ?> alors
si <(Objet [centreY v]) [math_less_than v] [240]> alors
afficher [Below the target!] sur la console ▶
sinon
afficher [Above the target!] sur la console ▶
fin
sinon
afficher [No target found!] sur la console ▶
palier#
La propriété relèvement indique un angle représentant la position d’un objet par rapport au drone. Son comportement dépend du capteur de vision utilisé.
Une valeur de 0° indique que le centre de l’objet et le capteur sont alignés. Les valeurs positives signifient que l’objet est à droite, tandis que les valeurs négatives signifient qu’il est à gauche.
Capteur |
Retours |
|---|---|
Vers le bas |
Degrés selon lesquels l’avant du drone doit tourner pour s’aligner avec le centre de l’objet, de –180º à 180º. |
Avant |
Degrés selon lesquels l’objet est décalé à gauche ou à droite du centre du capteur de vision, de –180º à 180º. |
(Objet [orientation v])
Exemples
au démarrage
[Align the front of the drone to an AprilTag ID.]
définir la vitesse de rotation à (15)%
décoller à [500] [mm v] ▶
indéfiniment
obtenir les données [tous les AprilTags v] de la caméra [vers le bas v]
si <Caméra a-t-elle détecté un objet ?> alors
si <[-20] [math_less_than v] (Objet [orientation v]) [math_less_than v] [20]> alors
[Hover once sensor is centered on the AprilTag ID.]
vol stationnaire
jouer le son [succès v] ▶
sinon si <(Objet [orientation v]) [math_less_than v] [-21]> alors
pivoter [à gauche v]
sinon
pivoter [droite v]
rotation#
La propriété rotation indique l’orientation de l’identifiant AprilTag détecté sous forme d’un nombre entier en degrés compris entre 1 et 359.
(Objet [rotation v])
Exemple
au démarrage
[Turn left or right based on the rotation of an AprilTag ID.]
décoller à [1000] [mm v] ▶
indéfiniment
obtenir les données [tous les AprilTags v] de la caméra [avant v]
si <Caméra a-t-elle détecté un objet ?> alors
si <[240] [math_less_than v] (Objet [rotation v]) [math_less_than v] [300]> alors
pivoter [à gauche v] de [90] degrés ▶
sinon si <[60] [math_less_than v] (Objet [rotation v]) [math_less_than v] [120]> alors
pivoter [droite v] de [90] degrés ▶
sinon
vol stationnaire
originX#
La propriété originX indique la coordonnée x du coin supérieur gauche de la boîte englobante de l’objet détecté en pixels sous forme d’un nombre entier compris entre 1 et 640.
(Objet [origineX v])
Exemple
au démarrage
[Draw lines to the AprilTag ID origin from all corners.]
indéfiniment
effacer l'écran
get [all AprilTags v] data from vision [forward v] camera
si <Caméra a-t-elle détecté un objet ?> alors
tracer la ligne reliant le point x1 : [0] y1 : [0] et x2 :(Objet [origineX v]) y2 :(Objet [origineY v]) sur l'écran
tracer la ligne reliant le point x1 : [0] y1 : [480] et x2 :(Objet [origineX v]) y2 :(Objet [origineY v]) sur l'écran
tracer la ligne reliant le point x1 : [640] y1 : [0] et x2 :(Objet [origineX v]) y2 :(Objet [origineY v]) sur l'écran
tracer la ligne reliant le point x1 : [640] y1 : [480] et x2 :(Objet [origineX v]) y2 :(Objet [origineY v]) sur l'écran
fin
attendre [0.2] secondes
origine#
La propriété originY indique la coordonnée y du coin supérieur gauche de la boîte englobante de l’objet détecté en pixels sous forme d’un nombre entier compris entre 1 et 480.
(Objet [origineY v])
Exemple
au démarrage
[Draw lines to the AprilTag ID origin from all corners.]
indéfiniment
effacer l'écran
get [all AprilTags v] data from vision [forward v] camera
si <Caméra a-t-elle détecté un objet ?> alors
tracer la ligne reliant le point x1 : [0] y1 : [0] et x2 :(Objet [origineX v]) y2 :(Objet [origineY v]) sur l'écran
tracer la ligne reliant le point x1 : [0] y1 : [480] et x2 :(Objet [origineX v]) y2 :(Objet [origineY v]) sur l'écran
tracer la ligne reliant le point x1 : [640] y1 : [0] et x2 :(Objet [origineX v]) y2 :(Objet [origineY v]) sur l'écran
tracer la ligne reliant le point x1 : [640] y1 : [480] et x2 :(Objet [origineX v]) y2 :(Objet [origineY v]) sur l'écran
fin
attendre [0.2] secondes
identifiant#
La propriété id indique le numéro d’identification de l’identifiant AprilTag détecté sous forme de nombre entier.
(Objet [id v])
Exemple
au démarrage
[Display the detected AprilTag ID.]
indéfiniment
obtenir les données [tous les AprilTags v] de la caméra [avant v]
effacer la console
si <Caméra a-t-elle détecté un objet ?> alors
afficher (Objet [id v]) sur la console ▶
fin
attendre [0.2] secondes