Certifique-se de ter Assinaturas de Cor e Códigos de Cor configurados com seu Sensor de Visão de IA para que eles possam ser usados com seus blocos. Para saber mais sobre como configurá-los, você pode ler os artigos abaixo:
- Configurando assinaturas de cores com a assinatura AI Vision no VEXcode V5
- Configurar códigos de cores com o AI Vision Sensor no VEXcode V5
O sensor de visão de IA também pode detectar classificações de IA e AprilTags. Para aprender como habilitar esses modos de detecção, acesse aqui:
Obtenha dados visuais com o AI Vision Sensor
Cada comando do AI Vision Sensor começará com o nome do AI Vision Sensor configurado. Para todos os exemplos neste artigo, o nome do sensor de visão de IA usado será ai_vision_1
.
tire uma foto rápida
O método take_snapshot
tira uma foto do que o AI Vision Sensor está vendo no momento e extrai dados desse instantâneo que podem ser usados em um projeto. Quando um instantâneo é tirado, você precisa especificar de que tipo de objeto o AI Vision Sensor deve coletar dados:
- Uma assinatura de cor ouCódigo de cor
- Essas assinaturas visuais começam com o nome do sensor de visão de IA, sublinhado duplo e, em seguida, o nome da assinatura visual, por exemplo:
ai_vision_1__Blue
.
- Essas assinaturas visuais começam com o nome do sensor de visão de IA, sublinhado duplo e, em seguida, o nome da assinatura visual, por exemplo:
-
Classificações de IA -
AiVision.ALL_AIOBJS
-
abrilTags-
AiVision.ALL_TAGS
Tirar um instantâneo criará uma tupla de todos os objetos detectados que você especificou. Por exemplo, se você quisesse detectar uma Assinatura de Cor "Azul" e o Sensor de Visão de IA detectasse 3 objetos azuis diferentes, os dados de todos os três seriam colocados na tupla.
Neste exemplo, a variável vision_objects
armazena tupla contendo as Assinaturas de Cor "Roxa"detectadas pelo Sensor de Visão de IA chamado ai_vision_1
. Ele exibe o número de objetos detectados e captura um novo instantâneo a cada 0,5 segundos.
while True:
# Obtém um instantâneo de todas as assinaturas de cor roxa e armazena-o em vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Purple)
# Verifique se um objeto foi detetado no snapshot antes de extrair dados.
se vision_objects[0].exists == True
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Contagem de objectos:", len(vision_objects) )
espera (0,5, SEGUNDOS)
Propriedades do objeto
Cada objeto de um instantâneo tem propriedades diferentes que podem ser usadas para relatar informações sobre esse objeto. As propriedades disponíveis são as seguintes:
- eu ia
- centroX e centroY
- origemX e origemY
- largura
- altura
- ângulo
- pontuação
- existe
Para acessar a propriedade de um objeto, use o nome da variável que armazena a tupla, seguido pelo índice do objeto.
O índice do objeto indica qual propriedade específica do objeto você deseja recuperar. Depois de tirar uma foto, o sensor de visão de IA classifica automaticamente os objetos por tamanho. O maior objeto recebe o índice 0, enquanto objetos menores recebem números de índice mais altos.
Por exemplo, chamar a largura do objeto maior dentro da variável vision_objects
seria: vision_objects[0].width
.
eu ia
A propriedade id
está disponível apenas para AprilTags e Classificações AI.
Para uma AprilTag, a propriedade id
representa o número de ID da(s) AprilTag(s)detectada( ).
A identificação de AprilTags específicas permite a navegação seletiva. Você pode programar seu robô para se mover em direção a certas tags enquanto ignora outras, usando-as efetivamente como sinalizadores para navegação automatizada.
ParaClassificações de IA, a propriedade id
representa o tipo específico de Classificação de IA detectada.
Identificar Classificações de IAespecíficas permite que o robô se concentre apenas em objetos específicos, como querer navegar apenas em direção a uma Buckyball vermelha, não a uma azul.
Aceda a estes artigos para obter mais informações sobre AprilTags e AI Classifications e como ativar a sua deteção no AI Vision Utility.
centroX
e centroY
Estas são as coordenadas centrais do objeto detectado em pixels.
As coordenadas CenterX e CenterY ajudam na navegação e no posicionamento. O sensor de visão AI tem uma resolução de 320 x 240 pixels.
Você pode ver que um objeto mais próximo do sensor de visão de IA terá uma coordenada CenterY menor do que um objeto mais distante.
Neste exemplo, como o centro da visão do sensor de visão de IA é (160, 120), o robô virará para a direita até que a coordenada centroX de um objeto detectado seja maior que 150 pixels, mas menor que 170 pixels.
while True:
# Obtenha um instantâneo de todas as assinaturas de cor azul e armazene-o em vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)
# Verifique se um objeto foi detetado no snapshot antes de extrair dados.
if vision_objects[0].exists == True
# Verifica se o objeto não está no centro da vista do AI Vision Sensor.
if vision_objects[0].centerX > 150 e 170 > vision_objects[0].centerX:
# Continue a virar para a direita até que o objeto esteja no centro da vista.
drivetrain.turn(RIGHT)
else:
drivetrain.stop()
wait(5, MSEC)
origemX
e origemY
OriginX e OriginY são as coordenadas no canto superior esquerdo do objeto detectado em pixels.
As coordenadas OriginX e OriginY ajudam na navegação e no posicionamento. Ao combinar essa coordenada com a Largura e a Altura do objeto, você pode determinar o tamanho da caixa delimitadora do objeto. Isso pode ajudar a rastrear objetos em movimento ou a navegar entre objetos.
largura
e altura
Esta é a largura ou altura do objeto detectado em pixels.
As medidas de largura e altura ajudam a identificar diferentes objetos. Por exemplo, um Buckyball terá uma altura maior que um Ring.
Largura e altura também indicam a distância de um objeto do sensor de visão de IA. Medidas menores geralmente significam que o objeto está mais distante, enquanto medidas maiores sugerem que ele está mais próximo.
Neste exemplo, a largura do objeto é usada para navegação. O robô se aproximará do objeto até que a largura atinja um tamanho específico antes de parar.
while True:
# Obtenha um instantâneo de todas as assinaturas de cor azul e armazene-o em vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)
# Verifique se um objeto foi detetado no snapshot antes de extrair dados.
if vision_objects[0].exists == True
# Verifique se o maior objeto está próximo do AI Vision Sensor medindo a sua largura.
if vision_objects[0].width < 250:
# Aproxime-se do objeto até que este tenha mais de 250 pixéis.
drivetrain.drive(FORWARD)
else:
drivetrain.stop()
wait(5, MSEC)
ângulo
A propriedade ângulo está disponível somente para os códigos de cores eAprilTags.
Isso representa se o código de cor detectadoou AprilTag está orientado de forma diferente.
Você pode ver se o robô está orientado de forma diferente em relação ao Código de Cor ouAprilTag e tomar decisões de navegação de acordo com isso.
Por exemplo, se um código de cor não for detectado em um ângulo adequado, o objeto que ele representa pode não ser captado corretamente pelo robô.
pontuação
A propriedade pontuação
é usada ao detectarClassificações de IA com o Sensor de Visão de IA.
A pontuação de confiança indica o grau de certeza do sensor de visão de IA sobre sua detecção. Nesta imagem, há 99% de confiança na identificação das classificações de IA desses quatro objetos. Você pode usar essa pontuação para garantir que seu robô se concentre apenas em detecções altamente confiáveis.
existe
A propriedade existe
é usada para detectar foi detectada no último instantâneo tirado.
Isso permite que você verifique se algum objeto detectado foi detectado no instantâneo anterior. Esta propriedade retornará True quando um objeto existir e False quando o objeto não existir.