Visión#

Introducción#

El dron VEX AIR cuenta con dos sensores de visión que detectan y rastrean los identificadores AprilTag. Esto le permite analizar su entorno, seguir objetos y reaccionar según los datos visuales detectados.

A continuación se muestra una lista de todos los bloques disponibles:

Acciones: Controlar la alimentación de visión y capturar datos de objetos.

Configuración: ajusta a qué objetos detectados se accede.

Valores: recupera la presencia, clasificación y propiedades de los objetos.

Comportamiento#

obtener datos del objeto#

El bloque obtener datos del objeto filtra los datos del marco del sensor de visión. Este puede detectar los identificadores 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 mediante el bloque Propiedad del objeto de visión. Si no se detectan objetos coincidentes, se devuelve un conjunto de datos vacío.

El bloque de pila Obtener datos del objeto.#
[all AprilTags v] se obtienen datos de la cámara Vision [adelante v]

Parámetro

Descripción

firma

Filtra el conjunto de datos para incluir solo los datos de la firma especificada. Las firmas disponibles son:

  • todas las etiquetas de abril,

Ejemplo

cuando empezó
[Climb upward when an AprilTag ID is detected.]
despegar a [300] [mm v] ▶
para siempre
[all AprilTags v] se obtienen datos de la cámara Vision [adelante v]
si <¿Existe el objeto de visión?> entonces
subir [arriba v] por [200] [mm v] ▶

Ajustes#

Establecer elemento del objeto Visión#

El bloque establecer elemento de objeto de visión establece qué elemento del conjunto de datos utilizar.

El bloque de pila de elementos del objeto Establecer visión de IA.#
Establecer el elemento del objeto Visión en [1]

Parámetros

Descripción

artículo

El número del elemento en el conjunto de datos a utilizar.

Ejemplo

cuando empezó
[Display the smallest-appearing AprilTag ID.]
para siempre
[all AprilTags v] se obtienen datos de la cámara Vision [adelante v]
borrar la consola
si <¿Existe el objeto de visión?> entonces
Establecer el elemento del objeto Visión en (Recuento de objetos de visión)
imprimir (Objeto de visión [id v]) en la consola ▶

Valores#

¿Existe el objeto de visión?#

El bloque ¿Existe objeto de visión? informa si el sensor de visión especificado detecta algún objeto. Este bloque devuelve un valor booleano:

  • Verdadero: el sensor de visión especificado detecta un objeto.

  • Falso: el sensor de visión especificado no detecta un objeto.

El bloque de pila del panel de control de AI Vision para mostrar u ocultar.#
<¿Existe el objeto de visión?>

Parámetro

Descripción

Este bloque no tiene parámetros.

Ejemplo

cuando empezó
[Climb upward when an AprilTag ID is detected.]
despegar a [300] [mm v] ▶
para siempre
[all AprilTags v] se obtienen datos de la cámara Vision [adelante v]
si <¿Existe el objeto de visión?> entonces
subir [arriba v] por [200] [mm v] ▶

El objeto de visión es AprilTag ID#

El bloque ¿El objeto de visión es el ID de AprilTag? informa si AprilTag es un número de ID específico. Este bloque devuelve un valor booleano:

  • Verdadero — El ID de AprilTag es el número.

  • Falso — El ID de AprilTag no es el número.

La IA Vision detectó que AprilTag es un bloque booleano.#
<Vision object is AprilTag [1]>

Parámetros

Descripción

Número de etiqueta de abril

El número a comparar con el número de identificación de AprilTag detectado de 0 a 37.

Ejemplo

cuando empezó
[Display when the target AprilTag ID is detected.]
para siempre
[all AprilTags v] se obtienen datos de la cámara Vision [adelante v]
borrar la consola
si <¿Existe el objeto de visión?> entonces
si <Vision object is AprilTag [21]> entonces
imprimir [Target found!] en la consola ▶
fin

Recuento de objetos de visión#

El bloque Conteo de objetos de visión devuelve la cantidad de objetos detectados en el conjunto de datos.

El bloque de pila de elementos del objeto Establecer visión de IA.#
(Recuento de objetos de visión)

Parámetros

Descripción

Este bloque no tiene parámetros.

Ejemplo

cuando empezó
[Display how many AprilTags are detected.]
para siempre
[all AprilTags v] se obtienen datos de la cámara Vision [adelante v]
borrar la consola
imprimir (Recuento de objetos de visión) en la consola ▶
esperar [0.2] segundos

Propiedad del objeto de visión#

Hay varias propiedades que se incluyen con cada objeto (que se muestran a continuación) almacenadas después de que se utiliza el bloque obtener datos del objeto.

El bloque informador de propiedades de objetos de AI Vision.#
(Objeto de visión [amplitud v])

Algunos valores de propiedad se basan en la posición del objeto detectado en la vista del sensor de visión al usar el bloque obtener datos del objeto. Cada sensor de visión tiene una resolución diferente:

  • Orientado hacia adelante: 640 x 480 píxeles

  • Mirando hacia abajo: 640 x 400 píxeles

Parámetro

Descripción

propiedad

¿Qué propiedad del objeto detectado utilizar?

ancho#

width devuelve el ancho del objeto detectado en píxeles como un entero de 1 a 640.

El bloque de pila de propiedades del objeto AI Vision con su parámetro establecido en ancho.#
(Objeto de visión [amplitud v])

Ejemplo

cuando empezó
[Show if the AprilTag ID appears large or small.]
para siempre
[all AprilTags v] se obtienen datos de la cámara Vision [adelante v]
borrar la consola
si <¿Existe el objeto de visión?> entonces
si <(Objeto de visión [amplitud v]) [math_greater_than v] [100]> entonces
imprimir [Large] en la consola ▶
demás
imprimir [Small] en la consola ▶
fin
fin
esperar [0.2] segundos

altura#

altura devuelve la altura del objeto detectado en píxeles como un entero de 1 a 480.

El bloque de pila de propiedades del objeto AI Vision con su parámetro establecido en altura.#
(Objeto de visión [altura v])

Ejemplo

cuando empezó
[Show if the AprilTag ID appears large or small.]
para siempre
[all AprilTags v] se obtienen datos de la cámara Vision [adelante v]
borrar la consola
si <¿Existe el objeto de visión?> entonces
si <(Objeto de visión [altura v]) [math_greater_than v] [100]> entonces
imprimir [Large] en la consola ▶
demás
imprimir [Small] en la consola ▶
fin
fin
esperar [0.2] segundos

centroX#

centerX devuelve la coordenada x del centro del objeto detectado en píxeles como un entero de 1 a 640.

El bloque de pila de propiedades del objeto AI Vision con su parámetro establecido en centerX.#
(Objeto de visión [centroX v])

Ejemplo

cuando empezó
[Show if an AprilTag is to the left or the right of the camera.]
para siempre
[all AprilTags v] se obtienen datos de la cámara Vision [adelante v]
borrar la consola
si <¿Existe el objeto de visión?> entonces
si <(Objeto de visión [centroX v]) [math_less_than v] [320]> entonces
imprimir [To the left] en la consola ▶
demás
imprimir [To the right] en la consola ▶
fin
fin
esperar [0.2] segundos

centroY#

centerY devuelve la coordenada y del centro del objeto detectado en píxeles como un entero de 1 a 480.

El bloque de pila de propiedades del objeto AI Vision con su parámetro establecido en centerY.#
(Objeto de visión [centroY v])

Ejemplo

cuando empezó
[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] ▶
[all AprilTags v] se obtienen datos de la cámara Vision [adelante v]
si <¿Existe el objeto de visión?> entonces
si <(Objeto de visión [centroY v]) [math_less_than v] [240]> entonces
imprimir [Below the target!] en la consola ▶
demás
imprimir [Above the target!] en la consola ▶
fin
demás
imprimir [No target found!] en la consola ▶

cojinete#

Rumbo devuelve un ángulo que indica la posición de un objeto con respecto al dron. El comportamiento depende del sensor de visión utilizado.

Un valor de 0° indica que el centro del objeto y el sensor están alineados. Los valores positivos indican que el objeto está a la derecha, mientras que los negativos indican que está a la izquierda.

Sensor

Devoluciones

Hacia abajo

Grados que debe girar la parte frontal del dron para alinearse con el centro del objeto, de –180º a 180º.

Adelante

Grados en los que el objeto se desplaza hacia la izquierda o la derecha del centro del sensor de visión, de –180º a 180º.

El bloque de pila de propiedades del objeto AI Vision con su parámetro establecido en centerY.#
(Objeto de visión [rodamiento v])

Ejemplos

cuando empezó
[Align the front of the drone to an AprilTag ID.]
set turn velocity to (15) %
despegar a [500] [mm v] ▶
para siempre
[all AprilTags v] se obtienen datos de la cámara Vision [hacia abajo v]
si <¿Existe el objeto de visión?> entonces
si <[-20] [math_less_than v] (Objeto de visión [rodamiento v]) [math_less_than v] [20]> entonces
[Hover once sensor is centered on the AprilTag ID.]
flotar
reproducir sonido [éxito v] ▶
de lo contrario si <(Objeto de visión [rodamiento v]) [math_less_than v] [-21]> entonces
turno [izquierda v]
demás
turno [derecha v]

rotación#

rotación devuelve la orientación del AprilTag detectado como un entero en grados de 1 a 360.

El bloque de pila de propiedades del objeto AI Vision con su parámetro establecido en rotación.#
(Objeto de visión [rotación v])

Ejemplo

cuando empezó
[Turn left or right based on the rotation of an AprilTag ID.]
despegar a [1000] [mm v] ▶
para siempre
[all AprilTags v] se obtienen datos de la cámara Vision [adelante v]
si <¿Existe el objeto de visión?> entonces
si <[240] [math_less_than v] (Objeto de visión [rotación v]) [math_less_than v] [300]> entonces
girar [izquierda v] por [90] grado ▶
de lo contrario si <[60] [math_less_than v] (Objeto de visión [rotación v]) [math_less_than v] [120]> entonces
girar [derecha v] por [90] grado ▶
demás
flotar

origenX#

originX devuelve 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.

El bloque de pila de propiedades del objeto AI Vision con su parámetro establecido en originX.#
(Objeto de visión [origenX v])

Ejemplo

cuando empezó
[Draw lines to the AprilTag origin from all corners.]
para siempre
pantalla clara
get [all AprilTags v] data from vision [forward v] camera
si <¿Existe el objeto de visión?> entonces
dibuja la línea [0] [0] (Objeto de visión [origenX v]) (Objeto de visión [origenY v]) en la pantalla
dibuja la línea [0] [480] (Objeto de visión [origenX v]) (Objeto de visión [origenY v]) en la pantalla
dibuja la línea [640] [0] (Objeto de visión [origenX v]) (Objeto de visión [origenY v]) en la pantalla
dibuja la línea [640] [480] (Objeto de visión [origenX v]) (Objeto de visión [origenY v]) en la pantalla
fin
esperar [0.2] segundos

origenY#

originY devuelve 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.

El bloque de pila de propiedades del objeto AI Vision con su parámetro establecido en originY.#
(Objeto de visión [origenY v])

Ejemplo

cuando empezó
[Draw lines to the AprilTag origin from all corners.]
para siempre
pantalla clara
get [all AprilTags v] data from vision [forward v] camera
si <¿Existe el objeto de visión?> entonces
dibuja la línea [0] [0] (Objeto de visión [origenX v]) (Objeto de visión [origenY v]) en la pantalla
dibuja la línea [0] [480] (Objeto de visión [origenX v]) (Objeto de visión [origenY v]) en la pantalla
dibuja la línea [640] [0] (Objeto de visión [origenX v]) (Objeto de visión [origenY v]) en la pantalla
dibuja la línea [640] [480] (Objeto de visión [origenX v]) (Objeto de visión [origenY v]) en la pantalla
fin
esperar [0.2] segundos

identificación#

id devuelve el número de identificación del ID de AprilTag detectado como un entero.

El bloque de pila de propiedades del objeto AI Vision con su parámetro establecido en tagID.#
(Objeto de visión [id v])

Ejemplo

cuando empezó
[Display the detected AprilTag ID.]
para siempre
[all AprilTags v] se obtienen datos de la cámara Vision [adelante v]
borrar la consola
si <¿Existe el objeto de visión?> entonces
imprimir (Objeto de visión [id v]) en la consola ▶
fin
esperar [0.2] segundos