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:
- Configurar assinaturas de cor com a assinatura de visão de IA no VEXcode EXP
- Configurar códigos de cores com a assinatura de visão de IA no VEXcode EXP
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:
- Classificações de IA com o sensor de visão de IA no VEXcode EXP
- AprilTags com o sensor de visão de IA no VEXcode EXP
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.
- 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:
-
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 .
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.
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.
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.
É 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.
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.
As medidas de largura e altura ajudam a identificar diferentes objetos. Por exemplo, uma buckyball terá uma altura superior a um anel.
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
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.
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.
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.
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ã.
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);
}