Codificación con el sensor de visión AI en VEXcode V5 Python

Asegúrese de tener Firmas de color y Códigos de color configurados con su Sensor de visión AI para que puedan usarse con sus bloques. Para obtener más información sobre cómo configurarlos, puede leer los siguientes artículos:

El sensor de visión de IA también puede detectar clasificaciones de IA y etiquetas de abril. Para saber cómo habilitar estos modos de detección, vaya aquí:

Para obtener más información sobre estos comandos individuales y cómo usarlos en VEXcode, vaya al sitio de la API.


Obtenga datos visuales con el sensor de visión AI

Cada comando del sensor de visión AI comenzará con el nombre del sensor de visión AI configurado. Para todos los ejemplos de este artículo, el nombre del sensor de visión de IA utilizado será ai_vision_1.

take_snapshot

El método take_snapshot toma una imagen de lo que el sensor de visión de IA está viendo actualmente y extrae datos de esa instantánea que luego se pueden usar en un proyecto. Cuando se toma una instantánea, debe especificar de qué tipo de objeto debe recopilar datos el sensor de visión AI:

  • Una firma de color o código de color
    • Estas firmas visuales comienzan con el nombre del sensor de visión AI, doble guión bajo y luego el nombre de la firma visual, por ejemplo: ai_vision_1__Blue.
  • Clasificaciones de IA - AiVision.ALL_AIOBJS
  • AprilTags - AiVision.ALL_TAGS

Tomar una instantánea creará una tupla de todos los objetos detectados que especificó. Por ejemplo, si desea detectar una firma de color "azul" yel sensor de visión AI detecta 3 objetos azules diferentes, los datos de los tres se colocarán en la tupla.

En este ejemplo, la variable vision_objects almacena una tupla que contiene las firmas de color "púrpura" detectadas del sensor de visión AI llamado ai_vision_1. Muestra el número de objetos detectados y captura una nueva instantánea cada 0,5 segundos.

while True: 
# Obtén una instantánea de todas las firmas de color púrpura y guárdala en Vision_Objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Purple)

# Comprueba que se detectó un objeto en la instantánea antes de extraer datos.
if vision_objects[0].exists == Verdadero

brain.screen.clear_screen()
brain.screen.set_cursor(1, 1) brain.screen.print

("Recuento de objetos:", len(vision_objects))
espera(0,5, SEGUNDOS)

Propiedades del objeto

Cada objeto de una instantánea tiene diferentes propiedades que se pueden usar para reportar información sobre ese objeto. Los inmuebles disponibles son los siguientes:

  • id
  • centerX y centerY
  • originX y originY
  • ancho
  • altura
  • ángulo
  • puntaje
  • existe

Para acceder a la propiedad de un objeto, utilice el nombre de la variable que almacena la tupla, seguido del índice del objeto.

El índice de objeto indica qué propiedad específica del objeto desea recuperar. Después de tomar una instantánea, el sensor de visión AI clasifica automáticamente los objetos por tamaño. Al objeto más grande se le asigna el índice 0, y los objetos más pequeños reciben números de índice más altos.

Por ejemplo, llamar al ancho del objeto más grande dentro de la variable vision_objects sería: vision_objects[0].width.

id

La propiedad id solo está disponible para AprilTags y AI Classifications.

Tres marcadores de identificación cuadrados etiquetados con IDS 0, 9 y 3, cada uno con las coordenadas y medidas de tamaño correspondientes que se muestran en texto blanco. El ID 0 está a la izquierda, el ID 9 está a la derecha y el ID 3 está en la parte inferior central. Cada marcador tiene un patrón único en blanco y negro dentro de un cuadrado.

Para una AprilTag, la propiedad id representa el número de ID de AprilTag(s) detectado.

La identificación de AprilTags específicos permite una navegación selectiva. Puede programar su robot para moverse hacia ciertas etiquetas mientras ignora otras, usándolas efectivamente como señales para la navegación automatizada.

Dos bolas y dos anillos identificados en la imagen, con etiquetas que indican su posición, tamaño y puntuación. La bola roja está a la izquierda, la bola azul está a la derecha, el anillo verde está en la parte inferior izquierda y el anillo rojo está en la parte inferior derecha. Cada objeto está delineado con un cuadro blanco, y detalles como las coordenadas X, Y, el ancho, la altura y una puntuación del 99% se muestran en texto blanco.

Para las clasificaciones de IA, la propiedad id representa el tipo específico de clasificación de IA detectada.

La identificación de clasificaciones de IA específicas permite que el robot solo se enfoque en objetos específicos, como solo querer navegar hacia una Buckyball roja, no una azul.

Vaya a estos artículos para obtener más información sobre AprilTags y clasificaciones de IA y cómo habilitar su detección en AI Vision Utility.

centerX y centerY

Estas son las coordenadas centrales del objeto detectado en píxeles.

Una Buckyball azul siendo rastreada por un sistema de visión por computadora. El objeto está delineado con un cuadrado blanco, y dentro del contorno hay un cuadrado rojo más pequeño que rodea una cruz blanca centrada. En la esquina superior izquierda de la imagen, una etiqueta indica que el objeto es azul, con coordenadas X:176, Y:117 y dimensiones W:80, H:78.

Las coordenadas CenterX y CenterY ayudan con la navegación y el posicionamiento. El sensor de visión AI tiene una resolución de 320 x 240 píxeles.

Dos objetos cúbicos azules rastreados por un sistema de visión. El objeto superior está etiquetado con las coordenadas X:215, Y:70 y las dimensiones W:73, H:84, con un contorno blanco y una cruz blanca centrada. El objeto inferior está etiquetado con las coordenadas X:188, Y:184 y las dimensiones W:144, H:113, también delineadas en blanco con una cruz blanca centrada.

Puede ver que un objeto más cercano al sensor de visión AI tendrá una coordenada CenterY más baja que un objeto que está más lejos.

En este ejemplo, debido a que el centro de la vista del sensor de visión AI es (160, 120), el robot girará a la derecha hasta que la coordenada centerX de un objeto detectado sea superior a 150 píxeles, pero inferior a 170 píxeles.

while True:
# Obtén una instantánea de todas las firmas de color azul y guárdala en Vision_Objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)

# Comprueba que se detectó un objeto en la instantánea antes de extraer datos.
if vision_objects[0] .exists= = Verdadero

# Comprueba si el objeto no está en el centro de la vista del sensor de visión de IA.
if vision_objects[0] .centerX > 150 and 170 > vision_objects[0] .centerX:

# Sigue girando a la derecha hasta que el objeto esté en el centro de la vista.
drivetrain.turn(DERECHA)
else:
drivetrain.stop()
wait(5, MSEC)

originX y originY

OriginX y OriginY son las coordenadas en la esquina superior izquierda del objeto detectado en píxeles.

Una Buckyball azul siendo rastreada por un sistema de visión. Un contorno blanco rodea el objeto, con una cruz blanca centrada dentro del contorno. La etiqueta superior izquierda indica el color del objeto en azul, junto con las coordenadas X:176, Y:117 y las dimensiones W:80, H:78. Un pequeño cuadrado rojo resalta la esquina superior izquierda del objeto.

Las coordenadas OriginX y OriginY ayudan con la navegación y el posicionamiento. Al combinar esta coordenada con el ancho y la altura del objeto, puede determinar el tamaño del cuadro delimitador del objeto. Esto puede ayudar a rastrear objetos en movimiento o navegar entre objetos.

ancho y alto

Este es el ancho o la altura del objeto detectado en píxeles.

La imagen muestra una Buckyball azul con un contorno cuadrado blanco que la sigue. La esquina superior izquierda tiene una etiqueta que indica que es un objeto azul, con coordenadas X:176, Y:117 y dimensiones W:80, H:78. Las flechas rojas resaltan el ancho y el alto del objeto.

Las medidas de ancho y alto ayudan a identificar diferentes objetos. Por ejemplo, una Buckyball tendrá una altura mayor que un Ring.

Dos objetos cúbicos azules rastreados por un sistema de reconocimiento visual. El cubo superior tiene un contorno blanco con una etiqueta que indica su posición como X:215, Y:70 y dimensiones W:73, H:84. El cubo inferior tiene un contorno blanco similar con la etiqueta que muestra X:188, Y:184 y dimensiones W:144, H:113. Cada cubo tiene una cruz blanca centrada, que probablemente indica el punto focal para el seguimiento. Las etiquetas resaltan las mediciones y los datos de seguimiento de cada objeto.

El ancho y la altura también indican la distancia de un objeto desde el sensor de visión AI. Las mediciones más pequeñas generalmente significan que el objeto está más lejos, mientras que las mediciones más grandes sugieren que está más cerca.

En este ejemplo, el ancho del objeto se utiliza para la navegación. El robot se acercará al objeto hasta que el ancho haya alcanzado un tamaño específico antes de detenerse.

while True:
# Obtén una instantánea de todas las firmas de color azul y guárdala en Vision_Objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)

# Comprueba que se detectó un objeto en la instantánea antes de extraer datos.
if vision_objects[0].exists == Verdadero

# Compruebe si el objeto más grande está cerca del sensor de visión AI midiendo su ancho.
if vision_objects[0].width < 250:

# Acércate al objeto hasta que tenga más de 250 píxeles.
drivetrain.drive(ADELANTE)
else:
drivetrain.stop()

wait(5, MSEC)

ángulo

Un gif giratorio que muestra bloques rojos y verdes. Cuando los bloques se colocan perfectamente horizontales de rojo a verde, se muestran a 0 grados. Si el bloque rojo está en la parte superior del bloque verde verticalmente, está a 90 grados. Si los bloques son horizontalmente de verde a rojo, es de 180 grados. Si el bloque verde está en la parte superior del bloque rojo verticalmente, es de 20 grados.

La propiedad angle solo está disponible para Códigos de colorAprilTags.

Esto representa si el código de color detectado o AprilTag está orientado de manera diferente.

Una pila de dos cubos, uno verde en la parte superior y otro azul en la parte inferior, siendo rastreados por un sistema de visión. Un contorno blanco rodea ambos cubos, con una cruz blanca centrada en el cubo verde. La etiqueta en la parte inferior de la imagen muestra Green_Blue A:87°, indicando los colores detectados y una medición del ángulo. Debajo de eso, las coordenadas se enumeran como X:117, Y:186, con dimensiones W:137, H:172, que representan la posición y el tamaño de los cubos apilados en el marco.

Puede ver si el robot está orientado de manera diferente en relación con el Color CodeAprilTag y tomar decisiones de navegación de acuerdo con eso.

Dos cubos, uno verde y otro azul, colocados uno al lado del otro y seguidos por un sistema de visión. Un contorno blanco rodea ambos cubos con una cruz blanca en el centro. La etiqueta superior izquierda indica Green_Blue A:0°, haciendo referencia a los colores detectados y a una medición de ángulo. Debajo de eso, las coordenadas se muestran como X:150, Y:102, con dimensiones W:179, H:109, que representan la posición y el tamaño de los cubos dentro del marco.

Por ejemplo, si un código de color no se detecta en un ángulo adecuado, es posible que el objeto que representa no pueda ser recogido correctamente por el robot.

puntaje

La propiedad score se utiliza al detectar clasificaciones de IA con el sensor de visión de IA.

La imagen muestra cuatro objetos rastreados por un sistema de visión: dos bolas y dos anillos. La bola roja está etiquetada con las coordenadas X:122, Y:84, W:67, H:66 y una puntuación del 99%. La bola azul tiene X:228, Y:86, W:70, H:68, con una puntuación del 99%. El anillo verde tiene coordenadas X:109, Y:186, W:98, H:92 y una puntuación del 99%. El anillo rojo está etiquetado como X:259, Y:187, W:89, H:91, con una puntuación del 99%. Cada objeto está delineado en blanco, lo que indica la precisión del seguimiento.

El puntaje de confianza indica qué tan seguro es el sensor de visión AI sobre su detección. En esta imagen, tiene un 99% de confianza en la identificación de las clasificaciones de IA de estos cuatro objetos. Puede usar esta puntuación para asegurarse de que su robot solo se centre en detecciones de alta confianza.

existe

La propiedad exists se utiliza para detectar si se ha detectado una firma visual especificada en la última instantánea tomada.

Esto le permite comprobar si se detectaron objetos en la instantánea anterior. Esta propiedad devolverá un verdadero cuando exista un objeto y un falso cuando el objeto no exista.

 

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: