VEXcode V5 Python'da AI Vision Sensörü ile Kodlama

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:

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:

Bu bireysel komutlar ve bunların VEXcode'da nasıl kullanılacağı hakkında daha fazla bilgi edinmek için API sitesine gidin.


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.
  • 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.

Her biri beyaz metinle gösterilen, 0, 9 ve 3 kimlik numaralarıyla etiketlenmiş üç kare tanımlama işareti. ID 0 solda, ID 9 sağda ve ID 3 alt ortada yer alıyor. Her işaretleyicinin kare içerisinde kendine özgü siyah-beyaz bir deseni vardır.

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.

Resimde iki top ve iki halka tanımlanmış olup, bunların konumları, büyüklükleri ve puanları etiketlerle belirtilmiştir. Kırmızı top solda, mavi top sağda, yeşil halka sol altta, kırmızı halka ise sağ altta yer alıyor. Her nesne beyaz bir kutu ile çerçevelenmiş ve X, Y koordinatları, genişlik, yükseklik ve %99'luk puan gibi detaylar beyaz metinle gösteriliyor.

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.

Bilgisayarlı görüntüleme sistemi tarafından takip edilen mavi bir Buckyball. Nesne beyaz bir kare ile çevrelenmiştir ve bu çerçevenin içinde merkezde beyaz bir haçı çevreleyen daha küçük bir kırmızı kare bulunmaktadır. Görüntünün sol üst köşesindeki etiket, nesnenin mavi renkte olduğunu, koordinatlarının X:176, Y:117 ve boyutlarının G:80, Y:78 olduğunu gösteriyor.

CenterX ve CenterY koordinatları navigasyon ve konumlandırmada yardımcı olur. AI Vision Sensörü 320 x 240 piksel çözünürlüğe sahip.

Görüntü sistemiyle takip edilen iki mavi küp nesne. Üstteki nesnenin koordinatları X:215, Y:70, boyutları ise G:73, Y:84 olup, beyaz bir dış çizgi ve ortasında beyaz bir çarpı işareti bulunmaktadır. Alttaki nesnenin koordinatları X:188, Y:184 ve boyutları G:144, Y:113 olarak etiketlenmiş olup, beyaz renkte ve ortasında beyaz bir çarpı işareti bulunmaktadır.

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.

Görüntü sistemiyle takip edilen mavi bir Buckyball. Nesnenin etrafı beyaz bir çerçeve ile çevrilidir ve çerçevenin içinde beyaz bir çarpı işareti yer alır. Sol üstteki etiket, nesnenin rengini mavi olarak belirtirken, koordinatları X:176, Y:117 ve boyutları G:80, Y:78'dir. Nesnenin sol üst köşesi küçük kırmızı bir kare ile vurgulanır.

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.

Resimde, üzerinde beyaz kare bir çerçeve bulunan mavi bir Buckyball görülüyor. Sol üst köşede, koordinatları X:176, Y:117 ve boyutları G:80, Y:78 olan mavi bir nesne olduğunu belirten bir etiket bulunmaktadır. Kırmızı oklar nesnenin genişliğini ve yüksekliğini vurgular.

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.

Görsel tanıma sistemi tarafından takip edilen iki mavi kübik nesne. Üst küpün üzerinde X:215, Y:70 konumunu ve G:73, Y:84 boyutlarını gösteren bir etiket bulunan beyaz bir dış hat bulunmaktadır. Alt küpün de benzer beyaz bir dış çizgisi var ve etiketinde X:188, Y:184 ve G:144, Y:113 boyutları yer alıyor. Her küpün ortasında, izleme için odak noktasını gösteren beyaz bir haç bulunuyor. Etiketler her nesnenin ölçümlerini ve izleme verilerini vurgular.

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çı

Kırmızı ve yeşil blokları gösteren dönen bir gif. Bloklar kırmızıdan yeşile doğru tam yatay olarak konumlandırıldığında 0 derece olarak gösterilir. Kırmızı blok yeşil bloğun üzerinde dikey olarak duruyorsa 90 derecedir. Bloklar yatay olarak yeşilden kırmızıya doğru ise 180 derecedir. Yeşil blok kırmızı bloğun üzerinde dikey olarak duruyorsa 20 derecedir.

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.

Üstte biri yeşil, altta biri mavi olmak üzere iki küpten oluşan bir yığın, bir görüş sistemi tarafından takip ediliyor. Her iki küpün etrafı beyaz bir çerçeveyle çevrilidir ve yeşil küpün ortasında beyaz bir haç bulunur. Görüntünün alt kısmındaki etikette Green_Blue A:87° ifadesi yer alıyor ve tespit edilen renkleri ve açı ölçümünü gösteriyor. Bunun altında, karedeki yığılmış küplerin konumunu ve boyutunu temsil eden X:117, Y:186 koordinatları ve G:137, Y:172 boyutları listelenmiştir.

RobotunRenk Kodu veyaAprilTag göre farklı yönlendirilip yönlendirilmediğini görebilir ve ona göre navigasyon kararları verebilirsiniz.

Yan yana yerleştirilmiş, biri yeşil, biri mavi iki küp ve bir görüntü sistemiyle takip ediliyor. Her iki küpün etrafı beyaz bir çerçeve ile çevrilidir ve ortasında beyaz bir haç bulunur. Sol üstteki etiket, algılanan renklere ve bir açı ölçümüne atıfta bulunarak Green_Blue A:0°'yi gösterir. Bunun altında X:150, Y:102 koordinatları, G:179, Y:109 boyutları ile küplerin çerçeve içindeki konumlarını ve boyutlarını göstermektedir.

Ö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.

Resimde, bir görüntüleme sistemi tarafından takip edilen dört nesne görülüyor: iki top ve iki halka. Kırmızı topun koordinatları X:122, Y:84, G:67, Y:66 olup skoru %99'dur. Mavi topun X:228, Y:86, G:70, Y:68 değerleri bulunmakta olup skoru %99'dur. Yeşil halkanın koordinatları X:109, Y:186, W:98, H:92 olup puanı %99'dur. Kırmızı halka X:259, Y:187, G:89, Y:91 olarak etiketlenmiş olup, puanı %99'dur. Her nesne beyaz renkle çevrelenmiştir ve bu, izleme doğruluğunu gösterir.

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.

 

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

Last Updated: