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á ai_vision_1.
tirar_foto
O método `take_snapshot` 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:
ai_vision_1__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:
-
Avaliações de IA -
AiVision.ALL_AIOBJS -
AbrilTags-
AiVision.TODAS_AS_TAGS
Ao tirar uma fotografia, será criada uma tupla contendo todos os objetos detetados que especificou. Por exemplo, se pretendesse 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 tupla.
Neste exemplo, a variável vision_objects armazena uma tupla contendo as assinaturas de cor "Roxo"detectadas do sensor de visão de IA denominado ai_vision_1. Apresenta o número de objetos detetados e captura uma nova imagem a cada 0,5 segundos.
while True:
# Obtenha um instantâneo de todas as assinaturas de cor roxa e armazene-o em vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Purple)
# Verifica se um objeto foi detetado no instantâneo antes de recolher os dados.
if vision_objects[0].exists == True
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Contagem de objectos:", len(vision_objects))
wait(0.5, SECONDS)
Propriedades do objeto
Cada objeto num instantâneo tem propriedades diferentes que podem ser utilizadas para gerar informações sobre esse objeto. As propriedades disponíveis são as seguintes:
- eu ia
- centroX e centroY
- origemX e origemY
- largura
- altura
- ângulo
- pontuação
- existe
Para aceder a uma propriedade de um objeto, utilize o nome da variável que armazena a tupla, seguido do í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, a chamada da largura do maior objeto dentro da variável vision_objects seria: vision_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:
# Obtenha um instantâneo de todas as assinaturas de cor azul e armazene-o em vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)
# Verifica se um objeto foi detetado no instantâneo antes de recolher os dados.
if vision_objects[0].exists == True
# Verifica se o objeto não está no centro do campo de visão do sensor de visão de IA.
if vision_objects[0].centerX > 150 and 170 > vision_objects[0].centerX:
# Continue a rodar para a direita até que o objeto esteja no centro da visão.
drivetrain.turn(DIREITA)
senão:
drivetrain.stop()
aguarde(5, MSEC)
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:
# Obtenha um instantâneo de todas as assinaturas de cor azul e armazene-o em vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)
# Verifica se um objeto foi detetado no instantâneo antes de recolher os dados.
if vision_objects[0].exists == True
# Verifica se o maior objeto está próximo do sensor de visão de IA medindo a sua largura.
if vision_objects[0].width < 250:
# Aproxima-te do objeto até que este tenha mais de 250 pixéis de largura.
drivetrain.drive(FORWARD)
else:
drivetrain.stop()
wait(5, MSEC)
â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 pode não ser apanhado corretamente 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 em relação à 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.