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 |
---|---|
|
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 |
---|---|
|
Un Puerto inteligente válido al que está conectado el sensor de visión de IA. |
|
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.
Clases relacionadas
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 |
|
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
ycenterY
origenX
yorigenY
ancho
yalto
á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 |
|
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 |
|
unir |
Un valor booleano que habilita o deshabilita la fusión de detecciones de colores adyacentes. El valor predeterminado es |
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 |
|
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 |
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á.