AiVision#
Inicializando la clase AiVision#
Un sensor de visión de IA se crea utilizando el siguiente constructor:
AiVision(puerto, colores, códigos)
Este constructor utiliza tres parámetros:
Parámetro |
Descripción |
---|---|
|
Un Puerto inteligente válido al que está conectado el sensor de visión de IA. |
|
Opcional. El nombre de uno o más objetos Colordesc. |
|
Opcional. El nombre de uno o más objetos Codedesc. |
# Create a new Color Signature "red" with the Colordesc class.
red = 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.
ai_vision = AiVision(Ports.PORT1, red)
Este objeto ai_vision
de AiVision y el objeto 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#
tomar_instantánea()#
El método take_snapshot(type, count)
toma la instantánea actual visible para el sensor de visión de IA y detecta los objetos de una firma, código o identificación de firma determinados.
Parámetros |
Descripción |
---|---|
tipo |
|
contar |
Opcional. El número máximo de objetos a obtener. El valor predeterminado es 8. |
Al tomar una instantánea, se creará una tupla con todos los objetos detectados que especificó. 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 tupla.
Devuelve: Una tupla de objetos detectados o una tupla vacía si no se detecta nada.
Hay diez propiedades diferentes que se pueden llamar desde la tupla para obtener datos del objeto especificado.
identificación
centerX
ycenterY
origenX
yorigenY
ancho
yalto
ángulo
existe
puntuación
Para acceder a la propiedad de un objeto, utilice el nombre de la tupla y luego su índice. Por ejemplo, si la tupla se almacena en una variable llamada vision_objects
, la propiedad width
se llamaría vision_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
, primero se debe crear una tupla utilizando el comando ai_vision.take_snapshot
.
Tras crear una tupla, se puede acceder a objetos específicos y sus propiedades mediante su índice. La tupla se ordena por área de objeto, 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 tendrá índice 0.
AprilTag 3 tendrá índice 1.
AprilTag 15 tendrá índice 2.
Para llamar a esta propiedad, utilice la tupla seguida del índice del objeto detectado del que se extrae la propiedad. Por ejemplo: vision_objects[0].id
.
centroX y centroY#
Las propiedades centerX
y centerY
informan las coordenadas centrales del objeto detectado en píxeles.
Para llamar a estas propiedades, primero se debe crear una tupla utilizando el comando ai_vision.take_snapshot
.
Tras crear una tupla, se puede acceder a objetos específicos y sus propiedades mediante su índice. La tupla se ordena por área de objeto, de mayor a menor, con índices que empiezan en 0.
Para llamar a esta propiedad, utilice la tupla seguida del índice del objeto detectado del que se extrae la propiedad. Por ejemplo: vision_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 Signatures and store
# it in vision_objects.
vision_objects = ai_vision.take_snapshot(ai_vision_1__Blue)
# Check to make sure an object was detected in the
# snapshot before pulling data.
if vision_objects[0].exists == True
# Check if the object isn't in the center of the
# AI Vision Sensor's view.
if vision_objects[0].centerX > 150 and 170 > vision_objects[0].centerX:
# Keep turning right until the object is in the
# center of the view.
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 estas propiedades, primero se debe crear una tupla utilizando el comando ai_vision.take_snapshot
.
Tras crear una tupla, se puede acceder a objetos específicos y sus propiedades mediante su índice. La tupla se ordena por área de objeto, 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 se extrae la propiedad. Por ejemplo: vision_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 Color Signatures and store
# it in vision_objects.
vision_objects = ai_vision.take_snapshot(ai_vision_1__Blue)
brain.screen.clear_screen()
# Check to make sure an object was detected in the
# snapshot before pulling data.
if len(vision_objects) > 0:
brain.screen.draw_rectangle(vision_objects[0].originX, vision_objects[0].originY, vision_objects[0].width, vision_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 estas propiedades, primero se debe crear una tupla utilizando el comando ai_vision.take_snapshot
.
Tras crear una tupla, se puede acceder a objetos específicos y sus propiedades mediante su índice. La tupla se ordena por área de objeto, 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: vision_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 Color Signatures and store
# it in vision_objects.
vision_objects = ai_vision.take_snapshot(ai_vision_1__Blue)
# Check to make sure an object was detected in the
# snapshot before pulling data.
if vision_objects[0].exists == True
# Check if the largest object is close to the
# AI Vision Sensor by measuring its width.
if vision_objects[0].width < 250:
# Drive closer to the object until it's wider
# than 250 pixels.
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
, primero se debe crear una tupla usando el comando ai_vision.take_snapshot
.
Tras crear una tupla, se puede acceder a objetos específicos y sus propiedades mediante su índice. La tupla se ordena por área de objeto, de mayor a menor, con índices que empiezan en 0.
Para llamar a esta propiedad, utilice la tupla seguida del índice del objeto detectado del que se extrae la propiedad. Por ejemplo: vision_objects[0].angle
.
En este ejemplo, el ángulo de AprilTag se imprime en la pantalla del cerebro.
while True:
# Get a snapshot of all Blue Color Signatures and store
# it in vision_objects.
vision_objects = ai_vision.take_snapshot(AiVision.ALL_TAGS)
brain.screen.clear_screen()
# Check to make sure an object was detected in the
# snapshot before pulling data.
if len(vision_objects) > 0:
brain.screen.print(vision_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
, primero se debe crear una tupla usando el comando ai_vision.take_snapshot
.
Tras crear una tupla, se puede acceder a objetos específicos y sus propiedades mediante su índice. La tupla se ordena por área de objeto, de mayor a menor, con índices que empiezan en 0.
Para llamar a esta propiedad, utilice la tupla seguida del índice del objeto detectado del que se extrae la propiedad. Por ejemplo: vision_objects[0].exists
.
En este ejemplo, se verifica si el objeto existe antes de intentar extraer datos de él para la navegación.
while True:
# Get a snapshot of all Blue Color Signatures and store
# it in vision_objects.
vision_objects = ai_vision.take_snapshot(ai_vision_1__Blue)
# Check to make sure an object was detected in the
# snapshot before pulling data.
if vision_objects[0].exists == True
# Check if the largest object is close to the
# AI Vision Sensor by measuring its width.
if vision_objects[0].width < 250:
# Drive closer to the object until it's wider
# than 250 pixels.
drivetrain.drive(FORWARD)
else:
drivetrain.stop()
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 exists
, primero se debe crear una tupla usando el comando ai_vision.take_snapshot
.
Tras crear una tupla, se puede acceder a objetos específicos y sus propiedades mediante su índice. La tupla se ordena por área de objeto, de mayor a menor, con índices que empiezan en 0.
Para llamar a esta propiedad, utilice la tupla seguida del índice del objeto detectado del que se extrae la propiedad. Por ejemplo: vision_objects[0].score
.
recuento_de_objetos()#
El método object_count()
devuelve la cantidad de objetos detectados en el último uso del método take_snapshot
.
Devuelve: Un entero como la cantidad de objetos detectados en el último uso del método take_snapshot
.
detección de etiquetas()#
El método tag_detection(enable)
habilita o deshabilita la detección de AprilTag.
Parámetros |
Descripción |
---|---|
permitir |
|
Devoluciones: Ninguna.
detección de color()#
El método color_detection(enable, merge)
habilita o deshabilita la detección de objetos de color y código.
Parámetros |
Descripción |
---|---|
permitir |
|
unir |
Opcional. Un valor booleano que habilita o deshabilita la fusión de detecciones de colores adyacentes. |
Devoluciones: Ninguna.
detección_de_modelo(habilitar)#
El método model_detection(enable)
habilita o deshabilita la detección de objetos del modelo de IA.
Parámetros |
Descripción |
---|---|
permitir |
|
Devoluciones: Ninguna.
inicio_awb()#
El método start_awb()
ejecuta el balance de blancos automático.
Devoluciones: Ninguna.
colocar()#
El método set()
establece una nueva Firma de color o Código de color.
Devoluciones: Ninguna.
instalado()#
El método installed()
verifica la conexión del dispositivo.
Devuelve: «Verdadero» si el sensor de visión de IA está conectado. «Falso» si no lo está.
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 recibido en milisegundos.