AiVision#

Inicializando la clase AiVision#

Un sensor de visión de IA se crea utilizando el siguiente constructor:

AiVision(puerto, colores, códigos)

Este constructor utiliza tres parámetros:

Parámetro

Descripción

puerto

Un Puerto inteligente válido al que está conectado el sensor de visión de IA.

colores

Opcional. El nombre de uno o más objetos Colordesc.

códigos

Opcional. El nombre de uno o más objetos Codedesc.

# Create a new Color Signature "red" with the Colordesc class.
red = Colordesc(1, 207, 19, 25, 10.00, 0.20)
# Create a new AI Vision Sensor "ai_vision" with the AiVision
# class, with the "red' Colordesc.
ai_vision = AiVision(Ports.PORT1, red)

Este objeto ai_vision de AiVision y el objeto red Colordesc se utilizarán en todos los ejemplos posteriores en esta documentación de API cuando se haga referencia a los métodos de la clase AiVision.

Métodos de clase#

tomar_instantánea()#

El método take_snapshot(type, count) toma la instantánea actual visible para el sensor de visión de IA y detecta los objetos de una firma, código o identificación de firma determinados.

Parámetros

Descripción

tipo

Un objeto Colordesc, Codedesc, Tagdesc o AiObjdesc.

contar

Opcional. El número máximo de objetos a obtener. El valor predeterminado es 8.

Al tomar una instantánea, se creará una tupla con todos los objetos detectados que especificó. Por ejemplo, si desea detectar una firma de color “Azul” y el sensor de visión de IA detecta tres objetos azules diferentes, los datos de los tres se incluirán en la tupla.

Devuelve: Una tupla de objetos detectados o una tupla vacía si no se detecta nada.

Hay diez propiedades diferentes que se pueden llamar desde la tupla para obtener datos del objeto especificado.

  • identificación

  • centerX y centerY

  • origenX y origenY

  • ancho y alto

  • ángulo

  • existe

  • puntuación

Para acceder a la propiedad de un objeto, utilice el nombre de la tupla y luego su índice. Por ejemplo, si la tupla se almacena en una variable llamada vision_objects, la propiedad width se llamaría vision_objects[0].width

identificación#

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

Para un AprilTag, la propiedad id representa el número de identificación del AprilTag detectado.

Para las Clasificaciones de IA, la propiedad id representa el tipo específico de Clasificación de IA detectada. Para más información sobre los ID de las Clasificaciones de IA, ir a este artículo.

Para llamar a la propiedad id, primero se debe crear una tupla utilizando el comando ai_vision.take_snapshot.

Tras crear una tupla, se puede acceder a objetos específicos y sus propiedades mediante su índice. La tupla se ordena por área de objeto, de mayor a menor, con índices que empiezan en 0.

Nota: Las etiquetas AprilTags se ordenan por sus ID únicos en orden ascendente, no por tamaño. Por ejemplo, si se detectan las etiquetas AprilTags 1, 15 y 3:

  • AprilTag 1 tendrá índice 0.

  • AprilTag 3 tendrá índice 1.

  • AprilTag 15 tendrá índice 2.

Para llamar a esta propiedad, utilice la tupla seguida del índice del objeto detectado del que se extrae la propiedad. Por ejemplo: vision_objects[0].id.

centroX y centroY#

Las propiedades centerX y centerY informan las coordenadas centrales del objeto detectado en píxeles.

Para llamar a estas propiedades, primero se debe crear una tupla utilizando el comando ai_vision.take_snapshot.

Tras crear una tupla, se puede acceder a objetos específicos y sus propiedades mediante su índice. La tupla se ordena por área de objeto, de mayor a menor, con índices que empiezan en 0.

Para llamar a esta propiedad, utilice la tupla seguida del índice del objeto detectado del que se extrae la propiedad. Por ejemplo: vision_objects[0].centerX.

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

while True:
    # Get a snapshot of all Blue Color Signatures and store
    # it in vision_objects.
    vision_objects = ai_vision.take_snapshot(ai_vision_1__Blue)

    # Check to make sure an object was detected in the
    # snapshot before pulling data.
    if vision_objects[0].exists == True

        # Check if the object isn't in the center of the
        # AI Vision Sensor's view.
        if vision_objects[0].centerX > 150 and 170 > vision_objects[0].centerX:

            # Keep turning right until the object is in the
            # center of the view.
            drivetrain.turn(RIGHT)
        else:
            drivetrain.stop()
    wait(5, MSEC)

origenX y origenY#

Las propiedades originX y originY informan las coordenadas, en píxeles, de la esquina superior izquierda del cuadro delimitador del objeto.

Para llamar a estas propiedades, primero se debe crear una tupla utilizando el comando ai_vision.take_snapshot.

Tras crear una tupla, se puede acceder a objetos específicos y sus propiedades mediante su índice. La tupla se ordena por área de objeto, de mayor a menor, con índices que empiezan en 0.

Para llamar a una propiedad, utilice el método objects seguido del índice del objeto detectado del que se extrae la propiedad. Por ejemplo: vision_objects[0].originX.

En este ejemplo, se dibujará un rectángulo en la pantalla del Cerebro con las medidas exactas del cuadro delimitador del objeto especificado.

while True:
    # Get a snapshot of all Blue Color Signatures and store
    # it in vision_objects.
    vision_objects = ai_vision.take_snapshot(ai_vision_1__Blue)

    brain.screen.clear_screen()

    # Check to make sure an object was detected in the
    # snapshot before pulling data.
    if len(vision_objects) > 0:
        brain.screen.draw_rectangle(vision_objects[0].originX, vision_objects[0].originY, vision_objects[0].width, vision_objects[0].height)

    wait(5, MSEC)

ancho y alto#

Las propiedades width y height informan el ancho o alto del objeto en píxeles.

Para llamar a estas propiedades, primero se debe crear una tupla utilizando el comando ai_vision.take_snapshot.

Tras crear una tupla, se puede acceder a objetos específicos y sus propiedades mediante su índice. La tupla se ordena por área de objeto, de mayor a menor, con índices que empiezan en 0.

Para llamar a una propiedad, utilice el método objects seguido del índice del objeto detectado del que extraer la propiedad. Por ejemplo: vision_objects[0].width.

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

while True:
    # Get a snapshot of all Blue Color Signatures and store
    # it in vision_objects.
    vision_objects = ai_vision.take_snapshot(ai_vision_1__Blue)

    # Check to make sure an object was detected in the
    # snapshot before pulling data.
    if vision_objects[0].exists == True

        # Check if the largest object is close to the
        # AI Vision Sensor by measuring its width.
        if vision_objects[0].width < 250:

            # Drive closer to the object until it's wider
            # than 250 pixels.
            drivetrain.drive(FORWARD)
        else:
            drivetrain.stop()

    wait(5, MSEC)

ángulo#

La propiedad ángulo solo está disponible para Códigos de color y AprilTags.

Esta propiedad informa el ángulo del Código de color o de la Etiqueta de abril detectado.

Para llamar a la propiedad angle, primero se debe crear una tupla usando el comando ai_vision.take_snapshot.

Tras crear una tupla, se puede acceder a objetos específicos y sus propiedades mediante su índice. La tupla se ordena por área de objeto, de mayor a menor, con índices que empiezan en 0.

Para llamar a esta propiedad, utilice la tupla seguida del índice del objeto detectado del que se extrae la propiedad. Por ejemplo: vision_objects[0].angle.

En este ejemplo, el ángulo de AprilTag se imprime en la pantalla del cerebro.

while True:
    # Get a snapshot of all Blue Color Signatures and store
    # it in vision_objects.
    vision_objects = ai_vision.take_snapshot(AiVision.ALL_TAGS)

    brain.screen.clear_screen()

    # Check to make sure an object was detected in the
    # snapshot before pulling data.
    if len(vision_objects) > 0:
        brain.screen.print(vision_objects[0].angle)

    wait(5, MSEC)

existe#

Esta propiedad devuelve un valor booleano que indica si el objeto especificado existe o no.

Para llamar a la propiedad exists, primero se debe crear una tupla usando el comando ai_vision.take_snapshot.

Tras crear una tupla, se puede acceder a objetos específicos y sus propiedades mediante su índice. La tupla se ordena por área de objeto, de mayor a menor, con índices que empiezan en 0.

Para llamar a esta propiedad, utilice la tupla seguida del índice del objeto detectado del que se extrae la propiedad. Por ejemplo: vision_objects[0].exists.

En este ejemplo, se verifica si el objeto existe antes de intentar extraer datos de él para la navegación.

while True:
    # Get a snapshot of all Blue Color Signatures and store
    # it in vision_objects.
    vision_objects = ai_vision.take_snapshot(ai_vision_1__Blue)

    # Check to make sure an object was detected in the
    # snapshot before pulling data.
    if vision_objects[0].exists == True

        # Check if the largest object is close to the
        # AI Vision Sensor by measuring its width.
        if vision_objects[0].width < 250:

            # Drive closer to the object until it's wider
            # than 250 pixels.
            drivetrain.drive(FORWARD)
        else:
            drivetrain.stop()

    wait(5, MSEC)

puntaje#

La propiedad score solo está disponible para Clasificaciones IA.

Esta propiedad devuelve la puntuación de confianza de la clasificación de IA especificada. La puntuación oscila entre el 0 % y el 100 %, lo que indica el nivel de certeza del sensor de visión de IA en su precisión de detección.

Para llamar a la propiedad exists, primero se debe crear una tupla usando el comando ai_vision.take_snapshot.

Tras crear una tupla, se puede acceder a objetos específicos y sus propiedades mediante su índice. La tupla se ordena por área de objeto, de mayor a menor, con índices que empiezan en 0.

Para llamar a esta propiedad, utilice la tupla seguida del índice del objeto detectado del que se extrae la propiedad. Por ejemplo: vision_objects[0].score.

recuento_de_objetos()#

El método object_count() devuelve la cantidad de objetos detectados en el último uso del método take_snapshot.

Devuelve: Un entero como la cantidad de objetos detectados en el último uso del método take_snapshot.

detección de etiquetas()#

El método tag_detection(enable) habilita o deshabilita la detección de AprilTag.

Parámetros

Descripción

permitir

Verdadero para habilitar la detección de AprilTag. Falso para deshabilitarla.

Devoluciones: Ninguna.

detección de color()#

El método color_detection(enable, merge) habilita o deshabilita la detección de objetos de color y código.

Parámetros

Descripción

permitir

Verdadero para habilitar la detección de color y código de color. Falso para deshabilitarla.

unir

Opcional. Un valor booleano que habilita o deshabilita la fusión de detecciones de colores adyacentes.

Devoluciones: Ninguna.

detección_de_modelo(habilitar)#

El método model_detection(enable) habilita o deshabilita la detección de objetos del modelo de IA.

Parámetros

Descripción

permitir

Verdadero para habilitar la detección de objetos del modelo de IA. Falso para deshabilitarla.

Devoluciones: Ninguna.

inicio_awb()#

El método start_awb() ejecuta el balance de blancos automático.

Devoluciones: Ninguna.

colocar()#

El método set() establece una nueva Firma de color o Código de color.

Devoluciones: Ninguna.

instalado()#

El método installed() verifica la conexión del dispositivo.

Devuelve: «Verdadero» si el sensor de visión de IA está conectado. «Falso» si no lo está.

marca de tiempo()#

El método timestamp() solicita la marca de tiempo del último paquete de estado recibido del sensor de visión de IA.

Devuelve: Marca de tiempo del último paquete de estado recibido en milisegundos.