Visión#
Introducción#
El dron VEX AIR tiene dos sensores de visión que detectan y rastrean las identificaciones de AprilTag. Estos permiten que el dron analice su entorno, siga objetos y reaccione en función de los datos visuales detectados.
A continuación se muestra una lista de todos los bloques disponibles:
Acciones: controle la alimentación de Vision y capture los datos del objeto.
get object data: captura datos para los ID de AprilTag.
Configuración: ajuste a qué objetos detectados se accede.
set Vision object item — Selecciona un objeto específico de la lista de objetos detectados.
Valores: recupera la presencia, clasificación y propiedades del objeto.
Existe un objeto de visión — Informa si se detecta un objeto.
El objeto de visión es AprilTag ID — Comprueba si un AprilTag ID detectado coincide con un ID específico.
Recuento de objetos de visión — Informa el número de objetos detectados.
Vision object property — Recupera detalles como:
centerX y centerY — Coordenadas de posición del centro en la vista del sensor.
rodamiento — Ángulo del objeto con respecto al sensor de visión frontal o los grados necesarios para que el dron mire hacia el objeto.
rotación — Orientación del objeto.
originX y originY — Coordenadas de la posición de la esquina superior izquierda en la vista del sensor.
id — Número de identificación de un AprilTag ID.
Acciones#
obtener datos de objeto#
El bloque de pila * * obtener datos del objeto * * filtra los datos del marco del sensor de visión. Los sensores de visión pueden detectar los ID de AprilTag.
El conjunto de datos almacena objetos ordenados de mayor a menor por ancho, comenzando en el índice 0. Se puede acceder a las propiedades de cada objeto utilizando el bloque Vision object property. Se informa de un conjunto de datos vacío si no se detectan objetos coincidentes.
obtener datos [todos los AprilTags v] de Vision cámara [adelante v]
Parámetro |
Descripción |
|---|---|
firma |
Filtra el conjunto de datos para incluir solo los datos de la firma dada. La firma disponible es all AprilTags. |
cámara |
El sensor de visión para recuperar datos, ya sea hacia adelante o hacia abajo. |
Ejemplo
cuando inicie
[Climb upward when an AprilTag ID is detected.]
despegar a [300] [mm v] ▶
por siempre
obtener datos [todos los AprilTags v] de Vision cámara [adelante v]
si <¿existe objeto de Vision?> entonces
ascender [arriba v] por [200] [mm v] ▶
Ajustes#
establecer elemento de objeto de visión#
El bloque de pila * * set Vision object item * * establece qué elemento del conjunto de datos usar.
establecer elemento de objeto de Vision a [1]
Parámetros |
Descripción |
|---|---|
artículo |
El número del elemento en el conjunto de datos a utilizar. |
Ejemplo
cuando inicie
[Display the smallest-appearing AprilTag ID.]
por siempre
obtener datos [todos los AprilTags v] de Vision cámara [adelante v]
limpiar consola
si <¿existe objeto de Vision?> entonces
establecer elemento de objeto de Vision a (cantidad de objetos de Vision)
imprimir (objeto de Vision [id v]) en consola ▶
Valores#
El objeto de visión existe#
El Objeto de visión existe El bloque booleano informa si el sensor de visión especificado detecta actualmente algún objeto.
Verdadero: el sensor de visión especificado detecta un objeto.
Falso: el sensor de visión especificado no detecta ningún objeto.
<¿existe objeto de Vision?>
Parámetro |
Descripción |
|---|---|
Este bloque no tiene parámetros. |
Ejemplo
cuando inicie
[Climb upward when an AprilTag ID is detected.]
despegar a [300] [mm v] ▶
por siempre
obtener datos [todos los AprilTags v] de Vision cámara [adelante v]
si <¿existe objeto de Vision?> entonces
ascender [arriba v] por [200] [mm v] ▶
El objeto de visión es AprilTag ID#
El objeto Vision es AprilTag ID El bloque booleano informa si AprilTag ID es un número de ID específico.
Verdadero: el ID de AprilTag es el número.
Falso: el ID de AprilTag no es el número.
<Vision object is AprilTag ID [1]>
Parámetros |
Descripción |
|---|---|
Número de identificación de AprilTag |
El número a comparar con el número de ID de AprilTag detectado de 0 a 37. |
Ejemplo
cuando inicie
[Display when the target AprilTag ID is detected.]
por siempre
obtener datos [todos los AprilTags v] de Vision cámara [adelante v]
limpiar consola
si <¿existe objeto de Vision?> entonces
si <Vision object is AprilTag ID [21]> entonces
imprimir [Target found!] en consola ▶
fin
Recuento de objetos de visión#
El bloque de informe Recuento de objetos de visión informa la cantidad de objetos detectados en el conjunto de datos como un número entero.
(cantidad de objetos de Vision)
Parámetros |
Descripción |
|---|---|
Este bloque no tiene parámetros. |
Ejemplo
cuando inicie
[Display how many AprilTag IDs are detected.]
por siempre
obtener datos [todos los AprilTags v] de Vision cámara [adelante v]
limpiar consola
imprimir (cantidad de objetos de Vision) en consola ▶
esperar [0.2] segundos
Propiedad del objeto de visión#
Hay varias propiedades que se incluyen con cada objeto (que se muestra a continuación) almacenado después de usar el bloque * * get object data * *.
(objeto de Vision [ancho v])
Todos los valores de propiedad, excepto id, describen la posición, el tamaño, la orientación o el rumbo del objeto detectado en el momento en que se utilizó el bloque obtener datos del objeto. Estos valores se miden en píxeles o grados. Cada sensor de visión tiene una resolución diferente:
Orientado hacia adelante: 640 x 480 píxeles
Orientado hacia abajo: 640 x 400 píxeles
Parámetro |
Descripción |
|---|---|
propiedad |
¿Qué propiedad del objeto detectado utilizar?: |
ancho#
La propiedad * * width * * informa del ancho del objeto detectado en píxeles como un número entero del 1 al 640.
(objeto de Vision [ancho v])
Ejemplo
cuando inicie
[Show if the AprilTag ID appears large or small.]
por siempre
obtener datos [todos los AprilTags v] de Vision cámara [adelante v]
limpiar consola
si <¿existe objeto de Vision?> entonces
si <(objeto de Vision [ancho v]) [math_greater_than v] [100]> entonces
imprimir [Large] en consola ▶
si no
imprimir [Small] en consola ▶
fin
fin
esperar [0.2] segundos
altura#
La propiedad altura informa la altura del objeto detectado en píxeles como un número entero del 1 al 480.
(objeto de Vision [alto v])
Ejemplo
cuando inicie
[Show if the AprilTag ID appears large or small.]
por siempre
obtener datos [todos los AprilTags v] de Vision cámara [adelante v]
limpiar consola
si <¿existe objeto de Vision?> entonces
si <(objeto de Vision [alto v]) [math_greater_than v] [100]> entonces
imprimir [Large] en consola ▶
si no
imprimir [Small] en consola ▶
fin
fin
esperar [0.2] segundos
centerX#
La propiedad centerX informa la coordenada x del centro del objeto detectado en píxeles como un número entero del 1 al 640.
(objeto de Vision [centroX v])
Ejemplo
cuando inicie
[Show if an AprilTag ID is to the left or the right of the camera.]
por siempre
obtener datos [todos los AprilTags v] de Vision cámara [adelante v]
limpiar consola
si <¿existe objeto de Vision?> entonces
si <(objeto de Vision [centroX v]) [math_less_than v] [320]> entonces
imprimir [To the left] en consola ▶
si no
imprimir [To the right] en consola ▶
fin
fin
esperar [0.2] segundos
centerY#
La propiedad *centerY * informa la coordenada y del centro del objeto detectado en píxeles como un número entero de 1 a 480.
(objeto de Vision [centroY v])
Ejemplo
cuando inicie
[Take off and attempt to align the drone with an AprilTag ID on the wall.]
[Adjust the takeoff height to observe different results.]
despegar a [800] [mm v] ▶
obtener datos [todos los AprilTags v] de Vision cámara [adelante v]
si <¿existe objeto de Vision?> entonces
si <(objeto de Vision [centroY v]) [math_less_than v] [240]> entonces
imprimir [Below the target!] en consola ▶
si no
imprimir [Above the target!] en consola ▶
fin
si no
imprimir [No target found!] en consola ▶
rodamiento#
La propiedad rodamiento informa un ángulo que indica la posición de un objeto en relación con el dron. El comportamiento depende del sensor de visión que se utilice.
Un valor de 0° indica que el centro del objeto y el sensor están alineados. Los valores positivos significan que el objeto está a la derecha, mientras que los valores negativos significan que el objeto está a la izquierda.
Sensor |
Devoluciones |
|---|---|
Hacia abajo |
Grados la parte frontal del dron debe girar para alinearse con el centro del objeto, de –180º a 180º. |
Reenviar |
Grados en que el objeto está desplazado a la izquierda o derecha del centro del sensor de visión de –180º a 180º. |
(objeto de Vision [rumbo v])
Ejemplos
cuando inicie
[Align the front of the drone to an AprilTag ID.]
establecer velocidad de giro a (15)%
despegar a [500] [mm v] ▶
por siempre
obtener datos [todos los AprilTags v] de Vision cámara [hacia abajo v]
si <¿existe objeto de Vision?> entonces
si <[-20] [math_less_than v] (objeto de Vision [rumbo v]) [math_less_than v] [20]> entonces
[Hover once sensor is centered on the AprilTag ID.]
flotar
reproducir sonido [éxito v] ▶
si no, si <(objeto de Vision [rumbo v]) [math_less_than v] [-21]> entonces
girar [izquierda v]
si no
girar [derecha v]
rotación#
La propiedad rotación informa de la orientación del ID de AprilTag detectado como un número entero en grados de 1 a 359.
(objeto de Vision [rotación v])
Ejemplo
cuando inicie
[Turn left or right based on the rotation of an AprilTag ID.]
despegar a [1000] [mm v] ▶
por siempre
obtener datos [todos los AprilTags v] de Vision cámara [adelante v]
si <¿existe objeto de Vision?> entonces
si <[240] [math_less_than v] (objeto de Vision [rotación v]) [math_less_than v] [300]> entonces
girar [izquierda v] por [90] grados ▶
si no, si <[60] [math_less_than v] (objeto de Vision [rotación v]) [math_less_than v] [120]> entonces
girar [derecha v] por [90] grados ▶
si no
flotar
originX#
La propiedad originX informa la coordenada x de la esquina superior izquierda del cuadro delimitador del objeto detectado en píxeles como un número entero de 1 a 640.
(objeto de Vision [origenX v])
Ejemplo
cuando inicie
[Draw lines to the AprilTag ID origin from all corners.]
por siempre
limpiar pantalla
get [all AprilTags v] data from vision [forward v] camera
si <¿existe objeto de Vision?> entonces
dibujar línea [0] [0] (objeto de Vision [origenX v]) (objeto de Vision [origenY v]) en pantalla
dibujar línea [0] [480] (objeto de Vision [origenX v]) (objeto de Vision [origenY v]) en pantalla
dibujar línea [640] [0] (objeto de Vision [origenX v]) (objeto de Vision [origenY v]) en pantalla
dibujar línea [640] [480] (objeto de Vision [origenX v]) (objeto de Vision [origenY v]) en pantalla
fin
esperar [0.2] segundos
originY#
La propiedad *originY * informa la coordenada y de la esquina superior izquierda del cuadro delimitador del objeto detectado en píxeles como un número entero de 1 a 480.
(objeto de Vision [origenY v])
Ejemplo
cuando inicie
[Draw lines to the AprilTag ID origin from all corners.]
por siempre
limpiar pantalla
get [all AprilTags v] data from vision [forward v] camera
si <¿existe objeto de Vision?> entonces
dibujar línea [0] [0] (objeto de Vision [origenX v]) (objeto de Vision [origenY v]) en pantalla
dibujar línea [0] [480] (objeto de Vision [origenX v]) (objeto de Vision [origenY v]) en pantalla
dibujar línea [640] [0] (objeto de Vision [origenX v]) (objeto de Vision [origenY v]) en pantalla
dibujar línea [640] [480] (objeto de Vision [origenX v]) (objeto de Vision [origenY v]) en pantalla
fin
esperar [0.2] segundos
id#
La propiedad id informa el número de identificación del ID de AprilTag detectado como un número entero.
(objeto de Vision [id v])
Ejemplo
cuando inicie
[Display the detected AprilTag ID.]
por siempre
obtener datos [todos los AprilTags v] de Vision cámara [adelante v]
limpiar consola
si <¿existe objeto de Vision?> entonces
imprimir (objeto de Vision [id v]) en consola ▶
fin
esperar [0.2] segundos