VEXcode V5 C++'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 örneklerde, kullanılan AI Vision Sensörünün adı AIVisionolacaktır.

anlık görüntü al

takeSnapshot 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: AIVision1__Blue.
  • AI Sınıflandırmaları - aivision::ALL_AIOBJS
  • NisanEtiketler- aivision::ALL_TAGS

Anlık görüntü almak, belirttiğiniz algılanan nesnelerin tümünü içeren bir dizi 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 diziye konur.

Bu örnekte, AIVision1adlı AI Vision Sensöründen "Mavi" Renk İmzasıanlık görüntüsü alınmıştır. Dizi içerisinde tespit edilen nesne sayısını görüntüler ve her 0,5 saniyede bir yeni bir anlık görüntü yakalar.

while (true) {
// Tüm Mavi Renk nesnelerinin anlık görüntüsünü al.
AIVision.takeSnapshot(AIVision1__Blue);

// Verileri çekmeden önce anlık görüntüde bir nesnenin algılandığından emin olmak için kontrol edin.
eğer (AIVision.nesneSayısı > 0) {

Brain.Ekran.ekranıtemizle();
Brain.Ekran.imleciayarla(1, 1);
Brain.Ekran.yazdır(AIVision1.nesneSayısı);
}
bekle(5, milisaniye);
}

nesneler

Anlık görüntüdeki her nesnenin, o nesne hakkında bilgi raporlamak için kullanılabilecek farklı özellikleri vardır. Nesneler metodu bu özelliklere erişmenizi sağlar.

Mevcut mülkler şu şekildedir:

  • İD
  • centerX ve centerY
  • originX ve originY
  • Genişlik
  • yükseklik
  • açı
  • var
  • Gol

Bir nesnenin özelliğine erişmek için önce AI Vision Sensörünün adını, ardından nesnenin yöntemini ve son olarak da nesnenin dizinini 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, en büyük nesnenin genişliğini çağırmak AIVision1.objects[0].widtholacaktır.

İ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 nesnelerinin anlık görüntüsünü al.
  AIVision.takeSnapshot(AIVision__Blue);

  // Verileri çekmeden önce anlık görüntüde bir nesnenin algılandığından emin olmak için kontrol edin.
  eğer (AIVision.objectCount > 0) {

    eğer (AIVision.objects[0].centerX > 150.0 && 170.0 > AIVision.objects[0].centerX) {
      Aktarma organları.dön(sağa);
    } değilse {
      Aktarma organları.dur();
    }
  }
  bekle(5, ms);
}

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 nesnelerin anlık görüntüsünü al.
  AIVision.takeSnapshot(AIVision1__Blue);

  // Verileri çekmeden önce anlık görüntüde bir nesnenin algılandığından emin olmak için kontrol edin.
  eğer (AIVision.objectCount > 0) {

    eğer (AIVision.objects[0].width < 250.0) {
      Aktarma organları.sür(ileri);
    } değilse {
      Aktarma organları.dur();
    }
  }
  bekle(5, ms);
}

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, koordinatlar X:117, Y:186 şeklinde dizilmiş olup, boyutları G:137, Y:172 olup, karedeki yığılmış küplerin konumunu ve boyutunu temsil etmektedir.

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ı ve W:179, H:109 boyutları yer alıyor ve bu da küplerin çerçeve içindeki konumunu ve boyutunu temsil ediyor.

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


nesneSayısı

objectCount yöntemi, son anlık görüntüde algılanan nesnelerin miktarını döndürür.

Sol tarafta X ve Y koordinatları ve boyutlarıyla işaretlenmiş iki mavi küpün algılandığı AI Vision Utility arayüzü. Sistem bağlı ve AprilTags açık, AI Sınıflandırması kapalı. Sağ tarafta ise sırasıyla 22 ve 0,34 olarak ayarlanmış, ayarlanabilir ton ve doygunluk aralıklarına sahip Mavi renk ayarları gösteriliyor. Renk ekleme veya ayarlama ve videoyu dondurma seçeneği mevcuttur. Yazılım güncel olup 1.0.0.b16 sürümünde çalışıyor ve alt tarafta bir kapatma düğmesi mevcut.

Bu örnekteRenk İmzası "Mavi" olan iki nesne algılandı. takeSnapshot metodu kullanıldığında her ikisi de diziye konulacaktır.

Bu kod parçacığı, algılanan nesnelerin sayısıyla EXP Beynini sürekli olarak günceller. Verilen örneğe göre, iki nesnenin algılandığını belirten 2 değerini tekrar tekrar gönderecektir.

while (true) {
// Tüm Mavi nesnelerin anlık görüntüsünü al.
AIVision.takeSnapshot(AIVision__Blue);

Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// Verileri çekmeden önce anlık görüntüde bir nesnenin algılandığından emin olmak için kontrol edin.
eğer (AIVision.nesneSayısı > 0) {
Brain.Screen.print(AIVision1.nesneSayısı);
}
bekle(5, ms);
}

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

Last Updated: