Certifique-se de ter Assinaturas de Cor e Códigos de Cor configurados com seu Sensor de Visão de IA para que eles possam ser usados com seus blocos. Para saber mais sobre como configurá-los, você pode ler os artigos abaixo:
- Configurando assinaturas de cores com a assinatura AI Vision no VEXcode V5
- Configurando códigos de cores com a assinatura AI Vision no VEXcode V5
O sensor de visão de IA também pode detectar classificações de IA e AprilTags. Para aprender como habilitar esses modos de detecção, acesse aqui:
Obtenha dados visuais com o AI Vision Sensor
Cada comando do AI Vision Sensor começará com o nome do AI Vision Sensor configurado. Para todos os exemplos neste artigo, o nome do sensor AI Vision usado será AIVision
.
tirar um instantâneo
O método takeSnapshot
tira uma foto do que o AI Vision Sensor está vendo no momento e extrai dados desse instantâneo que podem ser usados em um projeto. Quando um instantâneo é tirado, você precisa especificar de que tipo de objeto o AI Vision Sensor deve coletar dados:
- Uma assinatura de cor ouCódigo de cor
- Estas assinaturas visuais começam com o nome do AI Vision Sensor, sublinhado duplo e, em seguida, o nome da assinatura visual, por exemplo:
AIVision1__Blue
.
- Estas assinaturas visuais começam com o nome do AI Vision Sensor, sublinhado duplo e, em seguida, o nome da assinatura visual, por exemplo:
-
Classificações de IA -
aivision::ALL_AIOBJS
-
abrilTags-
aivision::ALL_TAGS
Tirar um instantâneo criará uma matriz de todos os objetos detectados que você especificou. Por exemplo, se você quisesse detectar uma Assinatura de Cor "Azul" e o Sensor de Visão de IA detectasse 3 objetos azuis diferentes, os dados de todos os três seriam colocados na matriz.
Neste exemplo, é tirado um instantâneo da Assinatura de Cor "Azul" do Sensor de Visão de IA chamado AIVision1
. Ele exibe o número de objetos detectados na matriz e captura um novo instantâneo a cada 0,5 segundos.
while (true) {
// Obtenha um instantâneo de todos os objetos de cor azul.
AIVision.takeSnapshot(AIVision1__Blue);
// Verifique se um objeto foi detectado no instantâneo antes de extrair dados.
if (AIVision.objectCount > 0) {
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
Brain.Screen.print(AIVision1.objectCount);
}
wait(5, msec);
}
objetos
Cada objeto de um instantâneo tem propriedades diferentes que podem ser usadas para relatar informações sobre esse objeto. O método objects permite que você acesse essas propriedades.
As propriedades disponíveis são as seguintes:
- eu ia
- centroX e centroY
- origemX e origemY
- largura
- altura
- ângulo
- existe
- pontuação
Para acessar a propriedade de um objeto, use o nome do AI Vision Sensor, seguido pelo método do objeto e, em seguida, o índice do objeto.
O índice do objeto indica qual propriedade específica do objeto você deseja recuperar. Depois de tirar uma foto, o sensor de visão de IA classifica automaticamente os objetos por tamanho. O maior objeto recebe o índice 0, enquanto objetos menores recebem números de índice mais altos.
Por exemplo, chamar a largura do objeto maior seria AIVision1.objects[0].width
.
eu ia
A propriedade id
está disponível apenas para AprilTags e Classificações AI.
Para uma AprilTag, a propriedade id
representa o número de ID da(s) AprilTag(s)detectada( ).
A identificação de AprilTags específicas permite a navegação seletiva. Você pode programar seu robô para se mover em direção a certas tags enquanto ignora outras, usando-as efetivamente como sinalizadores para navegação automatizada.
ParaClassificações de IA, a propriedade id
representa o tipo específico de Classificação de IA detectada.
Identificar Classificações de IAespecíficas permite que o robô se concentre apenas em objetos específicos, como querer navegar apenas em direção a uma Buckyball vermelha, não a uma azul.
Aceda a estes artigos para obter mais informações sobre AprilTags e AI Classifications e como ativar a sua deteção no AI Vision Utility.
centroX
e centroY
Estas são as coordenadas centrais do objeto detectado em pixels.
As coordenadas CenterX e CenterY ajudam na navegação e no posicionamento. O sensor de visão AI tem uma resolução de 320 x 240 pixels.
Você pode ver que um objeto mais próximo do sensor de visão de IA terá uma coordenada CenterY menor do que um objeto mais distante.
Neste exemplo, como o centro da visão do sensor de visão de IA é (160, 120), o robô virará para a direita até que a coordenada centroX de um objeto detectado seja maior que 150 pixels, mas menor que 170 pixels.
while (true) {
// Obtenha um instantâneo de todos os objetos de cor azul.
AIVision.takeSnapshot(AIVision__Blue);
// Verifique se um objeto foi detectado no instantâneo antes de extrair dados.
se (AIVision.objectCount > 0) {
se (AIVision.objects[0].centerX > 150,0 && 170,0 > AIVision.objects[0].centerX) {
Transmissão.virar(direita);
} senão {
Transmissão.parar();
}
}
esperar(5, ms);
}
origemX
e origemY
OriginX e OriginY são as coordenadas no canto superior esquerdo do objeto detectado em pixels.
As coordenadas OriginX e OriginY ajudam na navegação e no posicionamento. Ao combinar essa coordenada com a Largura e a Altura do objeto, você pode determinar o tamanho da caixa delimitadora do objeto. Isso pode ajudar a rastrear objetos em movimento ou a navegar entre objetos.
largura
e altura
Esta é a largura ou altura do objeto detectado em pixels.
As medidas de largura e altura ajudam a identificar diferentes objetos. Por exemplo, um Buckyball terá uma altura maior que um Ring.
Largura e altura também indicam a distância de um objeto do sensor de visão de IA. Medidas menores geralmente significam que o objeto está mais distante, enquanto medidas maiores sugerem que ele está mais próximo.
Neste exemplo, a largura do objeto é usada para navegação. O robô se aproximará do objeto até que a largura atinja um tamanho específico antes de parar.
while (true) {
// Obtenha um instantâneo de todos os objetos Blue.
AIVision.takeSnapshot(AIVision1__Blue);
// Verifique se um objeto foi detetado no instantâneo antes de extrair dados.
if (AIVision. objectCount > 0) {
if (AIVision. objects[0]. largura < 250,0) {
Drivetrain. drive(forward);
} else {
Drivetrain. stop();
}
}
wait(5, ms);
}
ângulo
A propriedade ângulo está disponível somente para os códigos de cores eAprilTags.
Isso representa se o código de cor detectadoou AprilTag está orientado de forma diferente.
Você pode ver se o robô está orientado de forma diferente em relação ao Código de Cor ouAprilTag e tomar decisões de navegação de acordo com isso.
Por exemplo, se um código de cor não for detectado em um ângulo adequado, o objeto que ele representa pode não ser captado corretamente pelo robô.
pontuação
A propriedade pontuação
é usada ao detectarClassificações de IA com o Sensor de Visão de IA.
A pontuação de confiança indica o grau de certeza do sensor de visão de IA sobre sua detecção. Nesta imagem, há 99% de confiança na identificação das classificações de IA desses quatro objetos. Você pode usar essa pontuação para garantir que seu robô se concentre apenas em detecções altamente confiáveis.
existe
A propriedade existe
é usada para detectar foi detectada no último instantâneo tirado.
Isso permite que você verifique se algum objeto detectado foi detectado no instantâneo anterior. Esta propriedade retornará True quando um objeto existir e False quando o objeto não existir.
Contagem de objetos
O método objectCount retorna a quantidade de objetos detectados no último instantâneo.
Neste exemplo, dois objetos foram detectados com a Assinatura de Cor "Azul". Ambos serão colocados no array quando o método takeSnapshot for usado.
Este trecho de código atualiza continuamente o EXP Brain com o número de objetos detectados. Com base no exemplo fornecido, ele enviará repetidamente o valor 2, indicando que dois objetos foram detectados.
while (true) {
// Obtém um instantâneo de todos os objetos Blue.
AIVision.takeSnapshot(AIVision__Blue);
Cérebro.Ecrã.clearScreen();
Brain.Screen.setCursor(1, 1);
// Verifique se foi detetado um objeto no instantâneo antes de extrair dados.
if (AIVision. objectCount > 0) {
Brain. Screen. print(AIVision1. objectCount);
}
espera(5, ms);
}