Asegúrate de tener firmas de color y códigos de color configurados con tu sensor de visión de IA para que puedan usarse con tus bloques. Para obtener más información sobre cómo configurarlos, puede leer los artículos siguientes:

El sensor de visión de IA también puede detectar clasificaciones de IA y AprilTags. 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, visite el sitio de API.


Obtenga datos visuales con el sensor de visión AI

Cada comando del sensor de visión de IA comenzará con el nombre del sensor de visión de IA configurado. Para todos los ejemplos de este artículo, el nombre del sensor de visión de IA utilizado será AIVision.

Tomar una instantá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. Cuando se toma una instantánea, debe especificar qué tipo de objeto debe recopilar datos el sensor de visión de IA:

  • AFirma de color oCódigo de color
    • Estas firmas visuales comienzan con el nombre del sensor de visión de IA, doble guión bajo y luego el nombre de la firma visual, por ejemplo: AIVision1__Blue.
  • Clasificaciones de IA - aivision::ALL_AIOBJS
  • abrilEtiquetas- aivision::ALL_TAGS

Al tomar una instantánea se creará una matriz de todos los objetos detectados que usted especificó. Por ejemplo, si quisiera detectar una firma de color "Azul" , y el sensor de visión de IA detectara 3 objetos azules diferentes, los datos de los tres se colocarían en la matriz.

En este ejemplo, se toma una instantánea de la firma de color "Azul" del sensor de visión de IA llamado AIVision1. Muestra la cantidad 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);

// Verificar 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);
}
wait(5, msec);
}

objetos

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

Las propiedades disponibles son las siguientes:

  • identificación
  • centroX y centroY
  • origenX y origenY
  • ancho
  • altura
  • ángulo
  • existe
  • puntaje

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 luego el índice del objeto.

El índice del objeto indica qué propiedad del objeto específico desea recuperar. Después de tomar una instantánea, el sensor de visión IA clasifica automáticamente los objetos por tamaño. Al objeto más grande se le asigna el índice 0, mientras que 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.

identificación

La propiedad id solo está disponible para las clasificaciones de IA de las etiquetas y del de abril.

Tres marcadores de identificación cuadrados etiquetados con los identificadores 0, 9 y 3, cada uno con sus coordenadas y medidas de tamaño correspondientes mostradas en texto blanco. El ID 0 está a la izquierda, el ID 9 está a la derecha y el ID 3 está en la parte inferior central. Cada marcador tiene un patrón único en blanco y negro dentro de un cuadrado.

Para unAprilTag, la propiedad id representa el número de identificaciónAprilTag(s) detectados.

La identificación de AprilTags específicos permite una navegación selectiva. Puede programar su robot para que se mueva hacia ciertas etiquetas e ignore otras, utilizándolas efectivamente como señales para la navegación automatizada.

Dos bolas y dos aros identificados en la imagen, con etiquetas que indican su posición, tamaño y puntuación. La bola roja está a la izquierda, la bola azul está a la derecha, el anillo verde está en la parte inferior izquierda y el anillo rojo está en la parte inferior derecha. Cada objeto está delineado con un cuadro blanco y los detalles como las coordenadas X, Y, el ancho, la altura y una puntuación del 99 % se muestran en texto blanco.

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 se concentre únicamente en objetos específicos, como querer navegar únicamente hacia un Buckyball rojo, no hacia uno azul.

Consulte estos artículos para obtener más información sobre las clasificaciones de IA del de abril, las etiquetas y cómo habilitar su detección en la Utilidad de Visión de IA.

centroX y centroY

Estas son las coordenadas centrales del objeto detectado en píxeles.

Un Buckyball azul siendo rastreado por un sistema de visión por computadora. El objeto está delineado con un cuadrado blanco, y dentro del contorno hay un cuadrado rojo más pequeño que rodea una cruz blanca centrada. En la esquina superior izquierda de la imagen, una etiqueta indica que el objeto es azul, con coordenadas X:176, Y:117 y dimensiones W:80, H:78.

Las coordenadas CenterX y CenterY ayudan con la navegación y el posicionamiento. El sensor de visión IA tiene una resolución de 320 x 240 píxeles.

Dos objetos cúbicos azules seguidos por un sistema de visión. El objeto superior está etiquetado con las coordenadas X:215, Y:70 y dimensiones W:73, H:84, con un contorno blanco y una cruz blanca centrada. El objeto inferior está etiquetado con las coordenadas X:188, Y:184 y las dimensiones W:144, H:113, también delineadas en blanco con una cruz blanca centrada.

Puedes ver que un objeto más cercano al sensor de visión de IA 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 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.

mientras (verdadero) {
  // Obtener una instantánea de todos los objetos de color azul.
  AIVision.takeSnapshot(AIVision__Blue);

  // Verifique que se haya detectado un objeto en la instantánea antes de extraer datos.
  si (AIVision.objectCount > 0) {

    si (AIVision.objects[0].centerX > 150.0 && 170.0 > AIVision.objects[0].centerX) {
      Transmisión.girar(derecha);
    } de lo contrario {
      Transmisión.detener();
    }
  }
  esperar(5, ms);
}

origen X y origen

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

Un Buckyball azul siendo rastreado por un sistema de visión. Un contorno blanco rodea el objeto, con una cruz blanca centrada dentro del contorno. La etiqueta superior izquierda indica que el color del objeto es azul, junto con las coordenadas X:176, Y:117 y las dimensiones W:80, H:78. Un pequeño cuadrado rojo resalta la esquina superior izquierda del objeto.

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 a navegar entre objetos.

ancho y alto

Este es el ancho o alto del objeto detectado en píxeles.

La imagen muestra un Buckyball azul con un contorno cuadrado blanco que lo sigue. La esquina superior izquierda tiene una etiqueta que indica que es un objeto azul, con coordenadas X:176, Y:117 y dimensiones W:80, H:78. Las flechas rojas resaltan el ancho y la altura del objeto.

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

Dos objetos cúbicos azules rastreados por un sistema de reconocimiento visual. El cubo superior tiene un contorno blanco con una etiqueta que indica su posición como X:215, Y:70 y dimensiones W:73, H:84. El cubo inferior tiene un contorno blanco similar con la etiqueta que muestra X: 188, Y: 184 y dimensiones W: 144, H: 113. Cada cubo tiene una cruz blanca centrada, que probablemente indica el punto focal para el seguimiento. Las etiquetas resaltan las mediciones y los datos de seguimiento de cada objeto.

El ancho y la altura también indican la distancia de un objeto al sensor de visión IA. Las medidas más pequeñas generalmente significan que el objeto está más lejos, mientras que las medidas más grandes sugieren que está más cerca.

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

mientras (verdadero) {
  // Obtener una instantánea de todos los objetos azules.
  AIVision.takeSnapshot(AIVision1__Blue);

  // Verifique que se haya detectado un objeto en la instantánea antes de extraer datos.
  si (AIVision.objectCount > 0) {

    si (AIVision.objects[0].width < 250.0) {
      Transmisión.drive(adelante);
    } de lo contrario {
      Transmisión.stop();
    }
  }
  esperar(5, ms);
}

ángulo

Un gif giratorio que muestra bloques rojos y verdes. Cuando los bloques están posicionados perfectamente horizontales de rojo a verde, se muestran como 0 grados. Si el bloque rojo está encima del bloque verde verticalmente, está a 90 grados. Si los bloques están en posición horizontal de verde a rojo, son 180 grados. Si el bloque verde está encima del bloque rojo verticalmente, son 20 grados.

La propiedad del ángulo solo está disponible para los códigos de color yAprilTags

Esto representa si el código de color o AprilTag detectado están orientados de manera diferente.

Una pila de dos cubos, uno verde en la parte superior y otro azul en la parte inferior, rastreados por un sistema de visión. Un contorno blanco rodea ambos cubos, con una cruz blanca centrada en el cubo verde. La etiqueta en la parte inferior de la imagen muestra Verde_Azul A:87°, indicando los colores detectados y una medición del ángulo. Debajo de eso, las coordenadas se muestran como X:117, Y:186, con dimensiones W:137, H:172, que representan la posición y el tamaño de los cubos apilados en el marco.

Puede ver si el robot está orientado de manera diferente en relación con el código de color oAprilTag y tomar decisiones de navegación en función de eso.

Dos cubos, uno verde y otro azul, colocados uno al lado del otro y rastreados por un sistema de visión. Un contorno blanco rodea ambos cubos con una cruz blanca en el centro. La etiqueta superior izquierda indica Verde_Azul A:0°, haciendo referencia a los colores detectados y a una medición de ángulo. Debajo, las coordenadas se muestran como X:150, Y:102, con dimensiones W:179, H:109, que representan la posición y el tamaño de los cubos dentro del marco.

Por ejemplo, si un código de color no se detecta en un ángulo adecuado, es posible que el robot no pueda recoger correctamente el objeto que representa.

puntaje

La propiedad de puntuación se utiliza al detectarclasificaciones de IA con el sensor de visión de IA.

La imagen muestra cuatro objetos rastreados por un sistema de visión: dos bolas y dos anillos. La bola roja está etiquetada con las coordenadas X:122, Y:84, W:67, H:66 y una puntuación del 99%. La bola azul tiene X:228, Y:86, W:70, H:68, con una puntuación del 99%. El anillo verde tiene las coordenadas X:109, Y:186, W:98, H:92 y una puntuación del 99%. El anillo rojo está etiquetado como X:259, Y:187, W:89, H:91, con una puntuación del 99%. Cada objeto está delineado en blanco, lo que indica la precisión del seguimiento.

La puntuación de confianza indica qué tan seguro está el sensor de visión de IA acerca de su detección. En esta imagen, hay un 99% de confianza en la identificación de las clasificaciones de IA de estos cuatro objetos. Puede utilizar esta puntuación para garantizar que su robot solo se centre en detecciones altamente confiables.

existe

La propiedad existe se utiliza para detectar si se ha detectado una visual especificada en la última instantánea tomada.

Esto le permite verificar si se detectaron objetos en la instantánea anterior. Esta propiedad devolverá un Verdadero cuando un objeto exista y un Falso cuando el objeto no exista.


objetoCount

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

La interfaz de AI Vision Utility con dos cubos azules detectados en el lado izquierdo, cada uno marcado con sus coordenadas y dimensiones X e Y. El sistema está conectado y las AprilTags están activadas, mientras que la clasificación de IA está desactivada. A la derecha, se muestran los ajustes de color azul con rangos de tono y saturación ajustables, establecidos en 22 y 0,34, respectivamente. Hay una opción para agregar o establecer color y congelar el video. El firmware está actualizado, ejecuta la versión 1.0.0.b16 y hay un botón de cierre disponible en la parte inferior.

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 EXP Brain con la cantidad de objetos detectados. Según 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);

// Verificar 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);
}
wait(5, msec);
}

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

Last Updated: