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:
- Configuración de firmas de color con la firma AI Vision en VEXcode EXP
- Configuración de códigos de color con la firma AI Vision en VEXcode EXP
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í:
- Clasificaciones de IA con el sensor de visión de IA en VEXcode EXP
- AprilTags con el sensor de visión AI en VEXcode EXP
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.
- 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:
-
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.
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.
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.
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.
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.
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.
Las medidas de ancho y alto ayudan a identificar diferentes objetos. Por ejemplo, una Buckyball tendrá una altura mayor que un Ring.
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
La propiedad angle solo está disponible para Códigos de color y AprilTags.
Esto representa si el código de color detectado o AprilTag está orientado de manera diferente.
Puede ver si el robot está orientado de manera diferente en relación con el Color Code o AprilTag y tomar decisiones de navegación de acuerdo con eso.
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.
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.
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);
}