Visão de IA#

Introdução#

O sensor de visão com IA do robô de programação VEX AIM deteta e rastreia 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.

O sensor de visão com IA tem uma resolução de 320×240 pixéis. A origem (0, 0) está localizada no canto superior esquerdo, posicionando o centro do sensor em (160, 120), como mostra o esquema abaixo:

Um diagrama que mostra a resolução do sensor de visão AIM AI, com a coordenada 0, 0 no canto superior esquerdo do diagrama, 320, 0 no canto superior direito e 0, 240 no canto inferior esquerdo, com 160, 120 exactamente no centro.

Segue abaixo a lista de todos os blocos:

Ações — Controlar o fluxo de visão da IA ​​e capturar dados de objetos.

  • Visualizador de IA no ecrã — Ativa ou desativa a transmissão em direto de IA no ecrã do robô.

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

Configurações — Ajuste quais os objetos detetados que serão acedidos.

Valores — Retorna a presença, classificação e propriedades do objeto.

Ações#

Visualizador de IA Vision no ecrã#

O bloco de pilha Visualizador de IA no ecrã ativa ou desativa a transmissão em direto da IA ​​no ecrã do robô. Quando ativado, o ecrã apresenta os dados dos sensores em tempo real, impedindo que outras imagens ou textos apareçam. Para apresentar outro conteúdo, utilize este bloco para ocultar a transmissão.

O bloco de pilha do painel de controlo do AI Vision permite mostrar ou ocultar o conteúdo.#
AI Vision [mostrar v] visualizador na tela

Parâmetros

Descrição

estatuto

Controla a apresentação do fluxo de dados no ecrã do robô: show exibe o fluxo de dados, enquanto hide remove o fluxo de dados do ecrã.

Exemplo

Uma pilha de blocos que começa com um bloco “quando iniciado”, seguido por um bloco de comentário que diz “Apresente o feed do sensor de visão com IA durante cinco segundos”. Um bloco “mostrar painel de visão com IA” exibe o feed e, em seguida, um bloco “esperar” pausa a execução durante cinco segundos. Após a espera, um bloco “ocultar painel de visão com IA” remove o feed da visualização.#
quando iniciar
[View the AI Vision Sensor's feed for five seconds.]
AI Vision [mostrar v] visualizador na tela
aguardar [5] segundos
AI Vision [ocultar v] visualizador na tela

obter dados do objeto#

O bloco de pilha obter dados do objeto filtra os dados do quadro do sensor de visão de IA 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 [bola esportiva v] da AI Vision

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:

  • bola desportiva
  • barril laranja
  • barril azul
  • robô AIM
  • AprilTag ID 0
  • AprilTag ID 1
  • AprilTag ID 2
  • AprilTag ID 3
  • AprilTag ID 4
  • toda a carga - Bolas desportivas e todos os barris
  • NOME - Uma cor ou código de cor, em que NOME é o nome configurado no Utilitário de Visão de IA

Exemplo

Uma pilha de blocos que começa com um bloco “quando iniciado”, seguido de um bloco de comentário que diz “Avançar se for detetada uma bola desportiva”. Um bloco “obter dados do objeto” capta uma imagem de uma bola desportiva. Um bloco “se” verifica se existe um objeto AI View. Se for verdadeiro, um bloco “avançar” move o robô para a frente 10 milímetros.#
quando iniciar
[Move forward if a sports ball is detected.]
para sempre
obter dados de [bola esportiva v] da AI Vision
se <objeto de AI Vision existe?> então
mover [frente v] por [10] [mm v] ▶

Assinaturas de cores#

Uma Assinatura de Cor é uma cor única que o Sensor de Visão com IA consegue reconhecer. Estas assinaturas permitem que o sensor detete e rastreie objetos com base na sua cor. Depois de uma Assinatura de Cor ser configurada no Utilitário de Visão com IA, o sensor pode identificar 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.

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] da AI Vision
se <objeto de AI Vision existe?> então
imprimir [Color signature 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. Uma vez configurado no utilitário de visão por computador, o sensor pode reconhecer 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.

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 BlueRed 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 [BlueRed v] da AI Vision
se <objeto de AI Vision existe?> então
imprimir [Color 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 AI Vision 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 ciclo infinito, um bloco “obter dados do objeto” 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 width of the smallest detected object.]
para sempre
obter dados de [toda a carga v] da AI Vision
limpar linha [1] na tela
definir cursor para linha [1] coluna [1] na tela
se <objeto de AI Vision existe?> então
definir item de objeto de AI Vision para (contagem de objetos de AI Vision)
imprimir (objeto de AI Vision [largura v]) na tela ▶

Valores#

possui objeto#

O bloco booleano tem objeto informa se o robô tem atualmente um objeto detetado contra o seu Kicker.

  • Verdadeiro — O robô possui o objeto.

  • Falso — O robô não possui o objeto.

<tem [bola esportiva v] ? :: custom-ai-vision>

Parâmetro

Descrição

objeto

Objecto a detectar pelo kicker do robô:

  • bola desportiva
  • qualquer barril
  • barril laranja
  • barril azul

Exemplo

Uma pilha de blocos que começa com um bloco “quando iniciado”, seguido de um bloco de comentário que diz “Apertar quando o robô tiver uma bola”. Dentro de um loop infinito, um bloco “se” verifica se o robô tem uma bola desportiva. Se for verdadeiro, um bloco de objeto de pontapé é executado com potência média.#
quando iniciar
[Kick when the robot has a sports ball.]
para sempre
se <tem [bola esportiva v] ? :: custom-ai-vision> então
chutar objeto [médio v]

O objeto IA Vision existe.#

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

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

  • Falso — Não foi detetado nenhum objeto.

O objeto AI Vision existe no bloco booleano.#
<objeto de AI Vision existe?>

Parâmetros

Descrição

Este bloco não possui parâmetros.

Exemplo

Uma pilha de blocos que começa com um bloco “quando iniciado”, seguido por um bloco de comentário que diz “Avançar se for detetada uma bola”. Um bloco “obter dados do objeto” capta uma imagem de uma bola desportiva. Um bloco “se” verifica se existe um objeto AI View. Se for verdadeiro, um bloco “avançar” move o robô para a frente 10 milímetros.#
quando iniciar
[Move forward if a sports ball is detected.]
para sempre
obter dados de [bola esportiva v] da AI Vision
se <objeto de AI Vision existe?> então
mover [frente v] por [10] [mm v] ▶

O objeto de Visão de IA é#

O bloco booleano AI Vision object is informa 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 AI Vision é [bola esportiva v]?>

Parâmetro

Descrição

objeto

Com que objeto comparar o item:

  • bola desportiva
  • barril laranja
  • barril azul
  • robô AIM

Exemplo

Uma pilha de blocos que começa com um bloco “quando iniciado”, seguido de um bloco de comentário que diz “Apresentar se for detetada uma bola desportiva”. Dentro de um ciclo infinito, um bloco “obter dados do objeto” captura uma imagem utilizando Classificações de IA. O ecrã é limpo e o cursor é posicionado na linha 1, coluna 1. Um bloco “se” verifica se existe um objeto de Visão IA e, em caso afirmativo, outro bloco “se” verifica se a classificação é uma bola desportiva. Se sim, um bloco “imprimir” apresenta “Bola detectada!” no ecrã, seguido de um bloco “esperar” que faz uma pausa de 0,5 segundos antes de repetir o processo.#
quando iniciar
[Display if a sports ball is detected.]
para sempre
obter dados de [toda a carga v] da AI Vision
limpar linha [1] na tela
definir cursor para linha [1] coluna [1] na tela
se <objeto de AI Vision existe?> então
se <objeto de AI Vision é [bola esportiva v]?> então
imprimir [Sports ball detected!] na tela ▶
aguardar [0.5] segundos

O objeto AI Vision é o ID AprilTag.#

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

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

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

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

Parâmetros

Descrição

ID da etiqueta de abril

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

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.

contagem de objetos de AI Vision

Parâmetros

Descrição

Este bloco não possui parâmetros.

Exemplo

quando iniciar
[Display the amount of sports balls and barrels.]
para sempre
limpar linha [1] na tela
definir cursor para linha [1] coluna [1] na tela
obter dados de [toda a carga v] da AI Vision
se <objeto de AI Vision existe?> então
imprimir (contagem de objetos de AI Vision) 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 AI Vision [largura v]

Todos os valores de propriedade, exceto tagID, descrevem a posição, o tamanho, a orientação ou a direção do objeto detetado no momento em que o bloco obter dados do objeto foi utilizado. Estes valores são medidos em pixéis ou graus, com base na resolução de 320 por 240 pixéis do sensor.

Um barril azul com uma faixa laranja está centrado no quadro, rodeado por uma caixa delimitadora preta. Os eixos x e y estão rotulados de 0 a 320 da esquerda para a direita na parte superior e de 0 a 240 de cima para baixo na lateral esquerda, respetivamente.

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.

Nota: Os valores dos pixéis são relativos ao sistema de coordenadas do sensor. Consulte o diagrama na Introdução para referência.

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

Um barril azul com uma faixa laranja está centrado no quadro, rodeado por uma caixa delimitadora preta. Duas linhas verticais tracejadas vermelhas estendem-se desde o topo do quadro até às margens esquerda e direita da caixa delimitadora. Uma seta preta de duas pontas entre estas linhas indica a medida da largura.

Exemplo

quando iniciar
[Move towards a blue barrel until its width is larger than 100 pixels.]
para sempre
obter dados de [barril azul v] da AI Vision
se <objeto de AI Vision existe?> então
se <(objeto de AI Vision [largura v]) [math_less_than v] [100]> então
mover [frente v]
fim
senão
parar todo o movimento

altura#

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

Nota: Os valores dos pixéis são relativos ao sistema de coordenadas do sensor. Consulte o diagrama na Introdução para referência.

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

Um barril azul com uma faixa laranja está centrado no quadro, rodeado por uma caixa delimitadora preta. Duas linhas horizontais tracejadas vermelhas estendem-se do lado esquerdo do quadro até às margens superior e inferior da caixa delimitadora. Uma seta preta de duas pontas entre estas linhas indica a medida da altura.

Exemplo

quando iniciar
[Move towards a blue barrel until its height is larger than 100 pixels.]
para sempre
obter dados de [barril azul v] da AI Vision
se <objeto de AI Vision existe?> então
se <(objeto de AI Vision [altura v]) [math_less_than v] [100]> então
mover [frente v]
fim
senão
parar todo o movimento

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.

Nota: Os valores dos pixéis são relativos ao sistema de coordenadas do sensor. Consulte o diagrama na Introdução para referência.

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

Um barril azul com uma faixa laranja está centrado no quadro, rodeado por uma caixa delimitadora preta. Uma linha vertical tracejada vermelha estende-se desde o topo do enquadramento até ao centro da caixa delimitadora, indicando a coordenada X do centro.

Exemplo

quando iniciar
[Turn slowly until a blue barrel is centered in front of the robot.]
definir velocidade de giro para [30]%
virar [direita v]
para sempre
obter dados de [barril azul v] da AI Vision
se <objeto de AI Vision existe?> então
se <[140] [math_less_than v] (objeto de AI Vision [centroX v]) [math_less_than v] [180]> então
parar todo o movimento

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.

Nota: Os valores dos pixéis são relativos ao sistema de coordenadas do sensor. Consulte o diagrama na Introdução para referência.

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

Um barril azul com uma faixa laranja está centrado no quadro, rodeado por uma caixa delimitadora preta. Uma linha tracejada vermelha horizontal estende-se do lado esquerdo do quadro até ao centro da caixa delimitadora, indicando a coordenada Y do centro.

Exemplo

quando iniciar
[Move towards a blue barrel until its center y-coordinate is more than 140 pixels.]
para sempre
obter dados de [barril azul v] da AI Vision
se <objeto de AI Vision existe?> então
se <(objeto de AI Vision [centroY v]) [math_less_than v] [140]> então
mover [frente v]
fim
senão
parar todo o movimento

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.

Nota: Os valores dos pixéis são relativos ao sistema de coordenadas do sensor. Consulte o diagrama na Introdução para referência.

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

Um barril azul com uma faixa laranja está centrado no quadro, rodeado por uma caixa delimitadora preta. Uma linha vertical tracejada vermelha estende-se desde o topo do quadro até à margem esquerda da caixa delimitadora, indicando a coordenada X da origem da caixa delimitadora.

Exemplo

quando iniciar
[Display if an orange barrel 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 [barril laranja v] da AI Vision
se <objeto de AI Vision existe?> então
se <(objeto de AI Vision [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.

Nota: Os valores dos pixéis são relativos ao sistema de coordenadas do sensor. Consulte o diagrama na Introdução para referência.

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

Um barril azul com uma faixa laranja está centrado no quadro, rodeado por uma caixa delimitadora preta. Uma linha tracejada vermelha horizontal estende-se do lado esquerdo do quadro até ao bordo superior da caixa delimitadora, indicando a coordenada Y da origem da caixa delimitadora.

Exemplo

quando iniciar
[Display if an orange barrel 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 [barril laranja v] da AI Vision
se <objeto de AI Vision existe?> então
se <(objeto de AI Vision [origemY v]) [math_less_than v] [80]> então
imprimir [Far!] na tela ▶
senão
imprimir [Close!] na tela ▶
fim
aguardar [0.5] segundos

rotação#

A propriedade rotação indica a orientação do ID ou código de cor do 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 rotação.#
objeto de AI Vision [rotação v]

Uma interface de câmara exibe um objeto empilhado verticalmente com a metade superior azul e a metade inferior vermelha, centrado no enquadramento. Uma etiqueta por baixo do objeto indica Vermelho_Azul A:270° CX:185 CY:81 W:93 H:150, indicando o nome do objeto, o ângulo de rotação, as coordenadas X e Y do centro, a largura e a altura. As linhas de grelha e os eixos numéricos marcam as dimensões da imagem, com X a variar de 0 a 320 e Y de 0 a 240.

Exemplo

quando iniciar
[Slide left or right depending on how the Color Code is rotated.]
para sempre
obter dados de [Red_Blue v] da AI Vision
se <objeto de AI Vision existe?> então
se <[50] [math_less_than v] (objeto de AI Vision [rotação v]) [math_less_than v] [100]> então
mover [direita v]
senão se <[270] [math_less_than v] (objeto de AI Vision [rotação v]) [math_less_than v] [330]> então
mover [esquerda v]
senão
parar todo o movimento
fim
senão
parar todo o movimento

rolamento#

A propriedade direção indica a distância de um objeto à esquerda ou à direita do centro do campo de visão do sensor de visão com IA, em graus. Um valor de 0 significa que o objeto está centrado, valores positivos indicam que está à direita e valores negativos indicam que está à esquerda.

Um robô VEX AIM Coding Robot num campo, com uma bola desportiva diagonalmente à frente e à esquerda. Um ângulo é desenhado entre o centro do robô e a bola desportiva, e está marcado como -30 graus. Um robô de programação VEX AIM num campo, com uma bola desportiva diagonalmente à frente e à direita. Foi desenhado um ângulo de 30 graus entre o centro do robô e a bola desportiva.
quando iniciar
[Keep the blue barrel directly in front of the robot.]
definir velocidade de giro para [40]%
para sempre
obter dados de [barril azul v] da AI Vision
se <objeto de AI Vision existe?> então
se <(objeto de AI Vision [orientação v]) [math_greater_than v] [5]> então
virar [direita v]
senão se <(objeto de AI Vision [orientação v]) [math_less_than v] [-5]> então
virar [esquerda v]
senão
parar todo o movimento

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 AI Vision [tagID v]

Exemplo

quando iniciar
[Move forward when AprilTag ID 0 is detected.]
para sempre
obter dados de [AprilTag ID 0 v] da AI Vision
se <objeto de AI Vision existe?> então
mover [frente v]
fim
parar todo o movimento