Bloklarınızla birlikte kullanılabilmeleri için AI Vision Sensörünüzle Renk İmzası ve Renk Kodu yapılandırıldığından emin olun. Bunları nasıl yapılandıracağınız hakkında daha fazla bilgi edinmek için aşağıdaki makaleleri okuyabilirsiniz:
- VEXcode EXP'de AI Vision İmzası ile Renk İmzalarını Yapılandırma
- VEXcode EXP'de AI Vision İmzasıyla Renk Kodlarını Yapılandırma
AI Vision Sensörü ayrıca AI Sınıflandırmalarını ve AprilTag'leri de tespit edebilir. Bu algılama modlarının nasıl etkinleştirileceğini öğrenmek için buraya gidin:
- VEXcode EXP'deki AI Vision Sensörü ile AI Sınıflandırmaları
- Nisan VEXcode EXP'de AI Vision Sensörü ile ilgili Etiketler
AI Vision Sensörü ile Görsel Veri Elde Edin
Her AI Vision Sensörü komutu, yapılandırılmış AI Vision Sensörünün adıyla başlayacaktır. Bu makaledeki tüm örnekler için kullanılan AI Vision Sensörünün adı ai_vision_1olacaktır.
anlık_görüntü_al
take_snapshot yöntemi, AI Vision Sensörünün o anda gördüğü şeyin resmini çeker ve daha sonra bir projede kullanılabilecek şekilde bu anlık görüntüden veri çeker. Bir anlık görüntü alındığında, AI Vision Sensörünün hangi tür nesnenin verilerini toplayacağını belirtmeniz gerekir:
-
Renk İmzası veyaRenk Kodu
- Bu Görsel İmzalar, AI Vision Sensörünün adı, çift alt çizgi ve ardından Görsel İmzanın adı ile başlar, örneğin:
ai_vision_1__Blue.
- Bu Görsel İmzalar, AI Vision Sensörünün adı, çift alt çizgi ve ardından Görsel İmzanın adı ile başlar, örneğin:
-
AI Sınıflandırmaları -
AiVision.ALL_AIOBJS -
Nisan Etiketleri-
AiVision.ALL_TAGS
Anlık görüntü almak, belirttiğiniz algılanan nesnelerin tümünü içeren bir grup oluşturacaktır. Örneğin, "Mavi" Renk İmzasıtespit etmek isterseniz ve AI Vision Sensörü 3 farklı mavi nesne tespit ederse, üçünden gelen veriler de tuple'a konur.
Bu örnekte, vision_objects değişkeni, AI Vision Sensöründen algılanan "Mor"Renk İmzalarını içeren ai_vision_1adlı bir tuple'ı depolar. Tespit edilen nesne sayısını görüntüler ve her 0,5 saniyede yeni bir anlık görüntü yakalar.
while True:
# Tüm Mor Renk İmzalarının anlık görüntüsünü al ve vision_objects'te sakla.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Purple)
# Verileri çekmeden önce anlık görüntüde bir nesnenin algılandığından emin olun.
eğer vision_objects[0].exists == True
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Nesne sayısı:", len(vision_objects))
wait(0.5, SANİYE)
Nesne Özellikleri
Anlık görüntüdeki her nesnenin, o nesne hakkında bilgi raporlamak için kullanılabilecek farklı özellikleri vardır. Mevcut mülkler şu şekildedir:
- İD
- centerX ve centerY
- originX ve originY
- Genişlik
- yükseklik
- açı
- Gol
- var
Bir nesnenin özelliğine erişmek için, tuple'ı depolayan değişken adını ve ardından nesne indeksini kullanın.
Nesne dizini, hangi nesnenin özelliğini almak istediğinizi gösterir. Anlık görüntü alındıktan sonra AI Vision Sensörü nesneleri otomatik olarak boyutlarına göre sıralar. En büyük nesneye 0 indeksi atanırken, daha küçük nesnelere daha yüksek indeks numaraları atanır.
Örneğin, vision_objects değişkeni içindeki en büyük nesnenin genişliğini çağırmak şu şekilde olacaktır: vision_objects[0].width.
İD
id özelliği yalnızca Nisan Etiketleri ve AI Sınıflandırmaları için geçerlidir.
AprilTagiçin, id özelliği algılananAprilTag(s) kimlik numarasını temsil eder.
Belirli NisanEtiketlerini tanımlamak seçici gezinmeye olanak tanır. Robotunuzu, belirli etiketlere doğru hareket ederken diğerlerini görmezden gelecek şekilde programlayabilir, bunları otomatik navigasyon için yol işaretleri olarak kullanabilirsiniz.
AI Sınıflandırmasıiçin, id özelliği, algılanan AI Sınıflandırmasının belirli türünü temsil eder.
Belirli AI Sınıflandırmalarını tanımlamakrobotun yalnızca belirli nesnelere odaklanmasını sağlar, örneğin yalnızca kırmızı bir Buckyball'a doğru gitmek ister, mavi olana değil.
Nisan Etiketleri ve AI Sınıflandırmaları hakkında daha fazla bilgi edinmek ve bunların AI Vision Utility'de nasıl tespit edileceğini öğrenmek için bu makalelere gidin.
centerX ve centerY
Bu, tespit edilen nesnenin piksel cinsinden merkez koordinatlarıdır.
CenterX ve CenterY koordinatları navigasyon ve konumlandırmada yardımcı olur. AI Vision Sensörü 320 x 240 piksel çözünürlüğe sahip.
AI Vision Sensörüne daha yakın olan bir nesnenin, daha uzakta olan bir nesneden daha düşük bir CenterY koordinatına sahip olacağını görebilirsiniz.
Bu örnekte, AI Vision Sensörünün görüş alanının merkezi (160, 120) olduğundan, robot algılanan nesnenin centerX koordinatı 150 pikselden büyük, ancak 170 pikselden küçük olana kadar sağa dönecektir.
while True:
# Tüm Mavi Renk İmzalarının anlık görüntüsünü al ve vision_objects'te sakla.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)
# Verileri çekmeden önce anlık görüntüde bir nesnenin algılandığından emin olun.
eğer vision_objects[0].exists == True
# Nesnenin AI Vision Sensörünün görüş alanının merkezinde olmadığını kontrol edin.
eğer vision_objects[0].centerX > 150 ve 170 > vision_objects[0].centerX:
# Nesne görünümün merkezine gelene kadar sağa dönmeye devam edin.
drivetrain.turn(RIGHT)
değilse:
drivetrain.stop()
wait(5, MSEC)
originX ve originY
OriginX ve OriginY, tespit edilen nesnenin sol üst köşesindeki koordinatın piksel cinsinden değeridir.
OriginX ve OriginY koordinatları navigasyon ve konumlandırmada yardımcı olur. Bu koordinatı nesnenin Genişliği ve Yüksekliği ile birleştirerek nesnenin sınırlayıcı kutusunun boyutunu belirleyebilirsiniz. Bu, hareket eden nesnelerin izlenmesine veya nesneler arasında gezinmeye yardımcı olabilir.
genişlik ve yükseklik
Bu, algılanan nesnenin piksel cinsinden genişliği veya yüksekliğidir.
Genişlik ve yükseklik ölçümleri farklı nesnelerin tanımlanmasına yardımcı olur. Örneğin, bir Buckyball'un yüksekliği bir Ring'in yüksekliğinden daha büyük olacaktır.
Genişlik ve yükseklik aynı zamanda bir nesnenin AI Vision Sensörüne olan uzaklığını da gösterir. Daha küçük ölçümler genellikle nesnenin daha uzakta olduğu anlamına gelirken, daha büyük ölçümler daha yakında olduğunu gösterir.
Bu örnekte gezinme için nesnenin genişliği kullanılmıştır. Robot, belirli bir genişliğe ulaşana kadar nesneye yaklaşacak ve ardından duracaktır.
while True:
# Tüm Mavi Renk İmzalarının anlık görüntüsünü al ve vision_objects'te sakla.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)
# Verileri çekmeden önce anlık görüntüde bir nesnenin algılandığından emin olun.
eğer vision_objects[0].exists == True
# Genişliğini ölçerek en büyük nesnenin AI Vision Sensörüne yakın olup olmadığını kontrol edin.
eğer vision_objects[0].width < 250:
# Nesneye 250 pikselden daha geniş olana kadar yaklaşın.
drivetrain.drive(İLERİ)
değilse:
drivetrain.stop()
wait(5, MSEC)
açı
açı özelliği yalnızcaRenk Kodu veiçin kullanılabilir AprilTags.
Bu, tespit edilen Renk Koduveya AprilTag farklı yönlendirilmiş olup olmadığını gösterir.
RobotunRenk Kodu veyaAprilTag göre farklı yönlendirilip yönlendirilmediğini görebilir ve ona göre navigasyon kararları verebilirsiniz.
Örneğin,Renk Kodu uygun bir açıyla algılanmazsa, temsil ettiği nesne robot tarafından düzgün bir şekilde algılanamayabilir.
Gol
puan özelliği, AI Vision Sensörü ileAI Sınıflandırması tespit edildiğinde kullanılır.
Güven puanı, AI Vision Sensörünün algılama konusunda ne kadar kesin olduğunu gösterir. Bu görüntüde, bu dört nesnenin AI Sınıflandırmalarının %99 oranında güvenilir olduğu görülüyor. Robotunuzun yalnızca yüksek güvenilirlikteki tespitlere odaklanmasını sağlamak için bu puanı kullanabilirsiniz.
var
exists özelliği, son alınan anlık görüntüde belirtilen Görsel İmza algılanıp algılanmadığını algılamak için kullanılır.
Bu, önceki anlık görüntüde herhangi bir algılanan nesnenin algılanıp algılanmadığını kontrol etmenizi sağlar. Bu özellik, bir nesne mevcut olduğunda True değerini, mevcut olmadığında ise False değerini döndürür.