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:
- Configuración de firmas de color con la firma AI Vision en VEXcode V5
- Configuración de códigos de color con la firma AI Vision en VEXcode V5
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í:
- Uso de clasificaciones de IA con el sensor de visión de IA
- Uso de AprilTags con el sensor de visión de IA
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
.
- 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:
-
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.
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.
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.
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.
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.
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.
Las medidas de ancho y alto ayudan a identificar diferentes objetos. Por ejemplo, un Buckyball tendrá una altura mayor que un Ring.
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
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.
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.
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 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.
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);
}