Visão#

Introdução#

O drone VEX AIR possui dois sensores de visão que detetam e rastreiam os IDs AprilTag. Isto permite que o drone analise o ambiente à sua volta, siga objetos e reaja com base nos dados visuais detetados.

Segue-se a lista de todos os blocos disponíveis:

Ações — Controlar a transmissão de vídeo e a captura de dados de objetos.

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

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

Ações#

obter dados do objeto#

O bloco de pilha obter dados do objeto filtra os dados do quadro do sensor de visão. Os sensores de visão podem detetar IDs do AprilTag.

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 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 [todos os AprilTags v] da câmera Vision [frente v]

Parâmetro

Descrição

assinatura

Filtra o conjunto de dados para incluir apenas os dados da assinatura especificada. A subscrição disponível é todas as AprilTags.

câmera

O sensor de visão recolhe dados, seja para a frente ou para baixo.

Exemplo

quando iniciar
[Climb upward when an AprilTag ID is detected.]
decolar para [300] [mm v] ▶
para sempre
obter dados de [todos os AprilTags v] da câmera Vision [frente v]
se <objeto Vision existe?> então
subir/descer [subir v] por [200] [mm v] ▶

Configurações#

definir item de objeto de visão#

O bloco de pilha set 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 Vision para [1]

Parâmetros

Descrição

artigo

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

Exemplo

quando iniciar
[Display the smallest-appearing AprilTag ID.]
para sempre
obter dados de [todos os AprilTags v] da câmera Vision [frente v]
limpar console
se <objeto Vision existe?> então
definir item de objeto Vision para (contagem de objetos Vision)
imprimir (Vision objeto [id v]) no console ▶

Valores#

O objeto de visão existe.#

O bloco booleano Objeto de visão existe informa se o sensor de visão especificado deteta algum objeto no momento.

  • Verdadeiro — O sensor de visão especificado detetou um objeto.

  • Falso — O sensor de visão especificado não detetou qualquer objeto.

O bloco de pilha do painel de controlo do AI Vision permite mostrar ou ocultar o conteúdo.#
<objeto Vision existe?>

Parâmetro

Descrição

Este bloco não possui parâmetros.

Exemplo

quando iniciar
[Climb upward when an AprilTag ID is detected.]
decolar para [300] [mm v] ▶
para sempre
obter dados de [todos os AprilTags v] da câmera Vision [frente v]
se <objeto Vision existe?> então
subir/descer [subir v] por [200] [mm v] ▶

O objeto de visão é o ID AprilTag#

O bloco booleano Object Vision é ID AprilTag informa se o ID AprilTag é um número de identificação 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.#
<Vision 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, que varia de 0 a 37.

Exemplo

quando iniciar
[Display when the target AprilTag ID is detected.]
para sempre
obter dados de [todos os AprilTags v] da câmera Vision [frente v]
limpar console
se <objeto Vision existe?> então
se <Vision object is AprilTag ID [21]> então
imprimir [Target found!] no console ▶
fim

contagem de objetos visuais#

O bloco de relatório Contagem de objetos de visão reporta a quantidade 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 Vision)

Parâmetros

Descrição

Este bloco não possui parâmetros.

Exemplo

quando iniciar
[Display how many AprilTag IDs are detected.]
para sempre
obter dados de [todos os AprilTags v] da câmera Vision [frente v]
limpar console
imprimir (contagem de objetos Vision) no console ▶
aguardar [0.2] segundos

Propriedade do objeto de visão#

Existem várias propriedades incluídas em cada objeto (apresentadas abaixo) armazenadas após a utilização do bloco obter dados do objeto.

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

Todos os valores das propriedades, exceto id, 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. Cada sensor de visão tem uma resolução diferente:

  • Vista frontal: 640 x 480 pixéis

  • Vista de baixo: 640 x 400 pixéis

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

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

Exemplo

quando iniciar
[Show if the AprilTag ID appears large or small.]
para sempre
obter dados de [todos os AprilTags v] da câmera Vision [frente v]
limpar console
se <objeto Vision existe?> então
se <(Vision objeto [largura v]) [math_greater_than v] [100]> então
imprimir [Large] no console ▶
senão
imprimir [Small] no console ▶
fim
fim
aguardar [0.2] segundos

altura#

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

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

Exemplo

quando iniciar
[Show if the AprilTag ID appears large or small.]
para sempre
obter dados de [todos os AprilTags v] da câmera Vision [frente v]
limpar console
se <objeto Vision existe?> então
se <(Vision objeto [altura v]) [math_greater_than v] [100]> então
imprimir [Large] no console ▶
senão
imprimir [Small] no console ▶
fim
fim
aguardar [0.2] segundos

centroX#

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

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

Exemplo

quando iniciar
[Show if an AprilTag ID is to the left or the right of the camera.]
para sempre
obter dados de [todos os AprilTags v] da câmera Vision [frente v]
limpar console
se <objeto Vision existe?> então
se <(Vision objeto [centroX v]) [math_less_than v] [320]> então
imprimir [To the left] no console ▶
senão
imprimir [To the right] no console ▶
fim
fim
aguardar [0.2] segundos

centroY#

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

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

Exemplo

quando iniciar
[Take off and attempt to align the drone with an AprilTag ID on the wall.]
[Adjust the takeoff height to observe different results.]
decolar para [800] [mm v] ▶
obter dados de [todos os AprilTags v] da câmera Vision [frente v]
se <objeto Vision existe?> então
se <(Vision objeto [centroY v]) [math_less_than v] [240]> então
imprimir [Below the target!] no console ▶
senão
imprimir [Above the target!] no console ▶
fim
senão
imprimir [No target found!] no console ▶

rolamento#

A propriedade rumo indica o ângulo que representa a posição de um objeto em relação ao drone. O comportamento depende do sensor de visão utilizado.

Um valor de 0° indica que o centro do objeto e o sensor estão alinhados. Valores positivos significam que o objeto está à direita, enquanto valores negativos significam que o objeto está à esquerda.

Sensor

Devoluções

Para baixo

O ângulo de rotação da parte frontal do drone para se alinhar com o centro do objeto varia entre -180º a 180º.

Encaminhar

O deslocamento do objeto para a esquerda ou para a direita do centro do sensor de visão varia entre -180º a 180º.

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

Exemplos

quando iniciar
[Align the front of the drone to an AprilTag ID.]
definir velocidade de giro para (15)%
decolar para [500] [mm v] ▶
para sempre
obter dados de [todos os AprilTags v] da câmera Vision [para baixo v]
se <objeto Vision existe?> então
se <[-20] [math_less_than v] (Vision objeto [orientação v]) [math_less_than v] [20]> então
[Hover once sensor is centered on the AprilTag ID.]
pairar
reproduzir som [sucesso v] ▶
senão se <(Vision objeto [orientação v]) [math_less_than v] [-21]> então
virar [esquerda v]
senão
virar [direita v]

rotação#

A propriedade rotação indica a orientação do ID AprilTag detetado como um número inteiro em graus, de 1 a 359.

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

Exemplo

quando iniciar
[Turn left or right based on the rotation of an AprilTag ID.]
decolar para [1000] [mm v] ▶
para sempre
obter dados de [todos os AprilTags v] da câmera Vision [frente v]
se <objeto Vision existe?> então
se <[240] [math_less_than v] (Vision objeto [rotação v]) [math_less_than v] [300]> então
virar [esquerda v] por [90] graus ▶
senão se <[60] [math_less_than v] (Vision objeto [rotação v]) [math_less_than v] [120]> então
virar [direita v] por [90] graus ▶
senão
pairar

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 1 a 640.

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

Exemplo

quando iniciar
[Draw lines to the AprilTag ID origin from all corners.]
para sempre
limpar tela
get [all AprilTags v] data from vision [forward v] camera
se <objeto Vision existe?> então
desenhar linha [0] [0] (Vision objeto [origemX v]) (Vision objeto [origemY v]) na tela
desenhar linha [0] [480] (Vision objeto [origemX v]) (Vision objeto [origemY v]) na tela
desenhar linha [640] [0] (Vision objeto [origemX v]) (Vision objeto [origemY v]) na tela
desenhar linha [640] [480] (Vision objeto [origemX v]) (Vision objeto [origemY v]) na tela
fim
aguardar [0.2] 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 1 a 480.

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

Exemplo

quando iniciar
[Draw lines to the AprilTag ID origin from all corners.]
para sempre
limpar tela
get [all AprilTags v] data from vision [forward v] camera
se <objeto Vision existe?> então
desenhar linha [0] [0] (Vision objeto [origemX v]) (Vision objeto [origemY v]) na tela
desenhar linha [0] [480] (Vision objeto [origemX v]) (Vision objeto [origemY v]) na tela
desenhar linha [640] [0] (Vision objeto [origemX v]) (Vision objeto [origemY v]) na tela
desenhar linha [640] [480] (Vision objeto [origemX v]) (Vision objeto [origemY v]) na tela
fim
aguardar [0.2] segundos

eu ia#

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

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

Exemplo

quando iniciar
[Display the detected AprilTag ID.]
para sempre
obter dados de [todos os AprilTags v] da câmera Vision [frente v]
limpar console
se <objeto Vision existe?> então
imprimir (Vision objeto [id v]) no console ▶
fim
aguardar [0.2] segundos