Uso del sensor de visión AI en VEXcode V5 Python

Este artículo proporciona una descripción general de las funciones disponibles para usar el sensor de visión de IA en Python, junto con instrucciones simples sobre cómo usarlas. Aprenderá los cuatro pasos en el proceso de uso del sensor de visión de IA: obtener datos, ver la cantidad de objetos obtenidos, seleccionar qué objeto de los datos usar y qué datos del objeto extraer.

Obtenga datos visuales con el sensor de visión AI

Para recopilar información de su entorno, el sensor de visión de IA toma una imagen de lo que está mirando actualmente. Cualquier objeto que identifique con la Firma Visual especificada se coloca en una tupla, que luego puede ser utilizada por otras funciones.

take_snapshot

Al usar el comando take_snapshot, deberá crear una variable para almacenar la tupla que crea. Cualquier Firma Visual deberá configurarse antes de que pueda usarse como parámetro. Al usar la función, especifique el parámetro de firma como el nombre del sensor, doble guion bajo, seguido del nombre de la firma visual.utilidad exm.PNG

vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Azul)
vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Rojo)
vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Verde)

Las opciones para su Firma Visual también se completarán automáticamente en VEXcode después de comenzar a escribir el comienzo de los paréntesis.

Ejemplo

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

while True: 

# Toma una instantánea para crear una tupla de objetos detectados
vision_objects = ai_vision_6.take_snapshot(ai_vision_6__Blue)

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

brain.screen.print("object count:", len(vision_objects))
espera(0,5, SEGUNDOS)

Determinar cuántos objetos se detectaron

El comando len se puede usar con tuplas. Esto se puede usar para ver cuántos objetos ha almacenado el comando take_snapshot en la tupla.

Es una buena práctica asegurarse siempre de haber detectado un objeto antes de intentar extraer cualquier información de la instantánea. Para ello, utilice el comando len con la variable que almacena la tupla.

len(vision_objects) > 0

Ejemplo

En este ejemplo, la variable Vision_Objects almacena una tupla que contiene las firmas visuales detectadas del sensor de visión AI llamado ai_Vision_6. Muestra el número de objetos detectados y captura una nueva instantánea cada 0,5 segundos. Sin embargo, si ha detectado un objeto, imprimirá cuántos objetos detectó.

while True: 
# Take a snapshot to create a tuple of detected objects
vision_objects = ai_vision_6.take_snapshot (ai_vision_6__Blue)

# Clear the screen/reset so that we can display new information
brain.screen.clear_screen ()
brain.screen.set_cursor (1, 1)

if len(vision_objects) > 0:
# Print how many objects were found
brain.screen.next_row ()
brain.screen.print ("object count:", len(vision_objects))
wait(0.5, SECONDS)

Al usar el comando len con la tupla, también puede ver cuántos objetos se detectaron.

Seleccione de qué objeto obtener datos

Hay dos métodos para extraer datos de la tupla. Un enfoque es recuperar directamente la información del objeto más grande detectado en el uso más reciente del comando take_snapshot utilizando la funciónai.vision.largest_object (). El otro método consiste en especificar la variable específica y el índice de objeto.

ai.vision.largest_object()

ai.vision.largest_object() es una función auxiliar para acceder al objeto más grande de la tupla, pero solo funcionará con la instantánea más reciente.

while True: 
# Take a snapshot to create a tuple of detected objects
vision_objects = ai_vision_6.take_snapshot (ai_vision_6__Blue)

# Clear the screen/reset so that we can display new information
brain.screen.clear_screen ()
brain.screen.set_cursor (1, 1)

# Check if an object exists before pulling data
if len(vision_objects) > 0:
brain.screen.print (Center X: ", ai_vision.largest_object () .centerX)
else:
brain.screen.print ("no object")
wait(0.5, SECONDS)

En este ejemplo, el código comprueba si existe un objeto antes de usar la función ai.vision.largest_object () para devolver la propiedad .centerX del objeto detectado más grande e imprimirla.

vision_objects[0]

Otro método para extraer datos de una tupla es llamar a la variable que almacena la tupla directamente. Entre paréntesis, especifique el índice del objeto del que desea extraer datos. La tupla de objetos devuelta siempre enumera el objeto más grande primero en el índice 0. Posteriormente, los objetos se ordenan de mayor a menor.

while True: 
# Take a snapshot to create a tuple of detected objects
vision_objects = ai_vision_6.take_snapshot (ai_vision_6__Blue)

# Clear the screen/reset so that we can display new information
brain.screen.clear_screen ()
brain.screen.set_cursor (1, 1)

# Check if an object exists before pulling data
if len(vision_objects) > 0:
brain.screen.print (Center X: ", vision_object[0] .centerX)
else:
brain.screen.print ("no object")
wait(0.5, SECONDS)

En este ejemplo, el código comprueba si existe un objeto antes de usar la función vision_object[0] para devolver la propiedad .centerX del objeto de índice 0 e imprimirla.

Seleccione qué datos extraer de un objeto

Desde cada objeto, hay ocho propiedades que se pueden llamar.

  • .height
  • .width
  • .centerX
  • .centerY
  • .originX
  • .originY
  • .angle
  • .existe

.height

La propiedad .height devuelve la altura del objeto detectado en píxeles.

Utilice este código para devolver la propiedad .height:

vision_objects[0].height

La propiedad .height devolverá un valor entre 0 y 240 píxeles.

.width

La propiedad .width devuelve el ancho del objeto detectado en píxeles.

Utilice este código para devolver la propiedad .width:

vision_objects[0].width

La propiedad .width devolverá un valor entre 0 y 320.

.centerX

La propiedad .centerX informa de la coordenada X del centro de la Firma Visual detectada.

Utilice este código para devolver la propiedad .centerX:

vision_objects[0].centerX

La propiedad .centerX devolverá un número entre 0 y 320.

.centerY

La propiedad .centerY informa la coordenada Y del centro de la Firma Visual detectada.

Utilice este código para devolver la propiedad .centerY:

vision_objects[0].centerY

La propiedad .centerY devolverá un número entre 0 y 240.

.originX

La propiedad .originX informa de la coordenada X de la esquina superior izquierda de la Firma Visual detectada.

Utilice este código para devolver la propiedad .originX:

vision_objects[0].originX

La propiedad .originX devolverá un número entre 0 y 320.

.originY

La propiedad .originY informa la coordenada Y de la esquina superior izquierda de la firma visual detectada.

Utilice este código para devolver la propiedad .originY:

vision_objects[0].originY

La propiedad .originY devolverá un número entre 0 y 240.

.angle

La propiedad .angle devuelve el valor del ángulo del código de color.

Utilice este código para devolver la propiedad .angle:

vision_objects[0].angle

La propiedad .angle devuelve la orientación del código de color detectado, que oscila entre 0 y 359,99 grados.

.existe

.exists es una propiedad booleana que devuelve true si es un objeto válido. 

Devuelve false si el objeto no es válido, como si se utiliza un entero negativo. Si un objeto no es válido, todas las demás propiedades devolverán 0s como su valor.

while True: 
# Take a snapshot to create aa tuple of detected objects
vision_objects = ai_vision_6.take_snapshot (ai_vision_6__Blue)
# clear the screen/reset so that we can display new information
brain.screen.clear_screen ()
brain.screen.set_cursor (1, 1)

if vision_objects[0] .exists:
brain.screen.print ("x:", vision_objects[0] .centerX)
else:
brain.screen.print ("no object")
wait(0.1, SECONDS)

En este ejemplo, el código verifica la propiedad .exists, si devuelve true, imprimirá el valor de la propiedad .centerX en el cerebro. Si la propiedad .exists devuelve false, se imprimirá que no hay ningún objeto.

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

Last Updated: