Visión de IA#

Introducción#

El sensor de visión AI del robot de codificación VEX AI detecta y rastrea 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.

El sensor de visión AI tiene una resolución de 320×240 píxeles. El origen (0, 0) se encuentra en la esquina superior izquierda, colocando el centro del sensor en (160, 120), como se muestra en el siguiente diagrama:

Un diagrama que muestra la resolución del sensor de VISIÓN AI AI, con la coordenada 0, 0 en la parte superior izquierda del diagrama, 320, 0 en la parte superior derecha y 0, 240 en la parte inferior izquierda, con 160, 120 en el centro exacto.

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

Acciones: controle la alimentación de AI Vision y capture datos de objetos.

  • Visor de AI Vision en pantalla: habilita o deshabilita la alimentación de AI Vision en vivo en la pantalla del robot.

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

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

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

Acciones#

Visor de visión de IA en pantalla#

El bloque de pila Visor de AI Vision en pantalla habilita o deshabilita la alimentación de AI Vision en vivo en la pantalla del robot. Cuando está habilitada, la pantalla muestra los datos del sensor en tiempo real, evitando que aparezcan otras imágenes o texto. Para mostrar otro contenido, use este bloque para ocultar el feed.

Muestre u oculte el bloque de pila del panel de control de AI Vision.#
[mostrar v] visor de AI Vision en pantalla

Parámetros

Descripción

estado

Controla la visualización del feed de datos en la pantalla del robot: * * show * * muestra el feed de datos, mientras que hide elimina el feed de datos de la pantalla.

Ejemplo

Una pila de bloques que comienza con un bloque cuando se inicia, seguido de un bloque de comentarios que dice Ver la alimentación del sensor de visión AI durante cinco segundos. Un bloque del panel de control de show AI Vision muestra el feed, luego un bloque de espera detiene la ejecución durante cinco segundos. Después de la espera, un bloque de panel ocultar AI Vision elimina el feed de la vista.#
cuando inicie
[View the AI Vision Sensor's feed for five seconds.]
[mostrar v] visor de AI Vision en pantalla
esperar [5] segundos
[ocultar v] visor de AI Vision en pantalla

obtener datos de objeto#

El bloque de pila * * obtener datos del objeto * * filtra los datos del marco del sensor de visión 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 [pelota deportiva v] de AI Vision

Parámetro

Descripción

firma

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

  • balón deportivo
  • barril naranja
  • barril azul
  • robot AIM
  • ID de AprilTag 0
  • ID de AprilTag 1
  • ID de AprilTag 2
  • ID de AprilTag 3
  • ID de AprilTag 4
  • toda la carga - Balones deportivos y todos los barriles
  • NOMBRE - Un color o código de color donde NOMBRE es el nombre configurado en la utilidad de visión de IA

Ejemplo

Una pila de bloques que comienza con un bloque cuando se inicia, seguido de un bloque de comentarios que dice Avanza si se detecta una pelota deportiva. Un bloque get object data* captura una imagen de un balón deportivo. Un bloque if comprueba si existe un objeto AI Vision. Si es cierto, un bloque de avance mueve el robot hacia adelante 10 milímetros.#
cuando inicie
[Move forward if a sports ball is detected.]
por siempre
obtener datos [pelota deportiva v] de AI Vision
si <¿existe objeto de AI Vision?> entonces
mover [adelante v] por [10] [mm v] ▶

Firmas de color#

Una firma de color es un color único que el sensor de visión 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 en AI Vision Utility, 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.

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 AI Vision
si <¿existe objeto de AI Vision?> entonces
imprimir [Color signature detected!] en pantalla ▶

Códigos de color#

Un código de color es un patrón estructurado formado por 2 a 4 firmas de color dispuestas en un orden específico. Una vez que se configura un código de color en AI Vision Utility, el sensor puede reconocer 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.

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 BlueRed 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 [BlueRed v] de AI Vision
si <¿existe objeto de AI Vision?> entonces
imprimir [Color 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 AI Vision 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 una lectura de bloque de comentarios Mostrar el ID de AprilTag más grande detectado. Dentro de un bucle forever, un bloque de datos get object 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 width of the smallest detected object.]
por siempre
obtener datos [toda la carga v] de AI Vision
limpiar fila [1] en pantalla
mover cursor a fila [1] columna [1] en pantalla
si <¿existe objeto de AI Vision?> entonces
establecer elemento de objeto de AI Vision a (cantidad de objetos de AI Vision)
imprimir (objeto de AI Vision [ancho v]) en pantalla ▶

Valores#

tiene objeto#

El bloque booleano * * has object * * informa si el robot tiene actualmente un objeto detectado contra su Kicker.

  • Verdadero: el robot tiene el objeto.

  • Falso — El robot no tiene el objeto.

<¿tiene [pelota deportiva v]? :: custom-ai-vision>

Parámetro

Descripción

objeto

El objeto a detectar contra el pateador del robot:

  • balón deportivo
  • cualquier barril
  • barril naranja
  • barril azul

Ejemplo

Una pila de bloques que comienza con un bloque cuando se inicia, seguido de un bloque de comentarios que dice Kick cuando el robot tiene una pelota. Dentro de un bucle para siempre, un bloque if comprueba si el robot tiene una pelota deportiva. Si es true, un bloque de objeto kick se ejecuta con una potencia media.#
cuando inicie
[Kick when the robot has a sports ball.]
por siempre
si <¿tiene [pelota deportiva v]? :: custom-ai-vision> entonces
patear objeto [mediano v]

Existe el objeto AI Vision#

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

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

  • Falso — No se detectaron objetos.

El objeto AI Vision existe como bloque booleano.#
<¿existe objeto de AI Vision?>

Parámetros

Descripción

Este bloque no tiene parámetros.

Ejemplo

Una pila de bloques que comienza con un bloque cuando se inicia, seguido de una lectura de bloque de comentarios Avanzar si se detecta una bola. Un bloque de datos de objeto get captura una imagen de una pelota deportiva. Un bloque if comprueba si existe un objeto AI Vision. Si es cierto, un bloque de avance mueve el robot hacia adelante 10 milímetros.#
cuando inicie
[Move forward if a sports ball is detected.]
por siempre
obtener datos [pelota deportiva v] de AI Vision
si <¿existe objeto de AI Vision?> entonces
mover [adelante v] por [10] [mm v] ▶

El objeto AI Vision es#

El objeto AI Vision es un bloque booleano que informa 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 AI Vision es [pelota deportiva v]?>

Parámetro

Descripción

objeto

¿Con qué objeto comparar el artículo?:

  • balón deportivo
  • barril naranja
  • barril azul
  • robot AIM

Ejemplo

Una pila de bloques que comienza con un bloque cuando se inicia, seguido de un bloque de comentarios que dice Mostrar si se detecta una pelota deportiva. Dentro de un bucle Forever, un bloque de datos get Object captura una imagen utilizando clasificaciones de IA. Se borra la pantalla y el cursor se establece en la fila 1, columna 1. Un bloque if verifica si existe un objeto AI Vision, y si es true, otro bloque if verifica si la clasificación es una pelota deportiva. Si es así, un bloque de impresión muestra ¡Bola detectada! en la pantalla, seguido de un bloque de espera que se detiene durante 0,5 segundos antes de repetir el proceso.#
cuando inicie
[Display if a sports ball is detected.]
por siempre
obtener datos [toda la carga v] de AI Vision
limpiar fila [1] en pantalla
mover cursor a fila [1] columna [1] en pantalla
si <¿existe objeto de AI Vision?> entonces
si <¿objeto de AI Vision es [pelota deportiva v]?> entonces
imprimir [Sports ball detected!] en pantalla ▶
esperar [0.5] segundos

El objeto AI Vision es AprilTag ID#

El objeto AI Vision es AprilTag ID El bloque booleano informa 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.#
<AI Vision object is AprilTag ID [1] ?>

Parámetros

Descripción

ID de AprilTag

El número a comparar con el número de ID de AprilTag detectado.

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.

cantidad de objetos de AI Vision

Parámetros

Descripción

Este bloque no tiene parámetros.

Ejemplo

cuando inicie
[Display the amount of sports balls and barrels.]
por siempre
limpiar fila [1] en pantalla
mover cursor a fila [1] columna [1] en pantalla
obtener datos [toda la carga v] de AI Vision
si <¿existe objeto de AI Vision?> entonces
imprimir (cantidad de objetos de AI Vision) 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 de AI Vision [ancho v]

Todos los valores de propiedad, excepto tagID , 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 get object data * *. Estos valores se miden en píxeles o grados, en función de la resolución de 320 por 240 píxeles del sensor.

Un barril azul con una raya naranja está centrado en el marco, rodeado por un recuadro negro. Los ejes x e y están etiquetados de 0 a 320 de izquierda a derecha en la parte superior, y de 0 a 240 de arriba a abajo a lo largo del lado izquierdo, respectivamente.

Parámetro

Descripción

propiedad

Which property of the detected object to use:

ancho#

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

Nota: Los valores de píxeles son relativos al sistema de coordenadas del sensor. Consulte el diagrama en la Introducción como referencia.

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

Un barril azul con una raya naranja está centrado en el marco, rodeado por un recuadro negro. Dos líneas verticales rojas discontinuas se extienden desde la parte superior del cuadro hasta los bordes izquierdo y derecho del cuadro delimitador. Una flecha negra de dos puntas entre estas líneas indica la medición del ancho.

Ejemplo

cuando inicie
[Move towards a blue barrel until its width is larger than 100 pixels.]
por siempre
obtener datos [barril azul v] de AI Vision
si <¿existe objeto de AI Vision?> entonces
si <(objeto de AI Vision [ancho v]) [math_less_than v] [100]> entonces
mover [adelante v]
fin
si no
detener todo movimiento

altura#

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

Nota: Los valores de píxeles son relativos al sistema de coordenadas del sensor. Consulte el diagrama en la Introducción como referencia.

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

Un barril azul con una raya naranja está centrado en el marco, rodeado por un recuadro negro. Dos líneas discontinuas rojas horizontales se extienden desde el lado izquierdo del marco hasta los bordes superior e inferior del cuadro delimitador. Una flecha negra de dos puntas entre estas líneas indica la medición de la altura.

Ejemplo

cuando inicie
[Move towards a blue barrel until its height is larger than 100 pixels.]
por siempre
obtener datos [barril azul v] de AI Vision
si <¿existe objeto de AI Vision?> entonces
si <(objeto de AI Vision [alto v]) [math_less_than v] [100]> entonces
mover [adelante v]
fin
si no
detener todo movimiento

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.

Nota: Los valores de píxeles son relativos al sistema de coordenadas del sensor. Consulte el diagrama en la Introducción como referencia.

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

Un barril azul con una raya naranja está centrado en el marco, rodeado por un recuadro negro. Una línea discontinua roja vertical se extiende desde la parte superior del marco hasta el centro del cuadro delimitador, indicando la coordenada X del centro.

Ejemplo

cuando inicie
[Turn slowly until a blue barrel is centered in front of the robot.]
establecer velocidad de giro a [30]%
girar [derecha v]
por siempre
obtener datos [barril azul v] de AI Vision
si <¿existe objeto de AI Vision?> entonces
si <[140] [math_less_than v] (objeto de AI Vision [centroX v]) [math_less_than v] [180]> entonces
detener todo movimiento

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.

Nota: Los valores de píxeles son relativos al sistema de coordenadas del sensor. Consulte el diagrama en la Introducción como referencia.

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

Un barril azul con una raya naranja está centrado en el marco, rodeado por un recuadro negro. Una línea discontinua roja horizontal se extiende desde el lado izquierdo del marco hasta el centro del cuadro delimitador, indicando la coordenada Y del centro.

Ejemplo

cuando inicie
[Move towards a blue barrel until its center y-coordinate is more than 140 pixels.]
por siempre
obtener datos [barril azul v] de AI Vision
si <¿existe objeto de AI Vision?> entonces
si <(objeto de AI Vision [centroY v]) [math_less_than v] [140]> entonces
mover [adelante v]
fin
si no
detener todo movimiento

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.

Nota: Los valores de píxeles son relativos al sistema de coordenadas del sensor. Consulte el diagrama en la Introducción como referencia.

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

Un barril azul con una raya naranja está centrado en el marco, rodeado por un recuadro negro. Una línea discontinua roja vertical se extiende desde la parte superior del marco hasta el borde izquierdo del cuadro delimitador, indicando la coordenada X del origen del cuadro delimitador.

Ejemplo

cuando inicie
[Display if an orange barrel 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 [barril naranja v] de AI Vision
si <¿existe objeto de AI Vision?> entonces
si <(objeto de AI Vision [origenX 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.

Nota: Los valores de píxeles son relativos al sistema de coordenadas del sensor. Consulte el diagrama en la Introducción como referencia.

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

Un barril azul con una raya naranja está centrado en el marco, rodeado por un recuadro negro. Una línea discontinua roja horizontal se extiende desde el lado izquierdo del marco hasta el borde superior del cuadro delimitador, indicando la coordenada Y del origen del cuadro delimitador.

Ejemplo

cuando inicie
[Display if an orange barrel 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 [barril naranja v] de AI Vision
si <¿existe objeto de AI Vision?> entonces
si <(objeto de AI Vision [origenY v]) [math_less_than v] [80]> entonces
imprimir [Far!] en pantalla ▶
si no
imprimir [Close!] en pantalla ▶
fin
esperar [0.5] segundos

rotación#

La propiedad rotación informa la orientación del ID o código de color AprilTag detectado 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 rotación.#
objeto de AI Vision [rotación v]

Una interfaz de cámara muestra un objeto apilado verticalmente con una mitad superior azul y una mitad inferior roja, centradas en el marco. Una etiqueta debajo del objeto dice Rojo_Azul A:270° CX:185 CY:81 W: 93 H:150, indicando el nombre del objeto, el ángulo de rotación, las coordenadas X e Y del centro, el ancho y la altura. Las líneas de cuadrícula y los ejes numéricos marcan las dimensiones de la imagen, con X que van de 0 a 320 e Y de 0 a 240.

Ejemplo

cuando inicie
[Slide left or right depending on how the Color Code is rotated.]
por siempre
obtener datos [Red_Blue v] de AI Vision
si <¿existe objeto de AI Vision?> entonces
si <[50] [math_less_than v] (objeto de AI Vision [rotación v]) [math_less_than v] [100]> entonces
mover [derecha v]
si no, si <[270] [math_less_than v] (objeto de AI Vision [rotación v]) [math_less_than v] [330]> entonces
mover [izquierda v]
si no
detener todo movimiento
fin
si no
detener todo movimiento

rodamiento#

La propiedad rodamiento informa qué tan lejos está un objeto a la izquierda o derecha del centro de la vista del sensor de visión AI como un grado. Un valor de 0 significa que está centrado, los valores positivos significan que el objeto está a la derecha y los valores negativos significan que el objeto está a la izquierda.

Un robot codificador VEX AIM en un campo, con una pelota deportiva diagonalmente hacia adelante y hacia la izquierda. Se dibuja un ángulo entre el centro del robot y la pelota deportiva, y se etiqueta como -30 grados. Un robot codificador VEX AIM en un campo, con una pelota deportiva diagonalmente hacia adelante y hacia la derecha. Se dibuja un ángulo entre el centro del robot y la pelota deportiva, y está etiquetado con 30 grados.
cuando inicie
[Keep the blue barrel directly in front of the robot.]
establecer velocidad de giro a [40]%
por siempre
obtener datos [barril azul v] de AI Vision
si <¿existe objeto de AI Vision?> entonces
si <(objeto de AI Vision [rumbo v]) [math_greater_than v] [5]> entonces
girar [derecha v]
si no, si <(objeto de AI Vision [rumbo v]) [math_less_than v] [-5]> entonces
girar [izquierda v]
si no
detener todo movimiento

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 de AI Vision [tagID v]

Ejemplo

cuando inicie
[Move forward when AprilTag ID 0 is detected.]
por siempre
obtener datos [AprilTag ID 0 v] de AI Vision
si <¿existe objeto de AI Vision?> entonces
mover [adelante v]
fin
detener todo movimiento