Codificação com o sensor de visão AI no VEXcode V5 Python

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:

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:

Para saber mais detalhes sobre esses comandos individuais e como usá-los no VEXcode, acesse o site da API.


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.
  • 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.

Três marcadores de identificação quadrados rotulados com os IDs 0, 9 e 3, cada um com coordenadas correspondentes e medidas de tamanho apresentadas em texto branco. O ID 0 está à esquerda, o ID 9 está à direita e o ID 3 está na parte inferior central. Cada marcador tem um padrão único a preto e branco dentro de um quadrado.

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.

Duas bolas e dois anéis identificados na imagem, com etiquetas que indicam a posição, o tamanho e a pontuação. A bola vermelha está à esquerda, a bola azul está à direita, o anel verde está no canto inferior esquerdo e o anel vermelho está no canto inferior direito. Cada objeto é contornado com uma caixa branca e detalhes como coordenadas X, Y, largura, altura e pontuação de 99% são apresentados em texto branco.

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.

Um Buckyball azul sendo rastreado por um sistema de visão computacional. O objeto é contornado por um quadrado branco e dentro do contorno há um quadrado vermelho menor circundando uma cruz branca centralizada. No canto superior esquerdo da imagem, uma etiqueta indica que o objeto é azul, com coordenadas X:176, Y:117 e dimensões L:80, A:78.

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.

Dois objetos cúbicos azuis rastreados por um sistema de visão. O objeto superior é rotulado com coordenadas X:215, Y:70 e dimensões L:73, A:84, com um contorno branco e uma cruz branca centralizada. O objeto inferior é rotulado com as coordenadas X:188, Y:184 e dimensões L:144, A:113, também contornadas em branco com uma cruz branca centralizada.

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.

Um Buckyball azul sendo rastreado por um sistema de visão. Um contorno branco circunda o objeto, com uma cruz branca centralizada dentro do contorno. O rótulo superior esquerdo indica a cor do objeto como azul, juntamente com as coordenadas X:176, Y:117 e as dimensões L:80, A:78. Um pequeno quadrado vermelho destaca o canto superior esquerdo do objeto.

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.

A imagem mostra uma Buckyball azul com um contorno quadrado branco rastreando-a. O canto superior esquerdo tem uma etiqueta indicando que é um objeto azul, com coordenadas X:176, Y:117 e dimensões L:80, A:78. Setas vermelhas destacam a largura e a altura do objeto.

As medidas de largura e altura ajudam a identificar diferentes objetos. Por exemplo, um Buckyball terá uma altura maior que um Ring.

Dois objetos cúbicos azuis sendo rastreados por um sistema de reconhecimento visual. O cubo superior tem um contorno branco com uma etiqueta indicando sua posição como X:215, Y:70 e dimensões L:73, A:84. O cubo inferior tem um contorno branco semelhante com o rótulo exibindo X:188, Y:184 e dimensões L:144, A:113. Cada cubo tem uma cruz branca centralizada, provavelmente indicando o ponto focal do rastreamento. Os rótulos destacam as medições e os dados de rastreamento de cada objeto.

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

Um gif rotativo que mostra blocos vermelhos e verdes. Quando os blocos estão posicionados perfeitamente na horizontal de vermelho para verde, mostram 0 graus. Se o bloco vermelho estiver verticalmente em cima do bloco verde, estará a 90 graus. Se os blocos estiverem horizontalmente de verde a vermelho, são 180 graus. Se o bloco verde estiver em cima do bloco vermelho na vertical, são 20 graus.

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.

Uma pilha de dois cubos, um verde em cima e um azul embaixo, sendo rastreados por um sistema de visão. Um contorno branco envolve ambos os cubos, com uma cruz branca centralizada no cubo verde. O rótulo na parte inferior da imagem exibe Verde_Azul A:87°, indicando as cores detectadas e uma medição de ângulo. Abaixo disso, as coordenadas são listadas como X:117, Y:186, com dimensões L:137, A:172, representando a posição e o tamanho dos cubos empilhados no quadro.

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.

Dois cubos, um verde e um azul, colocados lado a lado e rastreados por um sistema de visão. Um contorno branco envolve ambos os cubos com uma cruz branca no centro. O rótulo superior esquerdo indica Verde_Azul A:0°, referenciando as cores detectadas e uma medição de ângulo. Abaixo disso, as coordenadas são mostradas como X:150, Y:102, com dimensões L:179, A:109, representando a posição e o tamanho dos cubos dentro do quadro.

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 imagem mostra quatro objetos sendo rastreados por um sistema de visão: duas bolas e dois anéis. A bola vermelha é rotulada com as coordenadas X:122, Y:84, W:67, H:66 e uma pontuação de 99%. A bola azul tem X:228, Y:86, W:70, H:68, com uma pontuação de 99%. O anel verde tem coordenadas X:109, Y:186, W:98, H:92 e uma pontuação de 99%. O anel vermelho é rotulado como X:259, Y:187, W:89, H:91, com uma pontuação de 99%. Cada objeto é contornado em branco, indicando precisão de rastreamento.

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.

 

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: