Sensor de visión de IA#

Introducción#

El sensor de visión VEX IQ AI puede detectar y rastrear objetos, colores e ID de AprilTag. Esto permite al robot analizar su entorno, seguir objetos y reaccionar en función de los datos visuales detectados.

Los ejemplos de AI Vision están diseñados para su uso con un Basebot equipado con un sensor de visión VEX IQ AI. En estos ejemplos, el sensor se configura con el nombre AIVision1, que aparece en los bloques.

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

Acciones: captura datos del sensor de visión VEX IQ AI para una firma seleccionada.

  • get object data: captura datos para una firma específica, como un color configurado, un objeto preentrenado o un ID de AprilTag.

Configuración: elige con qué objeto interactuar.

Valores: accede y usa los datos capturados.

Acciones#

obtener datos de objeto#

El bloque de pila * * obtener datos del objeto * * filtra los datos del marco del sensor de visión VEX IQ AI en una sola firma: una descripción guardada de algo que el sensor puede reconocer, como un objeto preentrenado, un ID de AprilTag o un color o código de color configurado.

Los colores y los códigos de color deben configurarse primero en AI Vision Utility antes de que puedan usarse con este bloque.

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 AI 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 [SELECT_A_SIG v] de [AIVision1 v]

Parámetro

Descripción

firma

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

Nota: Para que aparezcan las opciones AprilTag ID o AI Classification, su detección debe estar habilitada en AI Vision Utility.

Ejemplo

cuando inicie
[Drive forward if an AprilTag ID is detected.]
por siempre
obtener datos [AprilTag IDs v] de [AIVision1 v]
si <¿existe objeto de [AIVIsion1 v]?> entonces
conducir [adelante v] por [10] [mm v] ▶

Clasificaciones de IA#

El sensor de visión VEX IQ AI puede detectar diferentes objetos bajo ciertas clasificaciones de IA. Dependiendo del modelo de clasificación de IA seleccionado al configurar el sensor de visión VEX IQ AI en la ventana Dispositivos, se detectarán diferentes objetos. Los modelos disponibles actualmente son:

Objetos de clase

  • BlueBall

  • GreenBall

  • RedBall

  • BlueRing

  • Anillo verde

  • RedRing

  • BlueCube

  • GreenCube

  • RedCube

VEX IQ Robotics Competition Mix & Match

  • Viga

  • RedPin

  • BluePin

  • OrangePin

Subir de nivel en la competición de robótica VEX IQ

  • BlueBeanBag

  • RedBeanBag

  • YellowBeanBag

Firmas de color#

Una firma de color es un color único que el sensor de visión VEX IQ AI puede reconocer. Estas firmas permiten que el sensor detecte y rastree objetos en función de su color. Una vez que se configura una firma de color, el sensor puede identificar objetos con ese color específico en su campo de visión.

Las firmas de color se utilizan en el bloque get object data para procesar y detectar objetos de color en tiempo real. Se pueden configurar hasta 7 firmas de color a la vez.

AI Vision Utility muestra un sensor de visión conectado que detecta dos objetos de colores. El lado izquierdo muestra una transmisión de cámara en vivo con un cuadro azul a la izquierda y un cuadro rojo a la derecha, cada uno delineado con cuadros delimitadores blancos. Las etiquetas negras muestran sus respectivos nombres, coordenadas y dimensiones. El lado derecho contiene la configuración de la firma de color, con controles deslizantes para el tono y el rango de saturación para los cuadros rojo y azul. Los botones para agregar colores, congelar videos, copiar y guardar la imagen se encuentran en la parte inferior, junto con un botón de cierre en la esquina inferior derecha.

Ejemplo

cuando inicie
[Display if any objects matching the RED_BOX signature is detected.]
por siempre
mover cursor a fila [1] columna [1] en pantalla
limpiar fila [1] en pantalla
[Change the signature to any configured Color Signature.]
obtener datos [RED_BOX v] de [AIVision1 v]
si <¿existe objeto de [AIVision1 v]?> entonces
imprimir [Color detected!] en pantalla ▶

Códigos de color#

Un código de color es un patrón estructurado compuesto por 2 a 4 firmas de color dispuestas en un orden específico. Estos códigos permiten que el sensor de visión VEX IQ AI reconozca patrones predefinidos de colores.

Los códigos de color son particularmente útiles para identificar objetos complejos, alinearse con elementos del juego o crear marcadores únicos para la navegación autónoma. Se pueden configurar hasta 8 códigos de color a la vez.

La interfaz de AI Vision Utility muestra un sensor de visión conectado que detecta dos objetos adyacentes, un cuadro azul a la izquierda y un cuadro rojo a la derecha, agrupados en un solo cuadro delimitador blanco etiquetado como BlueRed. La información de detección incluye el ángulo (A:11°), las coordenadas (X:143, Y:103), el ancho (W:233) y la altura (H:108). En el panel derecho, se muestran tres firmas de color: Red_Box, Blue_Box y BlueRed, con rangos de tonalidad y saturación ajustables. La firma BlueRed combina Blue_Box y Red_Box. Debajo de la fuente de video hay botones etiquetados como Congelar video, Copiar imagen, Guardar imagen y Cerrar.

Ejemplo

cuando inicie
[Display if any objects matching the RED_BLUE code is detected.]
por siempre
mover cursor a fila [1] columna [1] en pantalla
limpiar fila [1] en pantalla
[Change the signature to any configured Color Code.]
obtener datos [RED_BLUE v] de [AIVision1 v]
si <¿existe objeto de [AIVIsion1 v]?> entonces
imprimir [Code detected!] en pantalla ▶

Ajustes#

establecer elemento de objeto AI Vision#

El bloque de pila set AI Vision object item establece qué elemento del conjunto de datos usar.

El bloque Set AI Vision object item stack.#
establecer elemento de objeto de [AIVision1 v] a (1)

Parámetros

Descripción

artículo

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

Ejemplo

Una pila de bloques que comienza con un bloque cuando se inicia, seguido de un bloque de comentarios que dice Mostrar el ID de AprilTag más grande detectado. Dentro de un bucle Forever, un bloque de instantáneas de tomar una visión de IA captura una imagen de los ID de AprilTag. Un bloque if comprueba si existe un objeto AI Vision. Si es verdadero, un bloque de elemento de objeto AI Vision establecido asigna el recuento de objetos a una variable, y un bloque de impresión muestra el ID de etiqueta del objeto detectado en la pantalla.#
cuando inicie
[Display the largest detected AprilTag ID.]
por siempre
obtener datos [AprilTag IDs v] de [AIVision1 v]
limpiar fila [1] en pantalla
mover cursor a fila [1] columna [1] en pantalla
si <¿existe objeto de [AIVision1 v]?> entonces
establecer elemento de objeto de [AIVision1 v] a (cantidad de objetos de [AIVision1 v])
imprimir (objeto [tagID v] de [AIVision1 v]) en pantalla ▶

Valores#

Existe el objeto AI Vision#

El bloque booleano AI Vision existe informa si se detecta algún objeto en el conjunto de datos.

  • Verdadero: el conjunto de datos incluye un objeto detectado.

  • Falso: el conjunto de datos no incluye ningún objeto detectado.

El objeto AI Vision existe como bloque booleano.#
<¿existe objeto de [AIVision1 v]?>

Parámetros

Descripción

Este bloque no tiene parámetros.

Ejemplo

cuando inicie
[Drive forward if an object is detected.]
por siempre
obtener datos [Clasificaciones de IA v] de [AIVision1 v]
si <¿existe objeto de [AIVision1 v]?> entonces
conducir [adelante v] por [10] [mm v] ▶

Recuento de objetos de AI Vision#

El bloque indicador AI Vision object count informa del número 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 [AIVision1 v])

Parámetros

Descripción

Este bloque no tiene parámetros.

Ejemplo

cuando inicie
[Display the total amount of cubes, rings, and balls.]
por siempre
limpiar fila [1] en pantalla
mover cursor a fila [1] columna [1] en pantalla
obtener datos [Clasificaciones de IA v] de [AIVision1 v]
si <¿existe objeto de [AIVision1 v]?> entonces
imprimir (cantidad de objetos de [AIVision1 v]) en pantalla ▶
fin
esperar [0.5] segundos

Propiedad del objeto AI Vision#

Hay nueve 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 [ancho v] de [AIVision1 v])

Todos los valores de propiedad, excepto tagID , describen la posición y el tamaño del objeto detectado en la vista del sensor de visión VEX IQ AI en el momento en que se utilizó el bloque obtener datos del objeto * *. Estos valores se miden en píxeles, en función de la resolución de 320 por 240 píxeles del sensor.

Parámetro

Descripción

propiedad

Qué propiedad del objeto detectado usar:

ancho#

La propiedad * * width * * informa del ancho del objeto detectado en píxeles como un número entero del 1 al 320.

El bloque de la pila de propiedades del objeto AI Vision con su parámetro establecido en ancho.#
(objeto [ancho v] de [AIVision1 v])

Ejemplo

cuando inicie
[Drive towards an object until its width is larger than 100 pixels.]
por siempre
obtener datos [Clasificaciones de IA v] de [AIVision1 v]
si <¿existe objeto de [AIVision1 v]?> entonces
si <(objeto [ancho v] de [AIVision1 v]) [math_less_than v] [100]> entonces
conducir [adelante v]
fin
si no
detener conducción

altura#

La propiedad altura informa la altura del objeto detectado en píxeles como un número entero del 1 al 240.

El bloque de la pila de propiedades del objeto AI Vision con su parámetro establecido en altura.#
(objeto [alto v] de [AIVision1 v])

Ejemplo

cuando inicie
[Drive towards an object until its height is larger than 100 pixels.]
por siempre
obtener datos [Clasificaciones de IA v] de [AIVision1 v]
si <¿existe objeto de [AIVision1 v]?> entonces
si <(objeto [alto v] de [AIVision1 v]) [math_less_than v] [100]> entonces
conducir [adelante v]
fin
si no
detener conducción

centerX#

La propiedad * * centerX* * informa la coordenada x del centro del objeto detectado en píxeles como un número entero de 0 a 320.

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

Ejemplo

cuando inicie
[Turn slowly until an object is centered in front of the robot.]
establecer velocidad de giro a [30] [% v]
girar [derecha v]
por siempre
obtener datos [Clasificaciones de IA v] de [AIVision1 v]
si <¿existe objeto de [AIVision1 v]?> entonces
si <[140] [math_less_than v] (objeto [centroX v] de [AIVision1 v]) [math_less_than v] [180]> entonces
detener conducción

centerY#

La propiedad *centerY * informa la coordenada y del centro del objeto detectado en píxeles como un número entero de 0 a 240.

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

Ejemplo

cuando inicie
[Drive towards an object until its center y-coordinate is more than 140 pixels.]
por siempre
obtener datos [Clasificaciones de IA v] de [AIVision1 v]
si <¿existe objeto de [AIVision1 v]?> entonces
si <(objeto [centroY v] de [AIVision1 v]) [math_less_than v] [140]> entonces
conducir [adelante v]
fin
si no
detener conducción

ángulo#

La propiedad Angle informa de la orientación del código de color detectado o del ID de AprilTag como un número entero en grados de 0 a 359.

El bloque de la pila de propiedades del objeto AI Vision con su parámetro establecido en ángulo.#
(objeto [ángulo v] de [AIVision1 v])

Ejemplo

cuando inicie
[Slide left or right depending on how the Color Code is rotated.]
por siempre
obtener datos [RED_BLUE v] de [AIVision1 v]
si <¿existe objeto de [AIVision1 v]?> entonces
si <[50] [math_less_than v] (objeto [ángulo v] de [AIVision1 v]) [math_less_than v] [100]> entonces
conducir [derecha v]
si no, si <[270] [math_less_than v] (objeto [ángulo v] de [AIVision1 v]) [math_less_than v] [330]> entonces
conducir [izquierda v]
si no
detener conducción
fin
si no
detener conducción

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 0 a 320.

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

Ejemplo

cuando inicie
[Display if an object is to the left or the right.]
por siempre
limpiar fila [1] en pantalla
mover cursor a fila [1] columna [1] en pantalla
obtener datos [Clasificaciones de IA v] de [AIVision1 v]
si <¿existe objeto de [AIVision1 v]?> entonces
si <(objeto [origenX v] de [AIVision1 v]) [math_less_than v] [160]> entonces
imprimir [To the left!] en pantalla ▶
si no
imprimir [To the right!] en pantalla ▶
fin
esperar [0.5] 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 0 a 240.

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

Ejemplo

cuando inicie
[Display if an object is close or far from the robot.]
por siempre
limpiar fila [1] en pantalla
mover cursor a fila [1] columna [1] en pantalla
obtener datos [Clasificaciones de IA v] de [AIVision1 v]
si <¿existe objeto de [AIVision1 v]?> entonces
si <(objeto [origenY v] de [AIVision1 v]) [math_less_than v] [80]> entonces
imprimir [Far!] en pantalla ▶
si no
imprimir [Close!] en pantalla ▶
fin
esperar [0.5] segundos

tagID#

La propiedad *tagID * 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 [tagID v] de [AIVision1 v])

Ejemplo

cuando inicie
[Drive forward when AprilTag ID 0 is detected.]
por siempre
obtener datos [AprilTag IDs v] de [AIVision1 v]
si <¿existe objeto de [AIVision1 v]?> entonces
si <(objeto [tagID v] de [AIVision1 v]) [math_equal v] [0]> entonces
conducir [adelante v]
si no
detener conducción
fin
esperar [0.5] segundos

¿El objeto AI Vision es?#

El bloque AI Vision es? informa de un booleano que indica si un objeto detectado coincide con una clasificación específica.

  • Verdadero: el elemento del conjunto de datos es el objeto específico.

  • Falso: el elemento del conjunto de datos no es el objeto específico.

La clasificación AI Vision AI es un bloque booleano de objeto.#
<¿objeto de [AIVision1 v] es [BlueBall v]?>

Parámetro

Descripción

objeto

Con qué Clasificación de IA comparar el artículo.

Ejemplo

cuando inicie
[Display if a Blue Cube is detected.]
por siempre
obtener datos [Clasificaciones de IA v] de [AIVision1 v]
limpiar fila [1] en pantalla
mover cursor a fila [1] columna [1] en pantalla
si <¿existe objeto de [AIVision1 v]?> entonces
si <¿objeto de [AIVision1 v] es [BlueCube v]?> entonces
imprimir [Cube detected!] en pantalla ▶
esperar [0.5] segundos

¿El objeto AI Vision es AprilTag?#

El bloque AI Vision es AprilTag? informa de un booleano que indica si el objeto detectado es un AprilTag que coincide con un ID específico.

  • Verdadero: el objeto detectado es una etiqueta de abril con el ID dado.

  • Falso: el objeto detectado no es una etiqueta de abril con el ID dado.

El objeto AI Vision es el bloque booleano AprilTag.#
<¿objeto de [AIVision1 v] es AprilTag [0]?>

Parámetro

Descripción

ID de AprilTag

El número de identificación para comparar con la etiqueta de abril detectada.

Ejemplo

cuando inicie
[Report if AprilTag 3 is detected.]
por siempre
limpiar pantalla
mover cursor a fila [1] columna [1] en pantalla
obtener datos [AprilTag IDs v] de [AIVision1 v]
si <¿existe objeto de [AIVision1 v]?> entonces
si <¿objeto de [AIVision1 v] es AprilTag [3]?> entonces
imprimir [That is 3!] en pantalla ▶
si no
imprimir [That isn't 3!] en pantalla ▶
fin
fin
esperar [0.1] segundos

¿El objeto AI Vision es AprilTag ID?#

El bloque AI Vision es AprilTag ID? informa de un booleano que indica si un AprilTag ID detectado coincide con un 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.#
<[AIVision1 v] 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.

Ejemplo:

cuando inicie
[Report if AprilTag ID 3 is detected.]
por siempre
limpiar pantalla
mover cursor a fila [1] columna [1] en pantalla
obtener datos [AprilTag IDs v] de [AIVision1 v]
si <¿existe objeto de [AIVision1 v]?> entonces
si <[AIVision1 v] object is AprilTag ID [3] ?> entonces
imprimir [That is 3!] en pantalla ▶
si no
imprimir [That isn't 3!] en pantalla ▶
fin
fin
esperar [0.1] segundos