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.

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

Valores: recupera la presencia, clasificación y propiedades del objeto.

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.

El bloque Obtener pila de datos de objeto.#
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.

El bloque Set AI Vision object item stack.#
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.

Muestre u oculte el bloque de pila del panel de control de AI Vision.#
<¿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.

El ID de AprilTag detectado por AI Vision es un bloque booleano.#
<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.

El bloque Set AI Vision object item stack.#
(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 * *.

El bloque de reportero de propiedad de objeto AI Vision.#
(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.

El bloque de la pila de propiedades del objeto AI Vision con su parámetro establecido en ancho.#
(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.

El bloque de la pila de propiedades del objeto AI Vision con su parámetro establecido en altura.#
(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.

El bloque de la pila de propiedades del objeto AI Vision con su parámetro establecido en centerX.#
(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.

El bloque de la pila de propiedades del objeto AI Vision con su parámetro establecido en centerY.#
(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º.

El bloque de la pila de propiedades del objeto AI Vision con su parámetro establecido en centerY.#
(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.

El bloque de la pila de propiedades del objeto AI Vision con su parámetro establecido en rotación.#
(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.

El bloque de la pila de propiedades del objeto AI Vision con su parámetro establecido en originX.#
(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.

El bloque de la pila de propiedades del objeto AI Vision con su parámetro establecido en originY.#
(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.

El bloque de la pila de propiedades del objeto AI Vision con su parámetro establecido en tagID.#
(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