Visión de IA#

Introducción#

El sensor de visión AI del robot de codificación VEX AI detecta y rastrea objetos, colores e ID de 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 AI tiene una resolución de 320×240 píxeles. El origen (0, 0) se encuentra en la esquina superior izquierda, colocando el centro del sensor en (160, 120), como se muestra en el siguiente diagrama:

Un diagrama que muestra la resolución del sensor de VISIÓN AI AI, con la coordenada 0, 0 en la parte superior izquierda del diagrama, 320, 0 en la parte superior derecha y 0, 240 en la parte inferior izquierda, con 160, 120 en el centro exacto.

A continuación se muestra una lista de todos los métodos y propiedades:

Acciones: muestra u oculta el feed de la cámara AI Vision.

  • show_aivision — Muestra el feed de AI Vision en la pantalla del robot.

  • hide_aivision — Oculta el feed de AI Vision de la pantalla.

  • tag_detection — Activa o desactiva la detección de ID de AprilTag.

Getters — Detecta si el robot está sosteniendo un objeto.

  • get_data — Devuelve una tupla de objetos detectados para una firma específica.

  • has_sports_ball — Devuelve si el robot tiene una pelota deportiva.

  • has_any_barrel — Devuelve si el robot tiene algún tipo de barril.

  • has_blue_barrel — Devuelve si el robot tiene un barril azul.

  • has_orange_barrel — Devuelve si el robot tiene un barril naranja.

Propiedades: datos de objetos devueltos desde get_data.

  • exists — Si el objeto existe en la detección actual como un booleano.

  • width — Ancho del objeto detectado.

  • height — Altura del objeto detectado.

  • centerX — Posición X del centro del objeto.

  • centerY — Posición Y del centro del objeto.

  • bearing — Ángulo horizontal relativo a la parte frontal del robot.

  • rotation — Orientación del objeto.

  • originX — Posición X de la esquina superior izquierda del objeto.

  • originY — Posición Y de la esquina superior izquierda del objeto.

  • id — Clasificación o ID de etiqueta del objeto.

  • score — Puntuación de confianza para las clasificaciones de IA.

  • type — Devuelve el tipo de objeto (AI, Etiqueta, Color o Código).

Constructores: defina las firmas y los códigos de color.

Acciones#

show_aivision#

show_aivision muestra la alimentación de datos en vivo del sensor de visión AI en la pantalla del robot. El feed de datos en vivo cubrirá cualquier otra imagen o texto en la pantalla.

Nota: La pantalla no mostrará ninguna otra imagen o texto a menos que se utilice hide_aivision para ocultar el feed.

Usage:
robot.screen.show_aivision()

Parámetros

Descripción

Este método no tiene parámetros.

# Watch the AI Vision Sensor detect AI Classifications
# and AprilTag IDs as you move the robot
robot.screen.show_aivision()

hide_aivision#

hide_aivision elimina la alimentación de datos en vivo del sensor de visión de IA de la pantalla del robot.

Usage:
robot.screen.hide_aivision()

Parámetros

Descripción

Este método no tiene parámetros.

# View the AI Vision Sensor's feed for five seconds
robot.screen.show_aivision()
wait(5, SECONDS)
robot.screen.hide_aivision()

tag_detection#

tag_detection habilita o deshabilita la detección de ID de AprilTag, donde el estado es un valor booleano.

El sensor puede detectar las ID de AprilTag de 0 a 36 de la familia Circle21h7.

Usage:
robot.vision.tag_detection(state)

Parámetros

Descripción

state

Los valores son: True, que habilita la detección de ID de AprilTag, o False, que deshabilita la detección de ID de AprilTag.

robot.screen.set_font(PROP30)

# Cut off AprilTag ID detection after 5 seconds
while True:
    if timer.time(SECONDS) > 5:
        robot.vision.tag_detection(False)

    robot.screen.clear_screen()
    robot.screen.set_cursor(3, 1)
    apriltags = robot.vision.get_data(ALL_TAGS)

    if apriltags[0].exists:
        robot.screen.print("AprilTag ID detected!")
    else:
        robot.screen.print("Nothing detected!")

    wait(0.1, SECONDS)

Getters#

get_data#

get_data filtra los datos del marco del sensor de visión de IA a una sola firma (una descripción guardada de algo que el sensor puede reconocer, como un objeto preentrenado, un ID de AprilTag o una firma de color o código de color configurado) y devuelve una tupla.

Las firmas de color y los códigos de color deben configurarse primero en AI Vision Utility antes de que puedan usarse con este método.

La tupla almacena objetos ordenados de mayor a menor por ancho, comenzando en el índice 0. Se puede acceder a las propiedades de cada objeto utilizando su índice. Se devuelve una tupla vacía si no se detectan objetos coincidentes.

Usage:
robot.vision.get_data(signature, count)

Parámetros

Descripción

signature

Filtra el conjunto de datos para incluir solo los datos de la firma dada. Las firmas disponibles son:

  • ALL_VISION - Balones deportivos, barriles, VEX AIM Coding Robots, AprilTag IDs, colores y códigos de color
  • ALL_CARGO - Balones deportivos y barriles
  • ALL_TAGS - Todos los AprilTag IDs
  • ALL_COLORS - Todos los colores configurados y códigos de color
  • SPORTS_BALL - Solo balones deportivos
  • BLUE_BARREL - Solo barriles azules
  • ORANGE_BARREL - Solo barriles naranjas
  • AIM_ROBOT - Todos los VEX AIM Coding Robots
  • TAG0 a TAG37 - Un solo AprilTag ID de 0 a 37
  • NAME - Firma de color o código de color donde NAME es el nombre configurado en la AI Vision Utility.

count

Opcional. Establece el número máximo de objetos que se pueden devolver de 1 a 24 (predeterminado: 8).

Nota: Los ID de AprilTag del 5 al 37 se pueden obtener utilizando los ID de AprilTag impresos de AIM Printables.

# Move forward if a sports ball is detected
while True:
    ball = robot.vision.get_data(SPORTS_BALL)
    if ball[0].exists:
        robot.move_for(10, 0)
    wait(50, MSEC)

Nota: La tupla devuelta se puede ordenar por cualquier propiedad, no solo por el ancho, utilizando la función sorted de Python. Por ejemplo, ordenar por ID de AprilTag:

# Print each detected AprilTag ID in ascending order by ID
while True:
    apriltags = sorted(robot.vision.get_data(ALL_TAGS), key=id)
    for tag in apriltags:
        print(tag.id)
    wait(1, SECONDS)

O, en su lugar, ordenar por altura:

# Print each detected AprilTag ID in ascending order by height
while True:
    apriltags_by_height = sorted(robot.vision.get_data(ALL_TAGS), key=lambda tag: tag.height)
    for tag in apriltags_by_height:
        print(tag.height)
    wait(1, SECONDS)

Visualización de datos#

La impresión de la tupla devuelta por get_data muestra una lista de todas las propiedades de todos los objetos detectados:

# Display properties of all detected AprilTag IDs
while True:
    vision_data = robot.vision.get_data(ALL_TAGS)

    if vision_data[0].exists:
        break

    wait(0.25, SECONDS)

print(vision_data)

Captura de pantalla de la ventana de la consola que muestra la salida de depuración para los ID de AprilTag detectados. El texto enumera ‘Object #0’ con campos como exists: True, type: AprilTag ID, id: 2, centerX: 223, centerY: 54, originX: 210, originY: 42, width: 27, height: 23, bearing: 14.1, y rotation: 0.0, seguido de una línea separadora y el comienzo de ‘Object #1’ con exists: True, type: AprilTag ID, id: 4, y centerX: 122.

Clasificaciones de IA#

El sensor DE visión AI AI puede detectar estas clasificaciones de IA:

Número de identificación

Clasificación de IA

Firma

0

Bola

SPORTS_BALL

1

Barril azul

BLUE_BARREL

2

Barril de naranja

ORANGE_BARREL

3

Robot AIM

AIM_ROBOT

Firmas de color#

Una firma de color es un color único que el sensor de visión AI puede reconocer. Estas firmas permiten que el sensor detecte y rastree objetos en función de su color. Una vez que se configura una firma de color, el sensor puede identificar objetos con ese color específico en su campo de visión. Las firmas de color se utilizan con get_data para procesar y detectar objetos de color 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 agregar colores, congelar videos, copiar y guardar la imagen se encuentran en la parte inferior, junto con un botón de cierre en la esquina inferior derecha.

# Display if any objects match the Red_Box signature
while True:
    robot.screen.set_cursor(1, 1)
    robot.screen.clear_row(1)
    # Change to any configured Color Signature
    ai_objects = robot.vision.get_data(Red_Box)
    if ai_objects[0].exists:
        robot.screen.print("Color signature detected!")

Códigos de color#

Un código de color es un patrón estructurado formado por 2 a 4 firmas de color dispuestas en un orden específico. Estos códigos permiten que el sensor de visión AI reconozca patrones predefinidos de colores. Los códigos de color son útiles para identificar objetos complejos 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 video hay botones etiquetados como Congelar video, Copiar imagen, Guardar imagen y Cerrar.

# Display if any objects match the BlueRed code
while True:
    robot.screen.set_cursor(1, 1)
    robot.screen.clear_row(1)
    # Change to any configured Color Code
    ai_objects = robot.vision.get_data(BlueRed)
    if ai_objects[0].exists:
        robot.screen.print("Color code detected!")

has_sports_ball#

has_sports_ball devuelve un booleano que indica si el robot tiene actualmente una pelota deportiva.

  • True : el robot tiene una pelota deportiva.

  • False : el robot no tiene una pelota deportiva.

Usage:
robot.has_sports_ball()

Parámetros

Descripción

Este método no tiene parámetros.

# Kick when the robot has a sports ball
while True:
    if robot.has_sports_ball():
        robot.kicker.kick(MEDIUM)

    wait(50, MSEC)

has_any_barrel#

has_any_barrel devuelve un booleano que indica si el robot tiene actualmente algún tipo de barril.

  • True : el robot tiene un barril.

  • False — El robot no tiene barril.

Usage:
robot.has_any_barrel()

Parámetros

Descripción

Este método no tiene parámetros.

# Push a barrel away when detected
while True:
    if robot.has_any_barrel():
        robot.kicker.place()

    wait(50, MSEC)

has_blue_barrel#

has_blue_barrel devuelve un booleano que indica si el robot tiene actualmente un barril azul.

  • True : el robot tiene un barril azul.

  • False — El robot no tiene un barril azul.

Usage:
robot.has_blue_barrel()

Parámetros

Descripción

Este método no tiene parámetros.

# Push a blue barrel away when detected
while True:
    if robot.has_blue_barrel():
        robot.kicker.place()

    wait(50, MSEC)

has_orange_barrel#

has_orange_barrel devuelve un booleano que indica si el robot tiene actualmente un barril naranja.

  • True : el robot tiene un barril naranja.

  • False — El robot no tiene un barril naranja.

Usage:
robot.has_orange_barrel()

Parámetros

Descripción

Este método no tiene parámetros.

# Push an orange barrel away when detected
while True:
    if robot.has_orange_barrel():
        robot.kicker.place()

    wait(50, MSEC)

Propiedades#

Hay doce propiedades que se incluyen con cada objeto almacenado en una tupla después de que se utiliza el método robot.vision.get_data.

Todos los valores de propiedad, excepto .id, .score y .type, describen la posición, el tamaño, la orientación o el rumbo del objeto detectado en el momento en que se utilizó robot.vision.get_data. Estos valores se miden en píxeles o grados, en función de la resolución de 320 por 240 píxeles del sensor.

Un barril azul con una raya 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 a lo largo del lado izquierdo, respectivamente.

.exists#

.exists devuelve un booleano que indica si el índice existe en la tupla o no.

  • True : el índice existe.

  • False — El índice no existe.

# Check if at least two objects are detected
while True:
    robot.screen.clear_screen()
    robot.screen.set_cursor(1, 1)
    ai_objects = robot.vision.get_data(ALL_CARGO)

    if ai_objects[0].exists:
        if ai_objects[1].exists:
            robot.screen.print("At least 2")
        else:
            robot.screen.print("Less than 2")
    wait(0.1, SECONDS)

.width#

.width devuelve el ancho del objeto detectado en píxeles, que es un número entero entre 1 y 320.

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

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 medición del ancho.

# Move towards a Blue Barrel until its width is
# larger than 100 pixels
while True:
    barrel = robot.vision.get_data(BLUE_BARREL)

    if barrel[0].exists:
        if barrel[0].width < 100:
            robot.move_at(0)
    else:
        robot.stop_all_movement()

    wait(50, MSEC)

.height#

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

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

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.

# Move towards a Blue Barrel until its height is
# larger than 100 pixels
while True:
    barrel = robot.vision.get_data(BLUE_BARREL)

    if barrel[0].exists:
        if barrel[0].height < 100:
            robot.move_at(0)
    else:
        robot.stop_all_movement()

    wait(50, MSEC)

.centerX#

.centerX devuelve la coordenada x del centro del objeto detectado en píxeles, que es un entero entre 0 y 320.

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

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 centro del cuadro delimitador, indicando la coordenada X del centro.

# Turn slowly until a Blue Barrel is centered in
# front of the robot
robot.set_turn_velocity(30)
robot.turn(RIGHT)

while True:
    barrel = robot.vision.get_data(BLUE_BARREL)

    if barrel[0].exists:
        if 140 < barrel[0].centerX < 180:
            robot.stop_all_movement()

    wait(10,MSEC)

.centerY#

.centerY devuelve la coordenada y del centro del objeto detectado en píxeles, que es un número entero entre 0 y 240.

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

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 centro del cuadro delimitador, indicando la coordenada Y del centro.

# Move towards a Blue Barrel until its
# center y-coordinate is more than 140 pixels
while True:
    barrel = robot.vision.get_data(BLUE_BARREL)

    if barrel[0].exists:
        if barrel[0].centerY < 140:
            robot.move_at(0)
    else:
        robot.stop_all_movement()

    wait(50, MSEC)

.bearing#

.bearing devuelve un decimal (float) que representa la distancia de un objeto a la izquierda o a la derecha del centro de la vista del sensor de visión de IA en grados. 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 el objeto está a la izquierda.

Diagrama de arriba hacia abajo que muestra un robot de codificación VEX AIM centrado en una base circular con una línea de referencia vertical y una línea roja en ángulo hacia una pelota deportiva a la izquierda, etiquetada como 30 grados negativos. Diagrama de arriba hacia abajo que muestra un robot de codificación VEX AIM centrado en una base circular con una línea de referencia vertical y una línea roja en ángulo hacia una pelota deportiva a la derecha, etiquetada como 30 grados.
# Turn to keep the Blue Barrel directly in front
robot.set_turn_velocity(40)
while True:
    vision_data = robot.vision.get_data(BLUE_BARREL)

    if vision_data[0].exists:

        if vision_data[0].bearing > 5:
            robot.turn(RIGHT)
        elif vision_data[0].bearing < -5:
            robot.turn(LEFT)
        else:
            robot.stop_all_movement()

    else:
        robot.stop_all_movement()

    wait(0.1, SECONDS)

.rotation#

.rotation devuelve la orientación del objeto en el plano de visión del sensor de visión AI, medida en grados de 0 a 359. Un código de color es 0° cuando sus colores están dispuestos en una línea horizontal (por ejemplo, rojo-azul). Si se giran los colores, el ángulo cambia (por ejemplo, la disposición azul-rojo devuelve 180°).

Para el ejemplo a continuación, el Código de color se ha configurado con rojo a la izquierda y azul a la derecha.

En esta imagen, poner azul encima de rojo equivale a girar el código de color original 270 grados a la derecha.

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 Rojo_Azul 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.

# Slide left or right depending on how a Color Code (BlueRed)
# is rotated on the vertical plane
while True:
    # Original Color Code is Red to the left, Blue to the right
    code = robot.vision.get_data(BlueRed)

    if code[0].exists:
        # Check if Color Code is now Red on top of Blue
        if 50 < code[0].rotation < 100 :
            robot.move_at(90)

        # Check if Color Code is now Blue on top of Red
        elif 270 < code[0].rotation < 330 :
            robot.move_at(270)

        else:
            robot.stop_all_movement()
    else:
        robot.stop_all_movement()

    wait(50, MSEC)

.originX#

.originX devuelve la coordenada x de la esquina superior izquierda del cuadro delimitador del objeto detectado en píxeles, que es un número entero entre 0 y 320.

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

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.

# Display if an Orange Barrel is to the
# left or the right
while True:
    robot.screen.clear_screen()
    robot.screen.set_cursor(1,1)

    orange_barrel = robot.vision.get_data(ORANGE_BARREL)

    if orange_barrel[0].exists:
        if orange_barrel[0].originX < 160:
            robot.screen.print("To the left!")
        else:
            robot.screen.print("To the right!")

    wait(50, MSEC)

.originY#

.originY devuelve la coordenada y de la esquina superior izquierda del cuadro delimitador del objeto detectado en píxeles, que es un número entero entre 0 y 240.

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

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.

# Display if an Orange Barrel is close or far
# from the robot
while True:
    robot.screen.clear_screen()
    robot.screen.set_cursor(1, 1)

    orange_barrel = robot.vision.get_data(ORANGE_BARREL)

    if orange_barrel[0].exists:
        if orange_barrel[0].originY < 80:
            robot.screen.print("Far")
        else:
            robot.screen.print("Close")

    wait(50, MSEC)

.id#

.id devuelve el ID de la Clasificación de IA detectada o el ID de AprilTag como un número entero.

Para un ID de AprilTag, la propiedad .id representa el número de ID de AprilTag detectado en el rango de 0 a 37. Para una Clasificación de IA, la propiedad .id corresponde al ID predefinido en la sección Clasificaciones de IA.

# Move forward when AprilTag ID 1 is detected
while True:
    apriltags = robot.vision.get_data(ALL_TAGS)

    if apriltags[0].exists:
        if apriltags[0].id == 1:
            robot.move_at(0)
    else:
        robot.stop_all_movement()

    wait(50, MSEC)

.score#

.score devuelve la puntuación de confianza de la Clasificación de IA detectada como un número entero entre 1 y 100.

Una puntuación más baja significa que el sensor tiene menos confianza en el objeto detectado, mientras que una puntuación más alta significa que el sensor tiene más confianza.

# Look confident if an Orange Barrel is detected
while True:
    barrel = robot.vision.get_data(ORANGE_BARREL)

    if barrel[0].exists:
        if barrel[0].score > 95:
            robot.screen.show_emoji(CONFIDENT)
        else:
            robot.screen.hide_emoji()

    wait(50, MSEC)

.type#

.type devuelve un número entero que indica el tipo de objeto detectado. Puede comparar este valor utilizando el número de tipo o la constante con nombre correspondiente:

Tipo de objeto

Objetos incluidos

AiVision.AI_OBJECT

— Balones deportivos
— Barriles azules
— Barriles naranjas

AiVision.TAG_OBJECT

— AprilTag IDs

AiVision.COLOR_OBJECT

— Firmas de color

AiVision.CODE_OBJECT

— Códigos de color

# Display if an AprilTag ID or AI Classification
# is detected
while True:
    robot.screen.clear_screen()
    robot.screen.set_cursor(1, 1)
    vision_data = robot.vision.get_data(ALL_VISION)
    if vision_data[0].exists:
        if vision_data[0].type == AiVision.AI_OBJECT:
            robot.screen.print("AI Object!")
        elif vision_data[0].type == AiVision.TAG_OBJECT:
            robot.screen.print("AprilTag ID!")
    wait(0.1, SECONDS)

# Display a list of all detected objects
while True:
    robot.screen.clear_screen()
    robot.screen.set_cursor(1, 1)
    vision_data = robot.vision.get_data(ALL_VISION)

    if vision_data[0].exists:
        for obj in vision_data:
            if obj.type == AiVision.AI_OBJECT:
                robot.screen.print("- AI Object")
            elif obj.type == AiVision.TAG_OBJECT:
                robot.screen.print("- AprilTag ID")
            robot.screen.next_row()

    wait(0.1, SECONDS)

Constructores#

Creating a Color Signature#

Se crea una nueva firma de color utilizando el constructor Colordesc y luego se registra con el sensor de visión AI utilizando el método color_description. Un objeto Colordesc define 1 de hasta 7 firmas de color detectables para el sensor, pero debe establecerse explícitamente utilizando color_description para que surta efecto.

Uso de Colordesc:
Colordesc(index, red, green, blue, hangle, hdsat)

Parámetro

Descripción

index

Un número entero del 1 al 7 que representa el índice de firma de color. Si dos firmas de color usan el mismo índice, la segunda anulará la primera.

red

Un entero de 0 a 255 para el componente rojo del color.

green

Un entero de 0 a 255 para el componente verde del color.

blue

Un entero de 0 a 255 para el componente azul del color.

hangle

Un flotador de 1 a 40 que representa el rango de tonalidad en grados.

hdsat

Un flotador de 0.10 a 1.00 que representa el rango de saturación.

color_description Uso:
robot.vision.color_description(object)

Parámetro

Descripción

object

El Colordesc objeto Colordesc para establecer como una firma de color detectable.

# Detect a red object
red_box = Colordesc(1, 207, 19, 25, 10.00, 0.20)
robot.vision.color_description(red_box)

while True:
    robot.screen.clear_screen()
    robot.screen.set_cursor(1, 1)

    red_boxes = robot.vision.get_data(red_box)

    if red_boxes[0].exists:
        robot.screen.print("Red detected!")
    else:
        robot.screen.print("No red detected.")

    wait(0.2, SECONDS)

Creating a Color Code#

Se crea un nuevo código de color utilizando el constructor Codedesc y luego se activa utilizando el método code_description Un código de color agrupa de 2 a 4 objetos Colordesc existentes en un único identificador que el sensor de visión de IA puede detectar como una secuencia, pero debe configurarse explícitamente utilizando code_description para que surta efecto.

Uso de Codedesc:
Codedesc(index, c1, c2, c3, c4, c5)

Parámetro

Descripción

index

El índice del Código de Colores, del 1 al 8. Nota: Si crea dos objetos de Codedesc con el mismo índice, el segundo anulará el primero.

c1

El primer Colordesc objeto Colordesc en el código.

c2

El segundo Colordesc objeto Colordesc en el código.

c3

Opcional. Un tercer Colordesc objeto Colordesc.

c4

Opcional. Un cuarto Colordesc objeto Colordesc.

CODE_Description Uso:
robot.vision.code_description(object)

Parámetro

Descripción

object

Un Codedesc objeto Codedesc para registrar como un código de color detectable.

# Create Color Signatures
red_box = Colordesc(1, 207, 19, 25, 10.00, 0.20)
purple_box = Colordesc(2, 98, 18, 227, 10.00, 0.20)

robot.vision.color_description(red_box)
robot.vision.color_description(purple_box)

# Detect a red_purple Color Code
red_purple = Codedesc(1, red_box, purple_box)
robot.vision.code_description(red_purple)

while True:
    robot.screen.clear_screen()
    robot.screen.set_cursor(1, 1)

    code_objects = robot.vision.get_data(red_purple)

    if code_objects[0].exists:
        robot.screen.print("Code detected!")
    else:
        robot.screen.print("No code detected.")

    wait(0.2, SECONDS)