Aivisión#

El sensor de visión de IA debe estar conectado a su V5 Brain y configurado en VEXcode V5 antes de poder usarlo. Para obtener información sobre Introducción al sensor de visión de IA con VEX V5

Consulte estos artículos para obtener más información sobre el uso del sensor de visión IA.

Para obtener información más detallada sobre el uso del sensor de visión de IA con bloques en VEXcode V5, lea Codificación con el sensor de visión de IA en VEXcode V5 C++.

Inicializando la clase aivision#

Un sensor de visión de IA se crea utilizando uno de los siguientes constructores:

El constructor aivision(port) crea un objeto aiVision en el puerto especificado.

Parámetro

Descripción

puerto

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

// Create a new AI Vision Sensor "aiVision" with the aivision class.
aivision aiVision = aivision(PORT1);

El constructor aivision(port, desc, ...) utiliza dos o más parámetros:

Parámetro

Descripción

puerto

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

desc

El nombre de uno o más objetos colordesc, codedesc, tagdesc o aiobjdesc.

// Create a new Color Signature "Red" with the colordesc class.
aivision::colordesc Red = aivision::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.
aivision aiVision = aivision(PORT1, Red);

Este objeto aiVision y el objeto aiVision__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#

tomarInstantánea()#

El método takeSnapshot toma una fotografía 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.

Al tomar una instantánea, se almacenarán todos los objetos detectados que especificó en la instancia del sensor de visión de IA. 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 matriz.

El método takeSnapshot(desc, count) toma la instantánea actual visible para el sensor de visión de IA y detecta los objetos de una descripción de objeto especificada.

Parámetros

Descripción

descripción

Un objeto colordesc, codedesc, tagdesc o aiobjdesc.

contar

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

Devuelve: Un número entero que representa la cantidad de objetos encontrados que coinciden con la descripción pasada como parámetro.

while (true){ 
  // Take a snapshot of the red objects detected by 
  // the AI Vision Sensor.
  aiVision.takeSnapshot(Red);

  // Clear the screen/reset so that we can display 
  // new information.
  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);

  // Print the largest detected object's CenterX
  // coordinate to the Brain's screen.
  Brain.Screen.print("Object Count: %d", aiVision.objectCount);
  // Wait 0.5 seconds before repeating the loop and
  // taking a new snapshot.
  wait(0.5, seconds);
}

objetos#

El método objects le permite acceder a las propiedades almacenadas de los objetos de la última instantánea tomada.

Propiedades disponibles:

  • 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 del sensor de visión de IA, seguido del método del objeto y, finalmente, el índice del objeto. Por ejemplo: aiVision.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, se debe tomar una instantánea con el comando aiVision.takeSnapshot. La matriz se ordena por área del objeto en píxeles, 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 está en el índice 0.

  • AprilTag 3 está en el índice 1.

  • AprilTag 15 está en el índice 2.

Para llamar a esta propiedad, utilice el método objects seguido del índice del objeto detectado del que se obtendrá la propiedad. Por ejemplo: aiVision.objects[0].id.

centroX y centroY#

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

Para llamar a la propiedad centerX o centerY, se debe tomar una instantánea con el comando aiVision.takeSnapshot. La matriz se ordena por área del objeto en píxeles, 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: aiVision.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 objects.
  aiVision.takeSnapshot(aiVision__Blue);

  // Check to make sure an object was detected in the snapshot before pulling data.
  if (aiVision.objectCount > 0) {

    if (aiVision.objects[0].centerX > 150.0 && 170.0 > aiVision.objects[0].centerX) {
      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 la propiedad originX u originY, se debe tomar una instantánea con el comando aiVision.takeSnapshot. La matriz se ordena por área del objeto en píxeles, 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: aiVision.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 objects.
  aiVision.takeSnapshot(aiVision__Blue);

  Brain.Screen.clearScreen();

  // Check to make sure an object was detected in the snapshot before pulling data.
  if (aiVision.objectCount > 0) {

    Brain.Screen.drawRectangle(aiVision.objects[0].originX, aiVision.objects[0].originY, aiVision.objects[0].width, aiVision.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 las propiedades width o height, se debe tomar una instantánea con el comando aiVision.takeSnapshot. La matriz se ordena por área del objeto en píxeles, 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: aiVision.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 objects.
  aiVision.takeSnapshot(aiVision__Blue);

  // Check to make sure an object was detected in the snapshot before pulling data.
  if (aiVision.objectCount > 0) {

    if (aiVision.objects[0].width < 250.0) {
      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, se debe tomar una instantánea con el comando aiVision.takeSnapshot. La matriz se ordena por área del objeto en píxeles, de mayor a menor, con índices que empiezan en 0.

Para llamar a esta propiedad, utilice el método objects seguido del índice del objeto detectado del que se obtendrá la propiedad. Por ejemplo: aiVision.objects[0].angle.

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

while (true) {
  // Get a snapshot of all AprilTags.
  aiVision.takeSnapshot(aivision::ALL_TAGS);

  Brain.Screen.clearScreen();

  // Check to make sure an object was detected in the
  // snapshot before pulling data.
  if (aiVision.objects[0].exists == true) {
    Brain.Screen.print(aiVision.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, se debe tomar una instantánea con el comando aiVision.takeSnapshot. La matriz se ordena por área del objeto en píxeles, de mayor a menor, con índices que empiezan en 0.

Para llamar a esta propiedad, utilice el método objects seguido del índice del objeto detectado del que se obtendrá la propiedad. Por ejemplo: aiVision.objects[0].exists.

En este ejemplo, el robot verifica si se detecta una AprilTag antes de imprimir su ángulo en la pantalla del cerebro.

while (true) {
  // Get a snapshot of all AprilTags.
  aiVision.takeSnapshot(aivision::ALL_TAGS);

  Brain.Screen.clearScreen();

  // Check to make sure an object was detected in the
  // snapshot before pulling data.
  if (aiVision.objects[0].exists == true) {
    Brain.Screen.print(aiVision.objects[0].angle);
  }
  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 score, se debe tomar una instantánea con el comando aiVision.takeSnapshot. La matriz se ordena por área del objeto en píxeles, de mayor a menor, con índices que empiezan en 0.

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

objectCount#

El método objectCount devuelve la cantidad de objetos encontrados en la instantánea más reciente.

Devuelve: Un número entero que representa la cantidad de objetos encontrados en la instantánea más reciente.

while (true){ 
  // Take a snapshot of the red objects detected by 
  // the AI Vision Sensor.
  aiVision.takeSnapshot(Red);

  // Clear the screen/reset so that we can display 
  // new information.
  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);

  // Print the largest detected object's CenterX
  // coordinate to the Brain's screen.
  Brain.Screen.print("Object Count: %d", aiVision.objectCount);
  // Wait 0.5 seconds before repeating the loop and
  // taking a new snapshot.
  wait(0.5, seconds);
}

Detección de etiquetas()#

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

Parámetros

Descripción

permitir

true para habilitar la detección de AprilTag. false para deshabilitarla.

Devoluciones: Ninguna.

Detección de color()#

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

Parámetros

Descripción

permitir

true para habilitar la detección de color y código de color. false para deshabilitarla.

unir

Un valor booleano que habilita o deshabilita la fusión de detecciones de colores adyacentes. El valor predeterminado es false.

Devoluciones: Ninguna.

Detección de modelo()#

El método modelDetection(enable) habilita o deshabilita el objeto del modelo de IA, también conocido como detección de clasificación de IA.

Parámetros

Descripción

permitir

true para habilitar la detección de objetos del modelo IA. false para deshabilitarlo.

Devoluciones: Ninguna.

startAwb()#

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

Devoluciones: Ninguna.

colocar()#

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

Parámetros

Descripción

descripción

Un objeto colordesc o codedesc.

Devoluciones: Ninguna.

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 como un entero de 32 bits sin signo en milisegundos.

instalado()#

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

Devuelve: true si el sensor de visión de IA está conectado. false si no lo está.