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

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

Bloco VEXcode EXP Take Snapshot que diz "Tire um snapshot AIVision1 do COL1". Existem dois menus suspensos: um para selecionar o sensor de visão com IA e o segundo para selecionar o código de cores.

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

Bloco VEXcode EXP Take Snapshot que diz "Tire uma captura de ecrã AIVision2 de Blue".

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

Diagrama da resolução do sensor de visão com IA. O canto superior esquerdo está marcado com 0, 0, o canto superior direito está marcado com 320, 0 e o canto inferior esquerdo está marcado com 0, 240. O centro do ecrã está etiquetado como 160, 120.

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

O sensor de visão com IA é mostrado a seguir uma buckyball azul. A Buckyball tem um retângulo de rastreio à sua volta, e a etiqueta acima mostra que tem 80 pixels de largura e 78 pixels de altura. As setas vermelhas destacam o retângulo de rastreio para demonstrar a sua largura e altura.

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

O sensor de visão com IA é mostrado a rastrear dois cubos azuis. Os cubos têm retângulos de rastreio à sua volta, e um deles está muito mais próximo da câmara. A mais próxima tem 144 de largura e 113 de altura, enquanto a mais afastada tem 73 de largura e 84 de altura.

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.

Projeto VEXcode Blocks em que o robô se aproximará do objeto até que a largura atinja um tamanho específico antes de parar. O projeto começa com um bloco "Quando iniciado" e um loop "Para sempre". O resto do projeto está dentro do ciclo Forever. Primeiro, faça uma captura instantânea do objeto AIVision1 (Azul). De seguida, o resto do projeto fica dentro de um bloco `if` que verifica se o objeto AIVision1 existe. Dentro deste bloco If, existe um bloco If Else que lê: se a largura do objeto AIVision1 for inferior a 250, então avance; caso contrário, pare de conduzir.

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.

O sensor de visão com IA é mostrado a seguir uma buckyball azul. A buckyball tem um retângulo de rastreio à sua volta, e a etiqueta acima mostra que tem uma posição X de 176 e uma posição Y de 117. O centro do retângulo de rastreio está destacado para demonstrar que a posição é medida a partir do centro.

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.

O sensor de visão com IA é mostrado a rastrear dois cubos azuis. Os cubos têm retângulos de rastreio à sua volta, e um deles está muito mais próximo da câmara. O mais próximo tem uma posição Y de 184, e o mais afastado tem uma posição Y de 70.

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

Projeto em VEXcode Blocks em que o robô se irá virar em direção a um objeto detetado até que este esteja no centro do campo de visão do sensor de visão com IA. O projeto começa com um bloco "Quando iniciado" e um loop "Para sempre". O resto do projeto está dentro do ciclo Forever. Primeiro, faça uma captura instantânea do objeto AIVision1 (Azul). De seguida, o resto do projeto fica dentro de um bloco `if` que verifica se o objeto AIVision1 existe. Dentro deste bloco If, existe um bloco If Else que diz: se AIVision1 object centerX for maior que 150 e AIVision1 object centerX for menor que 170, então vire à direita; caso contrário, pare de conduzir.

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

Animação de um quadrado vermelho e um quadrado verde a serem rodados em conjunto para demonstrar os 360 graus de um â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.

O sensor de visão com IA é mostrado a rastrear um código de cores, primeiro verde e depois azul. A transmissão de vídeo mostra um cubo verde empilhado sobre um cubo azul. O valor do ângulo do Código de Cores está destacado e indica 87 graus, o que significa que o Código de Cores está orientado na vertical.

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.

O sensor de visão com IA é mostrado a rastrear um código de cores, primeiro verde e depois azul. A transmissão de vídeo mostra um Cubo Verde ao lado de um Cubo Azul, mas estão num ângulo estranho em relação ao sensor. O valor do ângulo do código de cores está destacado e apresenta 0 graus, o que indica que o ângulo do código de cores não pode ser lido.

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.

O sensor de visão com IA é mostrado a seguir uma buckyball azul. A buckyball tem um retângulo de rastreio à sua volta, e a etiqueta acima mostra que tem uma posição X de 176 e uma posição Y de 117. O canto superior esquerdo do retângulo de rastreio está destacado para demonstrar que a posição de origem é medida a partir desse canto superior esquerdo.

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.

Projeto VEXcode Blocks no qual o robô desenhará um objeto detetado no seu ecrã como um retângulo. O projeto começa com um bloco "Quando iniciado" e um loop "Para sempre". O resto do projeto está dentro do loop Forever. Primeiro, faça uma captura instantânea do objeto AIVision1 (Azul). De seguida, o resto do projeto fica dentro de um bloco `if` que verifica se o objeto AIVision1 existe. Dentro deste bloco If, existe um bloco Draw rectangle que lê: draw rectangle AIVision1 object originX, AIVision1 object originY, AIVision1 object width, AIVision1 object height on 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 AprilTags estão a ser rastreadas pelo utilitário de visão com IA. Cada etiqueta é identificada, localizada e delimitada, indicando o seu rastreamento pelo sistema. Os IDs AprilTag neste exemplo são 0, 3 e 9.

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.

Quatro objetos estão a ser rastreados pelo utilitário de Visão por IA: duas BuckyBalls e dois Anéis. Cada objeto é identificado, localizado e delimitado, indicando o seu rastreio pelo sistema. A ferramenta também lista a pontuação de classificação de IA de cada objeto; neste exemplo, cada pontuação é de 99%.

O índice de confiança indica o grau de certeza do sensor de visão por computador sobre a 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.

Bloco de item de objeto VEXcode EXP que lê "Definir item de objeto AIVision1 como 1". Existe um menu suspenso para selecionar o sensor de visão com IA e um campo de texto para introduzir o índice do objeto.

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.

O sensor de visão com IA é mostrado a rastrear dois cubos azuis. Os cubos têm retângulos de rastreio à sua volta, e um deles está muito mais próximo da câmara. A mais próxima tem uma largura de 136, e a mais afastada tem uma largura de 78.

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

O sensor de visão com IA é mostrado a rastrear dois cubos azuis. Os cubos têm retângulos de rastreio à sua volta, e um deles está muito mais próximo da câmara. O cubo mais próximo está identificado com o número 1 e o cubo mais afastado com o número 2.

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.

O bloco VEXcode EXP Object que lê o objeto AIVision1 existe? Existe um menu suspenso para selecionar o sensor de visão com IA.

Este bloco irá devolver um valorVerdadeiro
, 1 (Verdadeiro),
Falso) ou (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.

Projeto VEXcode Blocks no qual o robô se dirigirá para um objeto azul detetado. O projeto começa com um bloco "Quando iniciado" e um loop "Para sempre". O resto do projeto está dentro do ciclo Forever. Primeiro, tire uma captura de ecrã do objeto Blue com o AIVision2 e, em seguida, utilize um bloco If Else que verifica se o objeto AIVision2 existe e, em caso afirmativo, se o veículo avançar, pára.

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

Bloco de contagem de objetos VEXcode EXP que lê a contagem de objetos AIVision1. Existe um menu suspenso para selecionar o sensor de visão com IA.

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. 

O sensor de visão com IA é mostrado a rastrear dois cubos azuis. Os cubos têm retângulos de rastreio à sua volta, e um deles está muito mais próximo da câmara.

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

Projeto VEXcode Blocks no qual o robô irá imprimir o número de objetos azuis detetados na Consola de Impressão. O projeto começa com um bloco "Quando iniciado" e um loop "Para sempre". O resto do projeto está dentro do ciclo Forever. Primeiro, faça uma captura instantânea do gráfico "Azul" com o AIVision2, limpe todas as linhas na Consola e, em seguida, posicione o cursor na linha seguinte da Consola. De seguida, existe um bloco If que lê se o objeto AIVision2 existe; em caso afirmativo, imprime a contagem de objetos AIVision2 na consola e posiciona o cursor na linha seguinte. Fora do bloco If, existe um bloco Wait configurado para aguardar 2 segundos.A saída da Consola de Impressão do projeto anterior do VEXcode Blocks com a mensagem impressa "2".

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

Bloco de objeto VEXcode EXP AI Vision que lê a largura do objeto AIVision1. Existe um menu suspenso para selecionar o sensor de visão de IA e um menu suspenso aberto para selecionar o atributo do objeto a detetar. A lista de opções inclui largura, altura, centroX, centroY, ângulo, origemX, origemY, ID da etiqueta e pontuação.

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 é

VEXcode EXP Detectado AprilTag é um bloco que lê AIVision1 detectado AprilTag é 1? Existe um menu suspenso para selecionar o sensor de visão com IA.

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 AprilTags estão a ser rastreadas pelo utilitário de visão com IA. Cada etiqueta é identificada, localizada e delimitada, indicando o seu rastreamento pelo sistema. Os IDs AprilTag neste exemplo são 0, 3 e 9.

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 é

O bloco VEXcode EXP AI Classification lê AIVision1. A classificação da IA é BlueBall? Existe um menu suspenso para selecionar o sensor de visão de IA e outro menu suspenso para selecionar o objeto de classificação de IA pretendido.

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: