Codificación con el sensor de visión AI en VEXcode EXP C++

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 AI utilizado será AIVision.

takeSnapshot

El método takeSnapshot 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: AIVision1__Blue.
  • Clasificaciones de IA - aivision::ALL_AIOBJS
  • AprilTags - aivision::ALL_tagas

Tomar una instantánea creará una matriz 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 matriz.

En este ejemplo, se toma una instantánea de la firma de color "Azul" del sensor de visión AI llamado AIVision1. Muestra el número de objetos detectados en la matriz y captura una nueva instantánea cada 0,5 segundos.

while (true) {
// Obtener una instantánea de todos los objetos de color azul.
AIVision.takeSnapshot(AIVision1__Blue);

// Verifique para asegurarse de que se detectó un objeto en la instantánea antes de extraer datos.
if (AIVision.objectCount > 0) {

Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
Brain.Screen.print(AIVision1.objectCount);
}
espera(5, msec);
}

objetos

Cada objeto de una instantánea tiene diferentes propiedades que se pueden usar para reportar información sobre ese objeto. El método Objects le permite acceder a estas propiedades.

Los inmuebles disponibles son los siguientes:

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

Para acceder a la propiedad de un objeto, use el nombre del sensor de visión AI, seguido del método de objetos y luego el í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 sería AIVision1.objects[0].width.

id

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

Tres etiquetas de abril están siendo rastreadas por AI Vision Utility. Cada etiqueta está identificada, ubicada y delineada, indicando su seguimiento por parte del sistema. Los ID de AprilTag en este ejemplo son 0, 3 y 9.

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.

La utilidad AI Vision está rastreando cuatro objetos, dos BuckyBalls y dos Rings. Cada objeto es identificado, localizado y delineado, indicando su seguimiento por el sistema. La utilidad anota la identificación del objeto, en este ejemplo hay una bola roja, una bola azul, un anillo verde y un anillo rojo.

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.

Se muestra el sensor de visión AI rastreando una Buckyball azul. La Buckyball tiene un rectángulo de seguimiento a su alrededor, y la etiqueta anterior muestra que tiene una posición X de 176 y una posición Y de 117. El centro del rectángulo de seguimiento se resalta para demostrar que la posición se mide desde el centro.

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.

Se muestra el sensor de visión AI rastreando dos cubos azules. Los Cubos tienen rectángulos de seguimiento a su alrededor, y uno está mucho más cerca de la cámara. El más cercano tiene una posición Y de 184, y el más lejano tiene una posición Y de 70.

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) {
  // Obtener una instantánea de todos los objetos de color azul.
  AIVision.takeSnapshot(AIVision__Blue);

  // Verifique para asegurarse de que se detectó un objeto en la instantánea antes de extraer datos.
  if (AIVision.objectCount > 0) {

    if (AIVision.objects[0].centerX > 150.0 && 170.0 > AIVision.objects[0].centerX) {
      Drivetrain.turn(right);
    } else {
      Drivetrain.stop();
    }
  }
  espera(5, msec);
}

originX y originY

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

Se muestra el sensor de visión AI rastreando una Buckyball azul. La Buckyball tiene un rectángulo de seguimiento a su alrededor, y la etiqueta anterior muestra que tiene una posición X de 176 y una posición Y de 117. La esquina superior izquierda del rectángulo de seguimiento está resaltada para demostrar que la posición de origen se mide desde su esquina superior izquierda.

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.

Se muestra el sensor de visión AI rastreando una Buckyball azul. La Buckyball tiene un rectángulo de seguimiento a su alrededor, y la etiqueta anterior muestra que tiene un ancho de 80 píxeles y una altura de 78 píxeles. Las flechas rojas resaltan el rectángulo de seguimiento para demostrar su ancho y alto.

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

Se muestra el sensor de visión AI rastreando dos cubos azules. Los Cubos tienen rectángulos de seguimiento a su alrededor, y uno está mucho más cerca de la cámara. El más cercano tiene un ancho de 144 y una altura de 113, y el más lejano tiene un ancho de 73 y una altura de 84.

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) {
  // Obtener una instantánea de todos los objetos azules.
  AIVision.takeSnapshot(AIVision1__Blue);

  // Verifique para asegurarse de que se detectó un objeto en la instantánea antes de extraer datos.
  if (AIVision.objectCount > 0) {

    if (AIVision.objects[0].width < 250.0) {
      Drivetrain.drive(forward);
    } else {
      Drivetrain.stop();
    }
  }
  espera(5, msec);
}

ángulo

Animación de un cuadrado rojo y un cuadrado verde que se giran juntos para demostrar los 360 grados de un valor de ángulo.

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.

El sensor de visión AI se muestra siguiendo un código de color verde y luego azul. La transmisión de video muestra un cubo verde apilado encima de un cubo azul. El valor del ángulo del Código de colores está resaltado y lee 87 grados, lo que indica que el Código de colores está orientado verticalmente.

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.

El sensor de visión AI se muestra siguiendo un código de color verde y luego azul. La transmisión de video muestra un cubo verde sentado junto a un cubo azul, pero están en un ángulo incómodo en comparación con el sensor. El valor del ángulo del código de color está resaltado y lee 0 grados, lo que indica que el ángulo del código de color no se puede leer.

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 utilidad AI Vision está rastreando cuatro objetos, dos BuckyBalls y dos Rings. Cada objeto es identificado, localizado y delineado, indicando su seguimiento por el sistema. La utilidad también enumera la puntuación de clasificación de IA de cada objeto; en este ejemplo, cada puntuación es del 99%.

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.


objectCount

El método objectCount devuelve la cantidad de objetos detectados en la última instantánea.

Se muestra el sensor de visión AI rastreando dos cubos azules. Los Cubos tienen rectángulos de seguimiento a su alrededor, y uno está mucho más cerca de la cámara.

En este ejemplo se han detectado dos objetos con la Firma de Color “Azul”. Ambos se colocarán en la matriz cuando se utilice el método takeSnapshot.

Este fragmento de código actualiza continuamente el cerebro EXP con el número de objetos detectados. Basándose en el ejemplo proporcionado, enviará repetidamente el valor 2, indicando que se han detectado dos objetos.

while (true) {
// Obtener una instantánea de todos los objetos azules.
AIVision.takeSnapshot(AIVision__Blue);

Brain.Screen.clearScreen(); Brain.Screen.setCursor
(1, 1);

// Verifique para asegurarse de que se detectó un objeto en la instantánea antes de extraer datos.
if (AIVision.objectCount > 0) {
Brain.Screen.print(AIVision1.objectCount);
}
espera(5, msec);
}

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

Last Updated: