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 ö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.
- 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 -
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.
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 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.
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 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çı
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.
nesneSayısı
objectCount yöntemi, son anlık görüntüde algılanan nesnelerin miktarını döndürür.
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);
}