Programação com o sensor de visão de IA em blocos VEXcode V5

Certifique-se de que configurou Assinaturas de Cor e "Códigos de Cor com o seu Sensor de Visão IA para que possam ser utilizadas com os seus blocos. Para saber mais sobre como configurá-los, pode ler os artigos abaixo:

O sensor de visão com IA também pode detetar classificações de IA e AprilTags. Para saber como ativar estes modos de deteção, aceda a este link:

Para mais detalhes sobre estes blocos individuais e como utilizá-los no VEXcode, aceda ao site da API.


Tirar foto

Um bloco que contém o comando "tirar uma fotografia" com duas opções de menu suspenso: uma rotulada como AIVision1 e a outra como COL1. Este bloco foi concebido para capturar uma imagem de um sensor de Visão por Computador e referenciar um objeto ou cor específica a partir de variáveis designadas num ambiente de programação visual. O formato do bloco apresenta ligeiras curvas nas extremidades, típicas das interfaces de programação baseadas em blocos.

O blocoTake Snapshot tira uma fotografia do que o sensor de visão de IA está a ver no momento e extrai dados dessa imagem que podem ser utilizados num projeto. Ao capturar uma imagem, é necessário especificar o tipo de objeto a partir do qual o Sensor de Visão com IA deve recolher dados:

  • Assinatura de cor
  • Código de cores
  • Classificações de IA
  • Etiquetas de abril

Ao tirar uma fotografia, será criada uma matriz com todos os objetos detetados que especificou. Por exemplo, se pretendesse detetar uma assinatura de cor "Vermelho"e o sensor de visão de IA detetasse 3 objetos vermelhos diferentes, os dados dos três seriam colocados na matriz.

obter mais informações sobre como especificar entre diferentes objetos, consulte a secção "Definir item de objeto" neste artigo.

Um bloco de código azul claro com o comando para tirar uma fotografia instantânea de um objeto ou cor. Existem duas opções no menu suspenso: uma com a etiqueta AIVision2 e a outra com a etiqueta Azul. O bloco foi concebido para utilização num ambiente de programação baseado em blocos, onde captura uma imagem instantânea de um sensor de Visão por Computador e segue um objeto ou cor definida como Azul. O bloco possui ligeiras curvas, típicas das interfaces de programação que utilizam blocos modulares.

Neste exemplo, apenas detetará objetos que correspondam à assinatura de cor "Azul" configurada e nada mais.

Dados extraídos de um instantâneo

Lembre-se de que o sensor de visão com IA utilizará a última imagem captada para todos os blocos subsequentes. Para garantir que está sempre a obter as informações mais atualizadas do seu sensor de visão com IA, tire uma nova captura de ecrã sempre que quiser extrair dados do mesmo. 

Resolução

Compreender a resolução do sensor de visão com IA é crucial para a interpretação precisa dos dados. O sensor tem uma resolução de 320x240 pixéis, com o centro exato nas coordenadas (160, 120).

As coordenadas X inferiores a 160 correspondem à metade esquerda do campo de visão do sensor, enquanto as superiores a 160 representam a metade direita. Da mesma forma, as coordenadas Y inferiores a 120 indicam a metade superior da vista, e as superiores a 120 representam a metade inferior.

Vá para Compreender os dados no utilitário de visão de IA no VEXcode V5 para obter mais informações sobre a forma como os objetos são medidos com o sensor de visão de IA.

Largura e altura

Esta é a largura ou altura do objeto detetado em pixéis.

A imagem mostra uma Buckyball azul com um contorno quadrado branco a segui-la. No canto superior esquerdo encontra-se uma etiqueta indicando que se trata de um objeto azul, com as coordenadas X:176, Y:117 e as dimensões L:80, A:78. As setas vermelhas destacam a largura e a altura do objeto.

As medidas de largura e altura ajudam a identificar diferentes objetos. Por exemplo, uma buckyball terá uma altura superior a um anel.

Dois objetos cúbicos azuis a serem rastreados por um sistema de reconhecimento visual. O cubo superior apresenta um contorno branco com uma etiqueta indicando a sua posição como X:215, Y:70 e dimensões L:73, A:84. O cubo inferior apresenta um contorno branco semelhante, com a etiqueta a exibir as dimensões X:188, Y:184 e L:144, A:113. Cada cubo possui uma cruz branca centrada, indicando provavelmente o ponto focal para o seguimento. As etiquetas destacam as medições e os dados de seguimento de cada objeto.

A largura e a altura indicam também a distância de um objeto em relação ao sensor de visão com IA. Medidas mais pequenas significam geralmente que o objeto está mais afastado, enquanto medidas maiores sugerem que está mais próximo.

O programa inicia-se com o bloco `find` quando é executado, seguido de um ciclo `infinite`. Dentro do loop, o programa tira uma fotografia utilizando o sensor de visão com inteligência artificial (AIVision1) para detetar um objeto azul. Caso o objeto exista, o programa verifica se a largura do objeto é inferior a 250 pixéis. Se for verdade, o robô avança; caso contrário, deixa de se mover. Os blocos são empilhados uns sobre os outros, indicando o fluxo do programa num ambiente de codificação modular.

Neste exemplo, a largura do objeto é utilizada para a navegação. O robô aproximar-se-á do objeto até que a largura atinja um tamanho específico antes de parar.

Centro X e Centro Y

Estas são as coordenadas do centro do objeto detetado em pixéis.

Uma buckyball azul a ser rastreada por um sistema de visão computacional. O objeto está contornado por um quadrado branco, e dentro do contorno existe um quadrado vermelho mais pequeno que rodeia uma cruz branca centrada. 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 auxiliam na navegação e no posicionamento. O sensor de visão com IA tem uma resolução de 320 x 240 pixéis.

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

É possível observar que um objeto mais próximo do sensor de visão com IA terá uma coordenada CenterY mais pequena do que um objeto mais afastado.

Uma sequência de codificação baseada em blocos, começando com "quando iniciado" e seguida por um loop infinito. Dentro do ciclo, o programa tira uma fotografia utilizando o AIVision1 para detetar um objeto azul. Se existir um objeto, o programa roda até que o objeto esteja centrado no campo de visão do sensor Vision AI. O objeto é considerado centralizado se o seu valor centerX estiver entre 150 e 170. Se o objeto não estiver centrado, o robô vira à direita; caso contrário, deixa de se mover. Os blocos indicam o fluxo e a lógica do programa visual.

Neste exemplo, como o centro da visão do sensor de visão de IA é (160, 120), o robô irá virar à direita até que a coordenada centerX de um objeto detetado seja superior a 150 pixéis, mas inferior a 170 pixéis.

Ângulo

O ângulo é uma propriedade apenas disponível para os códigos de cor e, AprilTags. Isto representa se o código de cordetectado (Códigoou ou o AprilTag estiverem orientados de forma diferente.

Uma pilha de dois cubos, um verde em cima e um azul em baixo, a ser rastreada por um sistema de visão. Um contorno branco envolve ambos os cubos, com uma cruz branca centrada no cubo verde. A etiqueta na parte inferior da imagem apresenta Verde_Azul A:87°, indicando as cores detetadas e a medição do ângulo. Abaixo deste, as coordenadas são listadas como X:117, Y:186, com as dimensões L:137, A:172, representando a posição e o tamanho dos cubos empilhados na moldura.

Pode verificar se o robô está orientado de forma diferente em relação ao código de cor ouou à etiqueta de abril e tomar decisões de navegação de acordo com isso.

Dois cubos, um verde e outro 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. A etiqueta no canto superior esquerdo indica Verde_Azul A:0°, fazendo referência às cores detectadas e a uma medição de ângulo. Abaixo deste, as coordenadas são mostradas como X:150, Y:102, com as dimensões L:179, A:109, representando a posição e o tamanho dos cubos dentro da moldura.

Por exemplo, se um código de cor(Código de Cor não for detetado no ângulo correto, o objeto que representa pode não ser apanhado corretamente pelo robô.

OriginX e OriginY

OriginX e OriginY são as coordenadas no canto superior esquerdo do objeto detetado, em pixéis.

Uma buckyball azul a ser rastreada por um sistema de visão. Um contorno branco envolve o objeto, com uma cruz branca centrada no interior do contorno. A etiqueta no canto 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 auxiliam na navegação e no posicionamento. Ao combinar esta coordenada com a largura e a altura do objeto, pode determinar o tamanho da caixa delimitadora do objeto. Isto pode ajudar no seguimento de objetos em movimento ou na navegação entre objetos.

Uma sequência de codificação baseada em blocos que começa com o início, seguida de um loop infinito. Dentro do ciclo, o programa tira uma fotografia utilizando o AIVision1 para detetar um objeto azul. Se o objeto existir, o programa desenhará um retângulo no ecrã do Brain com base na posição e no tamanho do objeto. O retângulo é desenhado utilizando os valores de origemX, origemY, largura e altura do objeto, que são fornecidos pelo sensor AIVision1. Este programa rastreia e destaca visualmente o objeto detetado no ecrã do Brain.

Neste exemplo, será desenhado um retângulo no cérebro utilizando as coordenadas exatas da sua origem, largura e altura.

ID da etiqueta

O tagID apenas está disponível paraAprilTags. Este é o número de identificação para oAprilTagespecificado.

Três cartões quadrados com etiquetas AprilTags a serem rastreados por um sistema de visão. Cada cartão é etiquetado com um número de identificação e os dados de seguimento associados. O cartão da esquerda está etiquetado com ID:0, mostrando as coordenadas A:350°, X:110, Y:96, W:41, H:41. O cartão do meio, identificado como ID:3, tem as coordenadas A:1°, X:187, Y:180, W:57, H:57. O cartão da direita está etiquetado com ID:9, com as coordenadas A:3°, X:237, Y:89, W:38, H:38. Cada cartão tem um contorno branco, e o sistema acompanha as suas posições e orientações.

A identificação de tags específicas AprilTags permite uma navegação seletiva. Pode programar o seu robô para se mover em direção a determinadas etiquetas enquanto ignora outras, utilizando-as efetivamente como pontos de referência para a navegação automatizada.

Pontuação

A propriedade de pontuação é utilizada ao detetarclassificações de IA com o sensor de visão de IA.

A imagem mostra quatro objetos a serem rastreados por um sistema de visão: duas bolas e dois anéis. A bola vermelha está identificada com as coordenadas X:122, Y:84, L:67, A: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 as coordenadas X:109, Y:186, W:98, H:92 e uma pontuação de 99%. O anel vermelho está etiquetado com X:259, Y:187, W:89, H:91, com uma pontuação de 99%. Cada objeto é contornado a branco, indicando a precisão do rastreio.

O índice de confiança indica o grau de certeza do sensor de visão por computador em relação à sua deteção. Nesta imagem, o sistema tem 99% de confiança na identificação das classificações de IA destes quatro objetos. Pode utilizar esta pontuação para garantir que o seu robô se concentra apenas em deteções de alta confiança.


Definir item de objeto

Quando um objeto é detetado pelo sensor de visão com IA, é inserido numa matriz. Por defeito, o sensor de visão com IA irá extrair dados do primeiro objeto da matriz, ou seja, do objeto com índice 1. Se o seu sensor de visão com IA detetar apenas um objeto, esse objeto será selecionado por predefinição

Quando o seu sensor de visão de IA detetar vários objetos ao mesmo tempo, terá de utilizar o blocoDefinir Item do Objeto para especificar de que objeto pretende extrair dados.

Um bloco de codificação azul claro. Contém um comando para definir o item de objeto para AIVision1 como 1. Este bloco faz parte de um ambiente de programação baseado em blocos, normalmente utilizado para definir em que objeto ou item o sensor AI Vision se deve focar ou rastrear. O formato do bloco apresenta ligeiras curvas, adaptando-se à natureza modular da plataforma de programação visual.

Quando vários objetos são detetados pelo sensor de visão com IA, são organizados na matriz do maior para o mais pequeno. Isto significa que o maior objeto detetado será sempre definido com o índice 1, e o menor objeto será sempre definido com o número mais elevado.

A interface do utilitário de visão com IA mostra dois cubos azuis detetados no lado esquerdo, cada um marcado com as suas coordenadas X e Y e dimensões. O sistema está ligado e o AprilTags está ativado, enquanto a Classificação por IA está desativada. À direita, são apresentadas as definições de cor Azul com intervalos ajustáveis de matiz e saturação, definidos em 22 e 0,34, respetivamente. Existe a opção de adicionar ou definir cor e congelar o vídeo. O firmware está atualizado, a correr a versão 1.0.0.b16, e está disponível um botão de fecho na parte inferior.

Neste exemplo, foram detetados dois objetos com a assinatura de cor"". Ambos serão colocados na matriz quando o blocoTake Snapshot for utilizado.

A interface do utilitário de visão com IA, rastreando dois cubos azuis rotulados com os seus dados de coordenadas X, Y e dimensões. O cubo da esquerda tem coordenadas X:127, Y:179 e dimensões L:136, A:123, enquanto o cubo da direita tem coordenadas X:233, Y:74 e dimensões L:78, A:87. O sistema está ligado, o AprilTags está ativado e a Classificação por IA está desativada. As definições de cor azul têm uma gama de tonalidade de 22 e uma saturação de 0,34. Um botão "Congelar vídeo" e informações sobre o firmware (versão 1.0.0.b16) são apresentados na parte inferior.

Neste caso, o objeto da frente passaria a ser o objeto de índice 1, por ser o objeto maior, e o objeto mais pequeno passaria a ser o objeto de índice 2.


Objeto Existe

Antes de extrair quaisquer dados de um instantâneo, é importante se o sensor de visão com IA detetou algum objeto nesse instantâneo. É aqui que entra em acção o bloco "Objecto Existe.

Existe um bloco de codificação hexagonal azul claro com o texto "AIVision1 object"? Este bloco faz parte de um ambiente de programação baseado em blocos, normalmente utilizado para verificar se um objeto foi detetado pelo sensor de visão com IA identificado como AIVision1. O bloco foi concebido para se enquadrar numa estrutura de codificação modular, com as ligeiras curvas e formas características de tais ambientes.

Este bloco irá devolver um valorVerdadeiro
,
(Verdadeiro) ou(Falso) (Falso) indicando se o último instantâneo capturado contém algum objeto.
Este bloco devesempre ser utilizado para garantir que não está a tentar extrair dados de um instantâneo potencialmente vazio.

Uma sequência de codificação baseada em blocos que começa com "quando iniciado" seguido de um ciclo infinito. Dentro do circuito, o sensor de visão com inteligência artificial (AIVision2) tira uma fotografia para detetar a cor azul. Se for detetado um objeto com a assinatura visual Azul, o robô avançará. Se não for detetado nenhum objeto, o robô irá parar de se mover. Os blocos são empilhados para representar a lógica condicional do programa, onde a presença de um objeto detetado controla o movimento do robô.

Por exemplo, aqui o robô estará constantemente a tirar fotografias com o sensor de visão de IA. Se identificar ou qualquer objeto com a assinatura de cor “Azul” , avançará.


Se alguma imagem captada não tiver a assinatura de cor “Azul” , o robô irá parar de se mover.


Contagem de objetos

Um bloco de codificação arredondado a azul claro, rotulado como "Contagem de objetos AIVision1". Este bloco é utilizado num ambiente de programação baseado em blocos para recuperar o número de objetos detetados pelo sensor de visão com IA identificado como AIVision1. O bloco encaixa numa estrutura modular, comummente utilizada em interfaces de programação visual para robótica ou sistemas de visão.

A utilização do bloco "Contagem de objetos permitirá ver quantos objetos de uma assinatura de cor específica o sensor de visão de IA consegue ver na sua última captura. 

Interface do utilitário de visão com IA, mostrando dois cubos azuis detetados à esquerda. O sistema está ligado, com o AprilTags ativado e a Classificação por IA desativada. A interface apresenta as definições para a deteção da cor azul, com a tonalidade definida para 22 e a saturação para 0,34. Estão presentes botões para congelar o vídeo e para adicionar ou definir a cor. O firmware está indicado como atualizado, a correr a versão 1.0.0.b16. Existe também um botão para desligar a ligação ou fechar o utilitário.

Aqui, vemos que o sensor de visão com IA tem a assinatura de cor configurada "Azul" e está a detetar dois objetos.

Uma sequência de codificação baseada em blocos que começa com o início, seguida de um loop infinito. Dentro do loop, o programa tira uma fotografia utilizando o AIVision2 para detetar a assinatura visual azul. Limpa e reinicia a consola antes de verificar se algum objeto azul foi detetado. Se existir um objeto azul, a contagem de objetos será impressa na consola. O programa aguarda depois dois segundos antes de repetir o processo. Os blocos representam visualmente uma verificação contínua de objetos azuis, exibindo os resultados na consola.Uma saída da consola com o número 2 impresso. A consola faz parte de uma interface maior que provavelmente exibe os resultados de um programa em execução num ambiente de programação baseado em blocos. A parte superior da consola tem botões para ações ou controlos adicionais, e o programa em execução aqui está a enviar dados para a Consola de Impressão, que apresenta o resultado 2 no ecrã.

Neste código, o sensor de visão de IA tiraria uma fotografia e imprimiria “2” na consola VEXcode, uma vez que apenas deteta duas assinaturas de cor “Azul” .


Objeto

Um menu suspenso para selecionar as propriedades dos objetos relacionadas com o AIVision1. A opção selecionada é largura, e o menu lista outras opções, incluindo altura, centroX, centroY, ângulo, origemX, origemY, ID da etiqueta e pontuação. Estas opções permitem ao utilizador recuperar pontos de dados específicos do objeto detetado pelo sensor de Visão com IA, proporcionando flexibilidade para rastrear ou medir vários atributos do objeto.

O blocoObjecto permite reportar a propriedade do objecto especificado. Isto permite-lhe utilizar quaisquer dados disponíveis extraídos da captura de ecrã mais recente.

As propriedades do objeto que podem ser extraídas dos instantâneos capturados são:

  • largura
  • altura
  • centroX
  • centroY
  • ângulo
  • origemX
  • origemY
  • ID da etiqueta
  • pontuação

Leia a secção "Dados extraídos do instantâneo" deste artigo para obter mais informações sobre estas propriedades.


A etiqueta AprilTag detetada é

Um bloco hexagonal azul claro proveniente de uma interface de programação. Contém o comando para verificar se o AprilTag detectado pelo AIVision1 corresponde ao valor 1. Este bloco é utilizado num ambiente de programação baseado em blocos e foi concebido para avaliar se uma AprilTag específica está presente. O seu formato e estrutura permitem que se ajuste a outros blocos lógicos, normalmente utilizados em programação visual para robótica ou tarefas de visão por computador.

O blocoDetetado AprilTag é e só está disponível quando o Modo de deteção do AprilTagestá ativado.

Este bloco irá retornar Verdadeiro ou Falso dependendo se o objeto especificado for uma determinada AprilTag.

Três dispositivos AprilTag a serem rastreados por um sistema de visão. Cada etiqueta tem um ID e coordenadas associadas. A etiqueta da esquerda está rotulada com ID:0, com as coordenadas X:110, Y:96, W:41, H:41. A etiqueta central está identificada com o ID:3, com as coordenadas X:187, Y:180, W:57, H:57. A etiqueta da direita está identificada com o ID:9 e as coordenadas X:237, Y:89, W:38, H:38.

Quando várias AprilTags são detetadas num único snapshot, são organizadas na matriz com base no seu ID identificado, e não por tamanho.
Nesta imagem foram detetadas três AprilTags com os IDs
, 3 e 9. Serão organizados em ordem crescente do seu ID na matriz. O objeto no índice 1 corresponderia à AprilTag com ID 0, no índice 2 à AprilTag com ID 3 e no índice 3 à AprilTag com ID 9.

Para mais informações sobre o que são as AprilTags e como ativar a sua deteção com o sensor de visão com IA, leia este artigo.


A classificação por IA é

Um bloco hexagonal azul claro proveniente de um ambiente de programação baseado em blocos. O bloco contém o comando AIVision1 A classificação de IA é BlueBall? Este bloco verifica se o sensor de visão com IA (AIVision1) classificou o objeto detetado como uma BlueBall. O bloco apresenta opções suspensas, permitindo aos utilizadores selecionar diferentes objetos ou classificações de IA para fins de rastreio e tomada de decisão numa interface de programação visual.

A classificação de IAem bloco só está disponível quando o Modo de deteção de classificação de IA(Modo está ativado.

 

Este bloco irá retornar Verdadeiro ou Falso dependendo se o objeto especificado corresponde a uma determinada Classificação de IA.

As classificações de IA que podem ser detetadas pelo sensor de visão com IA variam consoante o modelo que está a utilizar. maissobre as classificações de IA disponíveis e sobre como ativar a sua deteção com o sensor de visão de IA, leia este artigo.

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

Last Updated: