VEXcode EXP 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 olun.
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.

AI Vision Utility tarafından üç AprilTag takip ediliyor. Her etiket tanımlanır, yeri belirlenir ve ana hatları çizilir, bu da sistem tarafından izlendiğini gösterir. Bu örnekteki AprilTag kimlikleri 0, 3 ve 9'dur.

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 Vision aracı tarafından dört nesne takip ediliyor: iki BuckyBall ve iki Ring. Her nesne tanımlanır, yeri belirlenir ve ana hatları çizilir; bu da sistem tarafından izlendiğini gösterir. Yardımcı program nesnenin kimliğini not eder, bu örnekte bir Kırmızı Top, bir Mavi Top, bir Yeşil Halka ve bir Kırmızı Halka vardır.

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.

AI Vision Sensörü'nün Mavi Buckyball'u takip ettiği görülüyor. Buckyball'un etrafında bir izleme dikdörtgeni var ve üstteki etikette X pozisyonunun 176, Y pozisyonunun ise 117 olduğu gösteriliyor. İzleme dikdörtgeninin merkezi vurgulanarak, konumun merkezden ölçüldüğü gösterilir.

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ü'nün iki Mavi Küpü takip ettiği görülüyor. Küplerin etrafında izleme dikdörtgenleri var ve bunlardan biri kameraya çok daha yakın. Daha yakın olanın Y pozisyonu 184, daha uzak olanın Y pozisyonu 70'tir.

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.

AI Vision Sensörü'nün Mavi Buckyball'u takip ettiği görülüyor. Buckyball'un etrafında bir izleme dikdörtgeni var ve üstteki etikette X pozisyonunun 176, Y pozisyonunun ise 117 olduğu gösteriliyor. İzleme dikdörtgeninin sol üst köşesi, başlangıç konumunun sol üst köşesinden ölçüldüğünü göstermek için vurgulanmıştı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.

AI Vision Sensörü'nün Mavi Buckyball'u takip ettiği görülüyor. Buckyball'un etrafında bir izleme dikdörtgeni bulunuyor ve üstteki etikette genişliğinin 80 piksel, yüksekliğinin ise 78 piksel olduğu gösteriliyor. Kırmızı oklar, genişliğini ve yüksekliğini göstermek için izleme dikdörtgenini vurgulamaktadır.

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.

AI Vision Sensörü'nün iki Mavi Küpü takip ettiği görülüyor. Küplerin etrafında izleme dikdörtgenleri var ve bunlardan biri kameraya çok daha yakın. Daha yakın olanın genişliği 144, yüksekliği 113, daha uzak olanın genişliği 73, yüksekliği 84'tü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 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çı

Bir açı değerinin 360 derecesini göstermek için kırmızı ve yeşil karelerin birlikte döndürülmesinin animasyonu.

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.

AI Vision Sensörü Yeşil ve Mavi Renk Kodunu takip ediyor. Videoda, Mavi Küpün üzerine istiflenmiş Yeşil Küp görülüyor. Renk Kodu'nun açı değeri vurgulanır ve 87 derece olarak okunur, bu da Renk Kodu'nun dikey yönde olduğunu gösterir.

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

AI Vision Sensörü Yeşil ve Mavi Renk Kodunu takip ediyor. Videoda Yeşil Küp'ün Mavi Küp'ün yanında durduğu görülüyor ancak sensöre göre garip bir açıda duruyorlar. Renk Kodu'nun açı değeri vurgulanmış ve 0 derece olarak okunuyor, bu da Renk Kodu'nun açısının okunamadığını gösteriyor.

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

AI Vision aracı tarafından dört nesne takip ediliyor: iki BuckyBall ve iki Ring. Her nesne tanımlanır, yeri belirlenir ve ana hatları çizilir; bu da sistem tarafından izlendiğini gösterir. Yardımcı program ayrıca her nesnenin AI Sınıflandırma puanını da listeler; bu örnekte her puan %99'dur.

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.

AI Vision Sensörü'nün iki Mavi Küpü takip ettiği görülüyor. Küplerin etrafında izleme dikdörtgenleri var ve bunlardan biri kameraya çok daha yakın.

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: