Sensor de visão de IA#

Introdução#

O sensor de visão VEX IQ AI consegue detetar e rastrear objetos, cores e IDs AprilTag. Isto permite que o robô analise o ambiente à sua volta, siga objetos e reaja com base nos dados visuais detetados.

Os exemplos de IA Vision são concebidos para utilização com um Basebot equipado com um sensor de IA VEX IQ. Nestes exemplos, o sensor é configurado com o nome AIVision1, que aparece nos blocos.

Segue abaixo a lista de todos os blocos:

Ações — Capturar os dados do sensor de visão VEX IQ AI para uma assinatura selecionada.

  • obter dados do objeto — Captura os dados para uma assinatura específica, como uma cor configurada, um objeto pré-treinado ou um ID AprilTag.

Definições — Escolha com que objeto interagir.

Valores — Aceder e utilizar os dados captados.

Ações#

obter dados do objeto#

O bloco de pilha obter dados do objeto filtra os dados do quadro do sensor de visão VEX IQ AI para uma única assinatura — uma descrição guardada de algo que o sensor pode reconhecer, como um objeto pré-treinado, um ID AprilTag ou uma cor ou código de cor configurado.

As cores e os seus códigos devem ser configurados primeiro no utilitário AI Vision antes de serem utilizados com este bloco.

O conjunto de dados armazena os objetos ordenados do maior para o mais pequeno por largura, começando no índice 0. As propriedades de cada objeto podem ser acedidas utilizando o bloco Propriedade do objeto AI Vision. Um conjunto de dados vazio é reportado se não for detetado nenhum objeto correspondente.

O bloco de pilha Obter dados do objeto.#
obter dados de [SELECT_A_SIG v] de [AIVision1 v]

Parâmetro

Descrição

assinatura

Filtra o conjunto de dados para incluir apenas os dados da assinatura fornecida. As subscrições disponíveis são:

Nota: Para que as opções de ID do AprilTag ou Classificação por IA apareçam, a deteção das mesmas deve estar ativada no Utilitário de Visão por IA.

Exemplo

quando iniciar
[Drive forward if an AprilTag ID is detected.]
para sempre
obter dados de [AprilTag IDs v] de [AIVision1 v]
se <objeto de [AIVIsion1 v] existe?> então
conduzir [frente v] por [10] [mm v] ▶

Classificações de IA#

O sensor de visão VEX IQ AI pode detetar diferentes objetos sob determinadas classificações de IA. Dependendo do modelo de classificação de IA selecionado ao configurar o sensor de visão VEX IQ AI na janela Dispositivos, serão detetados diferentes objetos. Os modelos atualmente disponíveis são:

Objetos da sala de aula

  • Bola Azul

  • Bola Verde

  • Bola Vermelha

  • Anel Azul

  • Anel Verde

  • Anel Vermelho

  • Cubo Azul

  • Cubo Verde

  • Cubo Vermelho

Competição de Robótica VEX IQ: Misture e Combine

  • Raio de luz

  • Pino vermelho

  • BluePin

  • Alfinete Laranja

Aprimore o seu nível na competição de robótica VEX IQ

  • BlueBeanBag

  • RedBeanBag

  • Puff amarelo

Assinaturas de cores#

Uma assinatura de cor é uma cor única que o sensor de visão VEX IQ AI consegue reconhecer. Estas assinaturas permitem que o sensor detete e rastreie objetos com base na sua cor. Uma vez configurada, a assinatura de cor permite que o sensor identifique objetos com essa cor específica no seu campo de visão.

As assinaturas de cor são utilizadas no bloco obter dados do objeto para processar e detetar objetos coloridos em tempo real. Podem ser configuradas até 7 assinaturas de cor de cada vez.

O utilitário de visão com IA mostra um sensor de visão ligado detetando dois objetos coloridos. O lado esquerdo exibe uma transmissão em direto da câmara com uma caixa azul à esquerda e uma caixa vermelha à direita, cada uma contornada por caixas delimitadoras brancas. Os rótulos pretos exibem os seus respetivos nomes, coordenadas e dimensões. O lado direito contém definições de assinatura de cor, com controlos deslizantes para a tonalidade e gama de saturação para as caixas vermelha e azul. Os botões para adicionar cores, congelar o vídeo, copiar e guardar a imagem estão na parte inferior, juntamente com um botão de fecho no canto inferior direito.

Exemplo

quando iniciar
[Display if any objects matching the RED_BOX signature is detected.]
para sempre
definir cursor para linha [1] coluna [1] na tela
limpar linha [1] na tela
[Change the signature to any configured Color Signature.]
obter dados de [RED_BOX v] de [AIVision1 v]
se <objeto de [AIVision1 v] existe?> então
imprimir [Color detected!] na tela ▶

Códigos de cores#

Um código de cores é um padrão estruturado composto por 2 a 4 assinaturas de cores organizadas numa ordem específica. Estes códigos permitem que o sensor de visão VEX IQ AI reconheça padrões de cor predefinidos.

Os códigos de cores são particularmente úteis para identificar objetos complexos, alinhar com elementos do jogo ou criar marcadores únicos para navegação autónoma. É possível configurar até 8 códigos de cor em simultâneo.

A interface do Utilitário de Visão de IA mostra um sensor de visão ligado que deteta dois objetos adjacentes, uma caixa azul à esquerda e uma caixa vermelha à direita, agrupados numa única caixa delimitadora branca rotulada como AzulVermelho. A informação de deteção inclui o ângulo (A:11°), as coordenadas (X:143, Y:103), a largura (L:233) e a altura (A:108). No painel direito, são listadas três assinaturas de cor: Caixa_Vermelha, Caixa_Azul e AzulVermelho, com gamas de tonalidade e saturação ajustáveis. A assinatura AzulVermelho combina as assinaturas Caixa_Azul e Caixa_Vermelha. Abaixo da imagem de vídeo, encontram-se os botões Congelar Vídeo, Copiar Imagem, Guardar Imagem e Fechar.

Exemplo

quando iniciar
[Display if any objects matching the RED_BLUE code is detected.]
para sempre
definir cursor para linha [1] coluna [1] na tela
limpar linha [1] na tela
[Change the signature to any configured Color Code.]
obter dados de [RED_BLUE v] de [AIVision1 v]
se <objeto de [AIVIsion1 v] existe?> então
imprimir [Code detected!] na tela ▶

Configurações#

definir item de objeto de visão de IA#

O bloco de pilha set AI Vision object item define qual o item do conjunto de dados que deve ser utilizado.

O bloco de pilha de itens de objeto Set AI Vision.#
definir item de objeto de [AIVision1 v] para (1)

Parâmetros

Descrição

artigo

O número do item no conjunto de dados a utilizar.

Exemplo

Uma pilha de blocos que começa com um bloco “quando iniciado”, seguido por um bloco de comentário que diz “Exibir o maior ID AprilTag detectado”. Dentro de um loop infinito, um bloco “capturar instantâneo do AI Vision” captura uma imagem dos IDs AprilTag. Um bloco “se” verifica se existe um objeto AI Vision. Se for verdadeiro, um bloco “definir item do objeto do AI Vision” atribui a contagem de objetos a uma variável e um bloco “imprimir” apresenta o ID da etiqueta do objeto detetado no ecrã.#
quando iniciar
[Display the largest detected AprilTag ID.]
para sempre
obter dados de [AprilTag IDs v] de [AIVision1 v]
limpar linha [1] na tela
definir cursor para linha [1] coluna [1] na tela
se <objeto de [AIVision1 v] existe?> então
definir item de objeto de [AIVision1 v] para (contagem de objetos de [AIVision1 v])
imprimir (objeto de [AIVision1 v] [tagID v]) na tela ▶

Valores#

O objeto IA Vision existe.#

O bloco booleano Objeto de Visão de IA existe informa se foi detetado algum objeto no conjunto de dados.

  • Verdadeiro — O conjunto de dados inclui um objeto detetado.

  • Falso — O conjunto de dados não inclui nenhum objeto detetado.

O objeto AI Vision existe no bloco booleano.#
<objeto de [AIVision1 v] existe?>

Parâmetros

Descrição

Este bloco não possui parâmetros.

Exemplo

quando iniciar
[Drive forward if an object is detected.]
para sempre
obter dados de [Classificações de IA v] de [AIVision1 v]
se <objeto de [AIVision1 v] existe?> então
conduzir [frente v] por [10] [mm v] ▶

contagem de objetos da Visão com IA#

O bloco de relatório Contagem de objetos de visão com IA reporta o número de objetos detetados no conjunto de dados como um número inteiro.

O bloco de pilha de itens de objeto Set AI Vision.#
(contagem de objetos de [AIVision1 v])

Parâmetros

Descrição

Este bloco não possui parâmetros.

Exemplo

quando iniciar
[Display the total amount of cubes, rings, and balls.]
para sempre
limpar linha [1] na tela
definir cursor para linha [1] coluna [1] na tela
obter dados de [Classificações de IA v] de [AIVision1 v]
se <objeto de [AIVision1 v] existe?> então
imprimir (contagem de objetos de [AIVision1 v]) na tela ▶
fim
aguardar [0.5] segundos

propriedade de objeto de Visão de IA#

Existem nove propriedades que são incluídas em cada objeto (apresentado abaixo) armazenado após a utilização do bloco obter dados do objeto.

O bloco de relatório de propriedades de objetos do AI Vision.#
(objeto de [AIVision1 v] [largura v])

Todos os valores de propriedade, exceto tagID, descrevem a posição e o tamanho do objeto detetado no campo de visão do sensor VEX IQ AI Vision no momento em que o bloco obter dados do objeto foi utilizado. Estes valores são medidos em pixéis, com base na resolução de 320 por 240 pixéis do sensor.

Parâmetro

Descrição

propriedade

Qual a propriedade do objeto detetado a utilizar:

largura#

A propriedade largura indica a largura do objeto detetado em pixéis, como por exemplo um número inteiro de 1 a 320.

O bloco de pilha de propriedades do objeto AI Vision com o seu parâmetro definido como largura.#
(objeto de [AIVision1 v] [largura v])

Exemplo

quando iniciar
[Drive towards an object until its width is larger than 100 pixels.]
para sempre
obter dados de [Classificações de IA v] de [AIVision1 v]
se <objeto de [AIVision1 v] existe?> então
se <(objeto de [AIVision1 v] [largura v]) [math_less_than v] [100]> então
conduzir [frente v]
fim
senão
parar de conduzir

altura#

A propriedade altura indica a altura do objeto detetado em pixéis, como por exemplo um número inteiro de 1 a 240.

O bloco de pilha de propriedades do objeto AI Vision com o seu parâmetro definido como altura.#
(objeto de [AIVision1 v] [altura v])

Exemplo

quando iniciar
[Drive towards an object until its height is larger than 100 pixels.]
para sempre
obter dados de [Classificações de IA v] de [AIVision1 v]
se <objeto de [AIVision1 v] existe?> então
se <(objeto de [AIVision1 v] [altura v]) [math_less_than v] [100]> então
conduzir [frente v]
fim
senão
parar de conduzir

centroX#

A propriedade centerX indica a coordenada x do centro do objeto detetado em pixéis, como um número inteiro de 0 a 320.

O bloco de pilha de propriedades do objeto AI Vision com o seu parâmetro definido como centerX.#
(objeto de [AIVision1 v] [centroX v])

Exemplo

quando iniciar
[Turn slowly until an object is centered in front of the robot.]
definir velocidade de giro para [30] [% v]
virar [direita v]
para sempre
obter dados de [Classificações de IA v] de [AIVision1 v]
se <objeto de [AIVision1 v] existe?> então
se <[140] [math_less_than v] (objeto de [AIVision1 v] [centroX v]) [math_less_than v] [180]> então
parar de conduzir

centroY#

A propriedade centerY reporta a coordenada y do centro do objeto detetado em pixéis, como um número inteiro de 0 a 240.

O bloco de pilha de propriedades do objeto AI Vision com o seu parâmetro definido como centerY.#
(objeto de [AIVision1 v] [centroY v])

Exemplo

quando iniciar
[Drive towards an object until its center y-coordinate is more than 140 pixels.]
para sempre
obter dados de [Classificações de IA v] de [AIVision1 v]
se <objeto de [AIVision1 v] existe?> então
se <(objeto de [AIVision1 v] [centroY v]) [math_less_than v] [140]> então
conduzir [frente v]
fim
senão
parar de conduzir

ângulo#

A propriedade ângulo indica a orientação do código de cor ou do ID AprilTag detetado como um número inteiro em graus, de 0 a 359.

O bloco de pilha de propriedades do objeto AI Vision com o seu parâmetro definido como ângulo.#
(objeto de [AIVision1 v] [ângulo v])

Exemplo

quando iniciar
[Slide left or right depending on how the Color Code is rotated.]
para sempre
obter dados de [RED_BLUE v] de [AIVision1 v]
se <objeto de [AIVision1 v] existe?> então
se <[50] [math_less_than v] (objeto de [AIVision1 v] [ângulo v]) [math_less_than v] [100]> então
conduzir [direita v]
senão se <[270] [math_less_than v] (objeto de [AIVision1 v] [ângulo v]) [math_less_than v] [330]> então
conduzir [esquerda v]
senão
parar de conduzir
fim
senão
parar de conduzir

origemX#

A propriedade originX reporta a coordenada x do canto superior esquerdo da caixa delimitadora do objeto detetado, em pixéis, como um número inteiro de 0 a 320.

O bloco de pilha de propriedades do objeto AI Vision com o seu parâmetro definido como originX.#
(objeto de [AIVision1 v] [origemX v])

Exemplo

quando iniciar
[Display if an object is to the left or the right.]
para sempre
limpar linha [1] na tela
definir cursor para linha [1] coluna [1] na tela
obter dados de [Classificações de IA v] de [AIVision1 v]
se <objeto de [AIVision1 v] existe?> então
se <(objeto de [AIVision1 v] [origemX v]) [math_less_than v] [160]> então
imprimir [To the left!] na tela ▶
senão
imprimir [To the right!] na tela ▶
fim
aguardar [0.5] segundos

origemY#

A propriedade originY reporta a coordenada y do canto superior esquerdo da caixa delimitadora do objeto detetado, em pixéis, como um número inteiro de 0 a 240.

O bloco de pilha de propriedades do objeto AI Vision com o seu parâmetro definido como originY.#
(objeto de [AIVision1 v] [origemY v])

Exemplo

quando iniciar
[Display if an object is close or far from the robot.]
para sempre
limpar linha [1] na tela
definir cursor para linha [1] coluna [1] na tela
obter dados de [Classificações de IA v] de [AIVision1 v]
se <objeto de [AIVision1 v] existe?> então
se <(objeto de [AIVision1 v] [origemY v]) [math_less_than v] [80]> então
imprimir [Far!] na tela ▶
senão
imprimir [Close!] na tela ▶
fim
aguardar [0.5] segundos

ID da etiqueta#

A propriedade tagID reporta o número de identificação do AprilTag ID detetado como um número inteiro.

O bloco de pilha de propriedades do objeto AI Vision com o seu parâmetro definido como tagID.#
(objeto de [AIVision1 v] [tagID v])

Exemplo

quando iniciar
[Drive forward when AprilTag ID 0 is detected.]
para sempre
obter dados de [AprilTag IDs v] de [AIVision1 v]
se <objeto de [AIVision1 v] existe?> então
se <(objeto de [AIVision1 v] [tagID v]) [math_equal v] [0]> então
conduzir [frente v]
senão
parar de conduzir
fim
aguardar [0.5] segundos

O que é um objeto IA Vision?#

O bloco Objeto de Visão de IA é? devolve um valor booleano indicando se um objeto detetado corresponde a uma classificação específica.

  • Verdadeiro — O item no conjunto de dados é o objeto específico.

  • Falso — O item no conjunto de dados não é o objeto específico.

A Classificação por IA (Inteligência Artificial) é um bloco booleano de objetos.#
<objeto de [AIVision1 v] é [BlueBall v]?>

Parâmetro

Descrição

objeto

Qual Classificação de IA comparar o item.

Exemplo

quando iniciar
[Display if a Blue Cube is detected.]
para sempre
obter dados de [Classificações de IA v] de [AIVision1 v]
limpar linha [1] na tela
definir cursor para linha [1] coluna [1] na tela
se <objeto de [AIVision1 v] existe?> então
se <objeto de [AIVision1 v] é [BlueCube v]?> então
imprimir [Cube detected!] na tela ▶
aguardar [0.5] segundos

O objeto de visão com IA é o AprilTag?#

O bloco Objeto de Visão de IA é AprilTag? devolve um valor booleano indicando se o objeto detetado é um AprilTag que corresponde a um ID específico.

  • Verdadeiro — O objeto detetado é um AprilTag com o ID fornecido.

  • Falso — O objeto detetado não é um AprilTag com o ID fornecido.

O objeto AI Vision é o bloco booleano AprilTag.#
<objeto de [AIVision1 v] é AprilTag [0]?>

Parâmetro

Descrição

ID da etiqueta de abril

O número de identificação a comparar com o AprilTag detectado.

Exemplo

quando iniciar
[Report if AprilTag 3 is detected.]
para sempre
limpar tela
definir cursor para linha [1] coluna [1] na tela
obter dados de [AprilTag IDs v] de [AIVision1 v]
se <objeto de [AIVision1 v] existe?> então
se <objeto de [AIVision1 v] é AprilTag [3]?> então
imprimir [That is 3!] na tela ▶
senão
imprimir [That isn't 3!] na tela ▶
fim
fim
aguardar [0.1] segundos

O objeto AI Vision é o ID AprilTag?#

O bloco Objeto de Visão de IA é o ID do AprilTag? devolve um valor booleano indicando se um ID do AprilTag detetado corresponde a um ID específico.

  • Verdadeiro — O ID do AprilTag é o número.

  • Falso — O ID AprilTag não é o número.

A IA Vision detetou que o ID AprilTag é um bloco booleano.#
<[AIVision1 v] object is AprilTag ID [1] ?>

Parâmetros

Descrição

Número de identificação AprilTag

O número a comparar com o número de identificação AprilTag detectado.

Exemplo:

quando iniciar
[Report if AprilTag ID 3 is detected.]
para sempre
limpar tela
definir cursor para linha [1] coluna [1] na tela
obter dados de [AprilTag IDs v] de [AIVision1 v]
se <objeto de [AIVision1 v] existe?> então
se <[AIVision1 v] object is AprilTag ID [3] ?> então
imprimir [That is 3!] na tela ▶
senão
imprimir [That isn't 3!] na tela ▶
fim
fim
aguardar [0.1] segundos