Sensor de visión de IA#
Introducción#
El sensor de visión VEX IQ AI puede detectar y rastrear objetos, colores e identificadores 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 usarse con un Basebot equipado con un sensor VEX IQ AI Vision. En estos ejemplos, el sensor está configurado con el nombre AIVision1, que aparece en los bloques.
A continuación se muestra una lista de todos los bloques:
Acciones: Capturar datos del sensor de visión VEX IQ AI para una firma seleccionada.
obtener datos del objeto — Captura datos para una firma específica, como un color configurado, un objeto preentrenado o un ID de AprilTag.
Ajustes: elige con qué objeto interactuar.
establecer elemento de objeto de visión de IA — Selecciona un objeto específico de la lista de objetos detectados.
Valores: Acceda y utilice los datos capturados.
El objeto de visión de IA existe — Informa si se detecta un objeto.
Recuento de objetos de visión por IA — Informa el número de objetos detectados.
Propiedad del objeto AI Vision — Informa detalles como:
¿Qué es el objeto de AI Vision? — Comprueba si un objeto detectado coincide con una clasificación específica.
¿El objeto AI Vision es un ID de AprilTag? — Comprueba si un ID de AprilTag detectado coincide con un ID específico.
Comportamiento#
obtener datos del objeto#
El bloque de pila obtener datos de objeto filtra los datos del fotograma del sensor de visión VEX IQ AI a una única 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 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 ancho, comenzando en el índice 0. Se puede acceder a las propiedades de cada objeto mediante el bloque Propiedad del objeto AI Vision. Se informa de un conjunto de datos vacío si no se detectan objetos coincidentes.
get [SELECT_A_SIG v] data from [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 de ID de AprilTag o Clasificación por IA, su detección debe estar habilitada en la Utilidad de Visión por IA.
Ejemplo
when started
[Drive forward if an AprilTag ID is detected.]
forever
get [AprilTag IDs v] data from [AIVision1 v]
if <[AIVIsion1 v] object exists?> then
drive [forward v] for [10] [mm v] ▶
Clasificaciones de IA#
El sensor de visión VEX IQ AI puede detectar diferentes objetos según determinadas 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 del aula
Bola azul
Bola verde
Bola roja
Anillo azul
Anillo verde
Anillo rojo
Cubo azul
Cubo verde
Cubo rojo
VIQRC Mezcla y combina
Haz
Pin rojo
Pin azul
Pin naranja
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 al sensor detectar y rastrear objetos según su color. Una vez configurada una firma de color, 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 de color en tiempo real. Se pueden configurar hasta 7 firmas de color a la vez.
La Utilidad de Visión con IA muestra un sensor de visión conectado que detecta dos objetos de color. El lado izquierdo muestra la transmisión de una cámara en vivo con un recuadro azul a la izquierda y uno rojo a la derecha, cada uno delimitado por cuadros 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 la saturación de los recuadros rojo y azul. Los botones para agregar colores, congelar el video, copiar y guardar la imagen se encuentran en la parte inferior, junto con un botón/_static/img/AiVision/color_signatures.pngcierre 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 [AIVision1 v]
if <[AIVision1 v] object exists?> then
print [Color 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. Estos códigos permiten que el sensor de visión VEX IQ AI reconozca patrones de color predefinidos.
Los códigos de color son especialmente útiles para identificar objetos complejos, alinearlos 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 la Utilidad de Visión IA 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 único cuadro delimitador blanco denominado AzulRojo. 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 listan tres firmas de color: Cuadro Rojo, Cuadro Azul y AzulRojo, con rangos/_static/img/AiVision/color_code.pngtono y saturación ajustables. La firma AzulRojo combina el Cuadro Azul y el Cuadro Rojo. Debajo de la señal de video se encuentran los botones Congelar Video, Copiar Imagen, Guardar Imagen y Cerrar.
Ejemplo
when started
[Display if any objects matching the RED_BLUE 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 [RED_BLUE v] data from [AIVision1 v]
if <[AIVIsion1 v] object exists?> then
print [Code detected!] on screen ▶
Ajustes#
Establecer elemento de objeto de AI Vision#
El bloque de pila establecer elemento de objeto de visión artificial establece qué elemento del conjunto de datos se debe utilizar.
set [AIVision1 v] object item to (1)
Parámetros |
Descripción |
|---|---|
artículo |
El número del elemento en el conjunto de datos que se utilizará. |
Ejemplo
when started
[Display the largest detected AprilTag ID.]
forever
get [AprilTag IDs v] data from [AIVision1 v]
clear row [1] on screen
set cursor to row [1] column [1] on screen
if <[AIVision1 v] object exists?> then
set [AIVision1 v] object item to ([AIVision1 v]object count)
print ([AIVision1 v] object [tagID v]) on screen ▶
Valores#
Existe un objeto de visión artificial#
El bloque booleano AI Vision object exists informa si se ha detectado 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.
<[AIVision1 v] object exists?>
Parámetros |
Descripción |
|---|---|
Este bloque no tiene parámetros. |
Ejemplo
when started
[Drive forward if an object is detected.]
forever
get [AI Classifications v] data from [AIVision1 v]
if <[AIVision1 v] object exists?> then
drive [forward v] for [10] [mm v] ▶
Recuento de objetos de AI Vision#
El bloque de informe AI Vision object count informa la cantidad de objetos detectados en el conjunto de datos como un número entero.
([AIVision1 v] object count)
Parámetros |
Descripción |
|---|---|
Este bloque no tiene parámetros. |
Ejemplo
when started
[Display the total amount of cubes, rings, and balls.]
forever
clear row [1] on screen
set cursor to row [1] column [1] on screen
get [AI Classifications v] data from [AIVision1 v]
if <[AIVision1 v] object exists?> then
print ([AIVision1 v] 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) almacenadas después de que se utiliza el bloque obtener datos del objeto.
([AIVision1 v] object [width v])
Todos los valores de las propiedades, 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, según la resolución de 320 x 240 píxeles del sensor.
Parámetro |
Descripción |
|---|---|
propiedad |
¿Qué propiedad del objeto detectado utilizar?: |
ancho#
La propiedad width informa el ancho del objeto detectado en píxeles como un número entero del 1 al 320.
([AIVision1 v] object [width v])
Ejemplo
when started
[Drive towards an object until its width is larger than 100 pixels.]
forever
get [AI Classifications v] data from [AIVision1 v]
if <[AIVision1 v] object exists?> then
if <([AIVision1 v] object [width v]) [math_less_than v] [100]> then
drive [forward v]
fin
else
stop driving
altura#
La propiedad altura informa la altura del objeto detectado en píxeles como un número entero del 1 al 240.
([AIVision1 v] object [height v])
Ejemplo
when started
[Drive towards an object until its height is larger than 100 pixels.]
forever
get [AI Classifications v] data from [AIVision1 v]
if <[AIVision1 v] object exists?> then
if <([AIVision1 v] object [height v]) [math_less_than v] [100]> then
drive [forward v]
fin
else
stop driving
centroX#
La propiedad centerX informa la coordenada x del centro del objeto detectado en píxeles como un número entero de 0 a 320.
([AIVision1 v] object [centerX v])
Ejemplo
when started
[Turn slowly until an object is centered in front of the robot.]
set turn velocity to [30] [% v]
turn [right v]
forever
get [AI Classifications v] data from [AIVision1 v]
if <[AIVision1 v] object exists?> then
if <[140] [math_less_than v] ([AIVision1 v] object [centerX v]) [math_less_than v] [180]> then
stop driving
centroY#
La propiedad centerY informa la coordenada y del centro del objeto detectado en píxeles como un número entero de 0 a 240.
([AIVision1 v] object [centerY v])
Ejemplo
when started
[Drive towards an object until its center y-coordinate is more than 140 pixels.]
forever
get [AI Classifications v] data from [AIVision1 v]
if <[AIVision1 v] object exists?> then
if <([AIVision1 v] object [centerY v]) [math_less_than v] [140]> then
drive [forward v]
fin
else
stop driving
ángulo#
La propiedad ángulo informa la orientación del código de color o ID de AprilTag detectado como un número entero en grados de 0 a 359.
([AIVision1 v] object [angle v])
Ejemplo
when started
[Slide left or right depending on how the Color Code is rotated.]
forever
get [RED_BLUE v] data from [AIVision1 v]
if <[AIVision1 v] object exists?> then
if <[50] [math_less_than v] ([AIVision1 v] object [angle v]) [math_less_than v] [100]> then
drive [right v]
else if <[270] [math_less_than v] ([AIVision1 v] object [angle v]) [math_less_than v] [330]> then
drive [left v]
else
stop driving
fin
else
stop driving
origenX#
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.
([AIVision1 v] object [originX v])
Ejemplo
when started
[Display if an object is to the left or the right.]
forever
clear row [1] on screen
set cursor to row [1] column [1] on screen
get [AI Classifications v] data from [AIVision1 v]
if <[AIVision1 v] object exists?> then
if <([AIVision1 v] 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#
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.
([AIVision1 v] object [originY v])
Ejemplo
when started
[Display if an object is close or far from the robot.]
forever
clear row [1] on screen
set cursor to row [1] column [1] on screen
get [AI Classifications v] data from [AIVision1 v]
if <[AIVision1 v] object exists?> then
if <([AIVision1 v] object [originY v]) [math_less_than v] [80]> then
print [Far!] on screen ▶
else
print [Close!] on screen ▶
fin
wait [0.5] seconds
ID de etiqueta#
La propiedad tagID informa el número de identificación del ID de AprilTag detectado como un número entero.
([AIVision1 v] object [tagID v])
Ejemplo
when started
[Drive forward when AprilTag ID 0 is detected.]
forever
get [AprilTag IDs v] data from [AIVision1 v]
if <[AIVision1 v] object exists?> then
if <([AIVision1 v] object [tagID v]) [math_equal v] [0]> then
drive [forward v]
else
stop driving
fin
wait [0.5] seconds
¿Qué es el objeto de AI Vision?#
El bloque ¿El objeto de 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.
<[AIVision1 v] object is [BlueBall v]?>
Parámetro |
Descripción |
|---|---|
objeto |
¿Con qué Clasificación IA comparar el artículo? |
Ejemplo
when started
[Display if a Blue Cube is detected.]
forever
get [AI Classifications v] data from [AIVision1 v]
clear row [1] on screen
set cursor to row [1] column [1] on screen
if <[AIVision1 v] object exists?> then
if <[AIVision1 v] object is [BlueCube v]?> then
print [Cube 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? informa 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.
<[AIVision1 v] object is AprilTag ID [1] ?>
Parámetros |
Descripción |
|---|---|
Número de identificación de AprilTag |
El número que se comparará con el número de identificación AprilTag detectado. |
Ejemplo:
when started
[Report if AprilTag ID 3 is detected.]
forever
clear screen
set cursor to row [1] column [1] on screen
get [AprilTag IDs v] data from [AIVision1 v]
if <[AIVision1 v] object exists?> then
if <[AIVision1 v] object is AprilTag ID [3] ?> then
print [That is 3!] on screen ▶
else
print [That isn't 3!] on screen ▶
fin
fin
wait [0.1] seconds