Visión de IA#

Introducción#

El sensor de visión con IA del robot de codificación VEX AIM detecta y rastrea objetos, colores e identificadores 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 con IA tiene una resolución de 320 × 240 píxeles. El origen (0, 0) se encuentra en la esquina superior izquierda, lo que sitúa el centro del sensor en (160, 120), como se muestra en el diagrama a continuación:

Diagrama que muestra la resolución del sensor de visión AIM AI, con la coordenada 0, 0 en la esquina superior izquierda del diagrama, 320, 0 en la esquina superior derecha y 0, 240 en la esquina inferior izquierda, con 160, 120 en el centro exacto.

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

Acciones: Controla la señal de visión artificial y captura los datos de los objetos.

Ajustes: Permiten configurar a qué objetos detectados se accede.

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

Comportamiento#

Visor de visión artificial en pantalla#

El bloque Visor de Visión por IA en pantalla activa o desactiva la transmisión en directo de Visión por IA en la pantalla del robot. Cuando está activado, la pantalla muestra datos de sensores en tiempo real, impidiendo que aparezcan otras imágenes o texto. Para mostrar otro contenido, utilice este bloque para ocultar la transmisión.

El bloque de pila del panel de control de AI Vision para mostrar u ocultar.#
AI Vision [show v] viewer on screen

Parámetros

Descripción

estado

Controla la visualización del flujo de datos en la pantalla del robot:

  • mostrar — Muestra el flujo de datos.
  • ocultar — Elimina el flujo de datos de la pantalla.

Ejemplo

Una pila de bloques que comienza con un bloque “Cuándo se inició”, seguido de un bloque de comentario que indica “Ver la fuente del sensor de visión de IA durante cinco segundos”. Un bloque “Mostrar panel de AI Vision” muestra la fuente; luego, un bloque “Esperar” pausa la ejecución durante cinco segundos. Tras la espera, un bloque “Ocultar panel de AI Vision” elimina la fuente de la vista.#
when started
[View the AI Vision Sensor's feed for five seconds.]
AI Vision [show v] viewer on screen
wait [5] seconds
AI Vision [hide v] viewer on screen

obtener datos del objeto#

El bloque obtener datos de objeto filtra los datos del fotograma del sensor de visión de IA. El sensor de visión de IA puede detectar firmas que incluyen objetos preentrenados, identificadores AprilTag o colores y códigos de color configurados.

Los colores y códigos de color deben configurarse primero en AI Vision Utility antes de poder 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 mediante el bloque AI Vision object property. Si no se detectan objetos coincidentes, se devuelve un conjunto de datos vacío.

El bloque de pila Obtener datos del objeto.#
get [sports ball v] data from 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:

  • pelota deportiva
  • barril naranja
  • barril azul
  • robot AIM
  • AprilTag ID 0
  • AprilTag ID 1
  • AprilTag ID 2
  • AprilTag ID 3
  • AprilTag ID 4
  • toda la carga: pelotas deportivas 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 “al iniciar”, seguido de un bloque de comentario que dice “Avanzar si se detecta una pelota deportiva”. Un bloque “obtener datos del objeto” captura una imagen de la pelota deportiva. Un bloque “si” comprueba si existe un objeto de Visión por IA. Si es así, un bloque “avanzar” mueve el robot 10 milímetros hacia adelante.#
when started
[Move forward if a sports ball is detected.]
forever
get [sports ball v] data from AI Vision
if <AI Vision object exists?> then
move [forward v] for [10] [mm v] ▶

Firmas de color#

Una firma de color es un color único que el sensor de visión artificial puede reconocer. Estas firmas permiten al sensor detectar y rastrear objetos según su color. Una vez configurada una firma de color en la utilidad de visión artificial, el sensor puede identificar objetos con ese color específico dentro de su campo de visión.

Las firmas de color se utilizan en el bloque obtener datos del objeto para procesar y detectar objetos coloreados 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 añadir colores, congelar vídeo, copiar y guardar la imagen se encuentran en la parte inferior, junto con un botón de cierre en la esquina inferior derecha.

Ejemplo

when started
[Display if any objects matching the Red_Box signature is detected.]
forever
set cursor to row [1] column [1] on screen
clear row [1] on screen
[Change the signature to any configured Color Signature.]
get [Red_Box v] data from AI Vision
if <AI Vision object exists?> then
print [Color signature detected!] on screen ▶

Códigos de color#

Un código de color es un patrón estructurado compuesto por entre 2 y 4 firmas de color dispuestas en un orden específico. Una vez configurado un código de color en la utilidad de visión artificial, el sensor puede reconocer patrones de colores predefinidos.

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 vídeo hay botones etiquetados como Congelar vídeo, Copiar imagen, Guardar imagen y Cerrar.

Ejemplo

when started
[Display if any objects matching the BlueRed code is detected.]
forever
set cursor to row [1] column [1] on screen
clear row [1] on screen
[Change the signature to any configured Color Code.]
get [BlueRed v] data from AI Vision
if <AI Vision object exists?> then
print [Color code detected!] on screen ▶

Ajustes#

Establecer elemento de objeto de AI Vision#

El bloque establecer elemento de objeto de AI Vision establece qué elemento del conjunto de datos utilizar.

El bloque de pila de elementos del objeto Establecer visión de IA.#
set AI Vision object item to (1)

Parámetros

Descripción

artículo

El número del elemento en el conjunto de datos que se 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 detectado más grande”. Dentro de un bucle infinito, un bloque “obtener datos de objeto” captura una imagen de los ID de AprilTag. Un bloque “si” comprueba si existe un objeto de AI Vision. Si es así, un bloque “establecer elemento de objeto de AI Vision” asigna el recuento de objetos a una variable, y un bloque “imprimir” muestra el ID de etiqueta del objeto detectado en la pantalla.#
when started
[Display the width of the smallest detected object.]
forever
get [all cargo v] data from AI Vision
clear row [1] on screen
set cursor to row [1] column [1] on screen
if <AI Vision object exists?> then
set AI Vision object item to (AI Vision object count)
print (AI Vision object [width v]) on screen ▶

Valores#

¿tiene objeto?#

El bloque has object devuelve un valor booleano que indica si el robot tiene actualmente un objeto detectado contra su Kicker.

  • Cierto: el robot tiene el objeto.

  • Falso: el robot no tiene el objeto.

<has [sports ball v]?>

Parámetro

Descripción

objeto

El objeto a detectar contra el pateador del robot:

  • pelota deportiva
  • cualquier barril
  • barril naranja
  • barril azul

Ejemplo

Una pila de bloques que comienza con un bloque “cuando se inició”, seguido de un bloque de comentario que indica “Patear” cuando el robot tiene una pelota. Dentro de un bucle infinito, un bloque “si” comprueba si el robot tiene una pelota deportiva. Si es verdadero, un bloque de objeto “patear” se ejecuta con potencia media.#
when started
[Kick when the robot has a sports ball.]
forever
if <has [sports ball v]?> then
kick object [medium v]

¿Existe el objeto AI Vision?#

El bloque ¿Existe un objeto de AI Vision? devuelve un valor booleano que indica si se ha detectado 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 en el bloque booleano.#
<AI Vision object exists?>

Parámetros

Descripción

Este bloque no tiene parámetros.

Ejemplo

Una pila de bloques que comienza con un bloque “al iniciar”, seguido de un bloque de comentario que dice “Avanzar si se detecta una pelota”. Un bloque “obtener datos del objeto” captura una imagen de una pelota deportiva. Un bloque “si” comprueba si existe un objeto de Visión por IA. Si es así, un bloque “avanzar” mueve el robot 10 milímetros hacia adelante.#
when started
[Move forward if a sports ball is detected.]
forever
get [sports ball v] data from AI Vision
if <AI Vision object exists?> then
move [forward v] for [10] [mm v] ▶

¿Qué es el objeto de AI Vision?#

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

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

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

La clasificación de IA de AI Vision es un bloque booleano de objetos.#
<AI Vision object is [sports ball v] ?>

Parámetro

Descripción

objeto

¿Con qué objeto comparar el artículo?

  • Pelota deportiva
  • 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 infinito, un bloque “obtener datos de objeto” captura una imagen usando clasificaciones de IA. La pantalla se borra y el cursor se coloca en la fila 1, columna 1. Un bloque “si” comprueba si existe un objeto de Visión por IA y, si es así, otro bloque “si” verifica si la clasificación es una pelota deportiva. Si es así, un bloque “imprimir” muestra “¡Pelota detectada!” en la pantalla, seguido de un bloque “esperar” que se detiene durante 0,5 segundos antes de repetir el proceso.#
when started
[Display if a sports ball is detected.]
forever
get [all cargo v] data from AI Vision
clear row [1] on screen
set cursor to row [1] column [1] on screen
if <AI Vision object exists?> then
if <AI Vision object is [sports ball v] ?> then
print [Sports ball detected!] on screen ▶
wait [0.5] seconds

¿El objeto AI Vision es AprilTag ID?#

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

  • Cierto: el ID de AprilTag es el número.

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

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

Parámetros

Descripción

ID de etiqueta de abril

El número que se comparará con el número de identificación de AprilTag detectado.

Recuento de objetos de AI Vision#

El bloque Recuento de objetos de AI Vision devuelve la cantidad de objetos detectados en el conjunto de datos como un entero.

AI Vision object count

Parámetros

Descripción

Este bloque no tiene parámetros.

Ejemplo

when started
[Display the amount of sports balls and barrels.]
forever
clear row [1] on screen
set cursor to row [1] column [1] on screen
get [all cargo v] data from AI Vision
if <AI Vision object exists?> then
print (AI Vision object count) on screen ▶
fin
wait [0.5] seconds

Propiedad del objeto AI Vision#

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

El bloque informador de propiedades de objetos de AI Vision.#
AI Vision object [width v]

Algunos valores de propiedad se basan en la posición del objeto detectado en la vista del sensor de visión de IA al momento de usar el bloque obtener datos del objeto. El sensor de visión de IA tiene una resolución de 320 x 240 píxeles.

Un barril azul con una franja 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 en el lado izquierdo, respectivamente.

Parámetro

Descripción

propiedad

¿Qué propiedad del objeto detectado utilizar?

ancho#

width devuelve el ancho del objeto detectado en píxeles como un número entero del 1 al 320.

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

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

Ejemplo

when started
[Move towards a blue barrel until its width is larger than 100 pixels.]
forever
get [blue barrel v] data from AI Vision
if <AI Vision object exists?> then
if <(AI Vision object [width v]) [math_less_than v] [100]> then
move [forward v]
fin
else
stop all movement

altura#

altura devuelve la altura del objeto detectado en píxeles como un número entero entre 1 y 240.

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

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

when started
[Move towards a blue barrel until its height is larger than 100 pixels.]
forever
get [blue barrel v] data from AI Vision
if <AI Vision object exists?> then
if <(AI Vision object [height v]) [math_less_than v] [100]> then
move [forward v]
fin
else
stop all movement

centroX#

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

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

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

Un barril azul con una franja 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

when started
[Turn slowly until a blue barrel is centered in front of the robot.]
set turn velocity to [30]%
turn [right v]
forever
get [blue barrel v] data from AI Vision
if <AI Vision object exists?> then
if <[140] [math_less_than v] (AI Vision object [centerX v]) [math_less_than v] [180]> then
stop all movement

centroY#

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

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

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

Un barril azul con una franja 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

when started
[Move towards a blue barrel until its center y-coordinate is more than 140 pixels.]
forever
get [blue barrel v] data from AI Vision
if <AI Vision object exists?> then
if <(AI Vision object [centerY v]) [math_less_than v] [140]> then
move [forward v]
fin
else
stop all movement

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

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

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

when started
[Display if an orange barrel is to the left or the right.]
forever
clear row [1] on screen
set cursor to row [1] column [1] on screen
get [orange barrel v] data from AI Vision
if <AI Vision object exists?> then
if <(AI Vision object [originX v]) [math_less_than v] [160]> then
print [To the left!] on screen ▶
else
print [To the right!] on screen ▶
fin
wait [0.5] seconds

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

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

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

when started
[Display if an orange barrel is close or far from the robot.]
forever
clear row [1] on screen
set cursor to row [1] column [1] on screen
get [orange barrel v] data from AI Vision
if <AI Vision object exists?> then
if <(AI Vision object [originY v]) [math_less_than v] [80]> then
print [Far!] on screen ▶
else
print [Close!] on screen ▶
fin
wait [0.5] seconds

rotación#

rotación devuelve 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 pila de propiedades del objeto AI Vision con su parámetro establecido en rotación.#
AI Vision object [rotation 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 Red_Blue 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

when started
[Slide left or right depending on how the Color Code is rotated.]
forever
get [Red_Blue v] data from AI Vision
if <AI Vision object exists?> then
if <[50] [math_less_than v] (AI Vision object [rotation v]) [math_less_than v] [100]> then
move [right v]
else if <[270] [math_less_than v] (AI Vision object [rotation v]) [math_less_than v] [330]> then
move [left v]
else
stop all movement
fin
else
stop all movement

cojinete#

Rumbo indica en grados la distancia a la que se encuentra un objeto a la izquierda o a la derecha del centro de la vista del sensor de visión de IA. Un valor de 0 significa que está centrado, los valores positivos indican que el objeto está a la derecha y los valores negativos indican que está a la izquierda.

Un robot VEX AIM Coding Robot se encuentra en un campo, con una pelota deportiva colocada en diagonal hacia adelante y a la izquierda. Se ha trazado un ángulo entre el centro del robot y la pelota, etiquetado como -30 grados. Un robot VEX AIM Coding Robot se encuentra en un campo, con una pelota deportiva colocada en diagonal hacia adelante y a la derecha. Se ha dibujado un ángulo de 30 grados entre el centro del robot y la pelota.
when started
[Keep the blue barrel directly in front of the robot.]
set turn velocity to [40]%
forever
get [blue barrel v] data from AI Vision
if <AI Vision object exists?> then
if <(AI Vision object [bearing v]) [math_greater_than v] [5]> then
turn [right v]
else if <(AI Vision object [bearing v]) [math_less_than v] [-5]> then
turn [left v]
else
stop all movement

ID de etiqueta#

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

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

Ejemplo

when started
[Move forward when AprilTag ID 0 is detected.]
forever
get [AprilTag ID 0 v] data from AI Vision
if <AI Vision object exists?> then
move [forward v]
fin
stop all movement