Programação com o sensor de visão de IA no VEXcode EXP C++

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 comandos individuais e como utilizá-los no VEXcode, aceda ao site da API.


Obtenha dados visuais com o sensor de visão de IA.

Cada comando do sensor de visão com IA começará com o nome do sensor de visão com IA configurado. Para todos os exemplos deste artigo, o nome do sensor de visão de IA utilizado será AIVision.

tirar uma foto

O método takeSnapshot tira uma fotografia do que o sensor de visão com 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 corcódigo de cor ou, código de cor
    • Estas assinaturas visuais começam com o nome do sensor de visão de IA, dois sublinhados e, em seguida, o nome da assinatura visual, por exemplo: AIVision1__Blue.
  • Classificações de IA - aivision::ALL_AIOBJS
  • AbrilTags- aivision::TODAS_AS_TAGS

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

Neste exemplo, é tirada uma captura instantânea da assinatura de cor "Azul" do sensor de visão de IA denominado AIVision1. Apresenta o número de objetos detetados na matriz e captura uma nova imagem a cada 0,5 segundos.

while (true) {
// Obtém um instantâneo de todos os objetos de cor azul.
AIVision.takeSnapshot(AIVision1__Blue);

// Verifica se um objeto foi detetado no instantâneo antes de recolher os dados.
if (AIVision.objectCount > 0) {

Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
Brain.Screen.print(AIVision1.objectCount);
}
wait(5, mseg);
}

objetos

Cada objeto num instantâneo tem propriedades diferentes que podem ser utilizadas para gerar informações sobre esse objeto. O método `objects` permite aceder a estas propriedades.

As propriedades disponíveis são as seguintes:

  • eu ia
  • centroX e centroY
  • origemX e origemY
  • largura
  • altura
  • ângulo
  • existe
  • pontuação

Para aceder à propriedade de um objeto, utilize o nome do Sensor de Visão de IA, seguido do método do objeto e, em seguida, o índice do objeto.

O índice do objeto indica qual a propriedade específica do objeto que pretende recuperar. Após a captura de uma imagem, o sensor de visão com IA classifica automaticamente os objetos por tamanho. O objeto de maior tamanho recebe o índice 0, enquanto os objetos mais pequenos recebem índices mais elevados.

Por exemplo, chamar a largura do maior objeto seria AIVision1.objects[0].width.

eu ia

A propriedade id está apenas disponível para as Classificações de IA e de .

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.

Para um AprilTagAprilTag 1), a propriedade id representa o número de ID do(AprilTag(s) detectado(s).

Identificar etiquetas específicas abril 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.

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. O utilitário regista o ID do objeto; neste exemplo, existe uma bola vermelha, uma bola azul, um anel verde e um anel vermelho.

ParaClassificações de IA, a propriedade id representa o tipo específico de Classificação de IA detectada.

Identificar classificações específicas de IA permite que o robô se concentre apenas em objetos específicos, como, por exemplo, navegar apenas em direção a uma Buckyball vermelha, e não a uma azul.

a estes artigos para obter mais informações sobre das Tags de Abril e como ativar a sua deteção no Utilitário de Visão de IA.

centroX e centroY

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.

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.

while (true) {
  // Obtém um instantâneo de todos os objetos de cor azul.
  AIVision.takeSnapshot(AIVision__Blue);

  // Verifica se um objeto foi detetado no instantâneo antes de recolher os dados.
  if (AIVision.objectCount > 0) {

    if (AIVision.objects[0].centerX > 150.0 && 170.0 > AIVision.objects[0].centerX) {
      Drivetrain.turn(right);
    } else {
      Drivetrain. stop();
    }
  }
  wait(5, mseg);
}

origemX e origemY

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.

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.

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.

while (true) {
  // Obtém um instantâneo de todos os objetos azuis.
  AIVision.takeSnapshot(AIVision1__Blue);

  // Verifica se um objeto foi detetado no instantâneo antes de recolher os dados.
  if (AIVision. objectCount > 0) {

    if (AIVision. objects[0]. width < 250.0) {
      Drivetrain. drive(forward);
    } else {
      Drivetrain. stop();
    }
  }
  wait(5, mseg);
}

ângulo

Animação de um quadrado vermelho e um quadrado verde a serem rodados em conjunto para demonstrar os 360 graus de um ângulo.

A propriedade
ângulo está apenas disponível para os códigos de cor eAprilTags
Isto representa se o código de cor ou detectado está orientado 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 poderá não ser captado adequadamente pelo robô.

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.

existe

A propriedade existe é utilizada para detetar se uma assinatura visual especificada foi detetada no último instantâneo tirado.

Isto permite verificar se algum objeto detetado também foi detetado na captura de ecrã anterior. Esta propriedade irá retornar True quando o objeto existir e False quando o objeto não existir.


contagem de objetos

O método objectCount devolve a quantidade de objetos detetados na última captura de ecrã.

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.

Neste exemplo, foram detetados dois objetos com a assinatura de cor"". Ambos serão inseridos na matriz quando o método takeSnapshot for utilizado.

Este trecho de código atualiza continuamente o EXP Brain com o número de objetos detetados. Com base no exemplo fornecido, o sistema enviará repetidamente o valor 2, indicando que foram detetados dois objetos.

while (true) {
// Obtém um instantâneo de todos os objetos azuis.
AIVision.takeSnapshot(AIVision__Blue);

Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// Verifica se foi detetado um objeto no instantâneo antes de recolher os dados.
if (AIVision. objectCount > 0) {
Brain. Screen. print(AIVision1. objectCount);
}
espera(5, mseg);
}

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

Last Updated: