Yapay Zeka Görüntü Sensörü#
giriiş#
IQ AI Görsel Sensörü, nesneleri, renkleri ve AprilTag kimliklerini algılayıp takip edebiliyor. Bu sayede robot, çevresini analiz edebiliyor, nesneleri takip edebiliyor ve algılanan görsel verilere göre tepki verebiliyor.
Aşağıdaki örneklerde, yapılandırılmış IQ AI Vision Sensor’a ai_vision_1adı verilecek ve RED_BOXgibi yapılandırılmış Renk İmza nesneleri, bu API dokümantasyonunda AiVision sınıf yöntemlerine atıfta bulunurken sonraki tüm örneklerde kullanılacaktır.
Aşağıda tüm yöntemlerin listesi bulunmaktadır:
Veri Alıcılar — IQ AI Görüntü Sensöründen veri alın.
take_snapshot— Belirli bir imza için verileri yakalar.installed— IQ AI Vision Sensor’ün IQ (2. nesil) Beynine bağlı olup olmadığı.
Özellikler — take_snapshot’den döndürülen nesne verileri.
.exists— Nesnenin mevcut tespitte var olup olmadığı..width— Tespit edilen nesnenin genişliği..height— Tespit edilen nesnenin yüksekliği..centerX— Nesnenin merkezinin X konumu..centerY— Nesnenin merkezinin Y konumu..angle— Renk Kodunun veya AprilTag Kimliğinin Yönü..originX— Nesnenin sol üst köşesinin X konumu..originY— Nesnenin sol üst köşesinin Y konumu..id— Nesnenin sınıflandırma veya etiket kimliği..score— Yapay Zeka Sınıflandırmaları için Güven Puanı.
Yapıcılar — Sensörleri manuel olarak başlatın ve yapılandırın.
Getters#
take_snapshot#
take_snapshot , IQ AI Vision Sensor’ın çerçevesindeki verileri tek bir imzaya filtreler — sensörün tanıyabileceği bir şeyin kaydedilmiş açıklaması, örneğin önceden eğitilmiş bir nesne, bir AprilTag Kimliği veya yapılandırılmış bir Renk İmzası veya Renk Kodu — ve bir tuple döndürür.
Renk İmzaları ve Renk Kodları bu yöntemle kullanılabilmeleri için önce Vision Utility’de yapılandırılmalıdır.
Bu demet, 0 indeksinden başlayarak genişliğe göre en büyükten en küçüğe doğru sıralanmış nesneleri saklar. Her nesnenin özelliklerine indeksi kullanılarak erişilebilir. Eşleşen nesne bulunmazsa boş bir demet döndürülür.
Usage:
ai_vision_1.take_snapshot(SIGNATURE)
Parametreler |
Tanım |
|---|---|
|
Veri kümesini yalnızca verilen imzaya ait verileri içerecek şekilde filtreler. Mevcut imzalar şunlardır:
|
|
İsteğe bağlı. Döndürülebilecek maksimum nesne sayısını 1 ile 24 arasında ayarlar (varsayılan: 8). |
# Move forward if an object is detected
while True:
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
drivetrain.drive_for(FORWARD, 50, MM)
wait(50, MSEC)
Note: The returned tuple can be sorted by any property, not just width, using Python’s sorted function. For example, sorting by AprilTag ID:
# Print each detected AprilTag ID in ascending order by ID
while True:
apriltags = sorted(ai_vision_1.take_snapshot(AiVision.ALL_TAGS), key=id)
for tag in apriltags:
print(tag.id)
wait(1, SECONDS)
Ya da bunun yerine yüksekliğe göre sıralama:
# Print each detected AprilTag ID in ascending order by height
while True:
apriltags_by_height = sorted(ai_vision_1.take_snapshot(AiVision.ALL_TAGS), key=lambda tag: tag.height)
for tag in apriltags_by_height:
print(tag.height)
wait(1, SECONDS)
Yapay Zeka Sınıflandırmaları#
IQ Yapay Zeka Görüntü Sensörü, belirli Yapay Zeka Sınıflandırmaları altında farklı nesneleri algılayabilir. Cihazlar penceresinde Yapay Zeka Görüntü Sensörünü yapılandırırken seçilen Yapay Zeka Sınıflandırma modeline bağlı olarak farklı nesneler algılanacaktır. Şu anda mevcut modeller şunlardır:
Sınıf Malzemeleri
Kimlik Numarası |
Yapay Zeka Sınıflandırması |
|---|---|
0 |
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
VEX IQ Robotik Yarışması Karışık ve Eşleştirme
Kimlik Numarası |
Yapay Zeka Sınıflandırması |
|---|---|
0 |
|
1 |
|
2 |
|
3 |
|
VEX IQ Robotik Yarışması Seviye Atlıyor
Kimlik Numarası |
Yapay Zeka Sınıflandırması |
|---|---|
0 |
|
1 |
|
2 |
|
Renk İmzaları#
Renk İmzası, IQ AI Vision Sensörünün tanıyabileceği benzersiz bir renktir. Bu imzalar, IQ AI Vision Sensörünün nesneleri renklerine göre algılamasına ve izlemesine olanak tanır. Bir Renk İmzası yapılandırıldıktan sonra, sensör görüş alanındaki o belirli renkteki nesneleri tanımlayabilir. Renk imzaları, renkli nesneleri gerçek zamanlı olarak işlemek ve algılamak için take_snapshot ile birlikte kullanılır.
Bir projede yapılandırılmış bir Renk İmzası kullanabilmek için, imzanın adı sensörün adından, iki alt çizgiden ve ardından Renk İmzasının adından oluşmalıdır. Örneğin: ai_vision_1__RED_BOX.
# Display if any objects match the RED_BOX signature
while True:
brain.screen.set_cursor(1, 1)
brain.screen.clear_row(1)
# Change to any configured Color Signature
red_box = ai_vision_1.take_snapshot(ai_vision_1__RED_BOX)
if red_box[0].exists:
brain.screen.print("Color detected!")
wait(100, MSEC)
Renk Kodları#
Renk kodu, belirli bir düzende düzenlenmiş renk imzalarından oluşan yapılandırılmış bir desendir. Bu kodlar, IQ AI Görsel Sensörünün önceden tanımlanmış renk desenlerini tanımasını sağlar. Renk kodları, karmaşık nesneleri tanımlamak veya otonom navigasyon için benzersiz işaretler oluşturmak için kullanışlıdır.
Bir projede yapılandırılmış bir Renk Kodunu kullanabilmek için, kodun adı sensörün adından, iki alt çizgiden ve ardından Renk Kodunun adından oluşmalıdır. Örneğin: ai_vision_1__BOX_CODE.
# Display if any objects match the BOX_CODE code
while True:
brain.screen.set_cursor(1, 1)
brain.screen.clear_row(1)
# Change to any configured Color Code
box_code = ai_vision_1.take_snapshot(ai_vision_1__BOX_CODE)
if box_code[0].exists:
brain.screen.print("Code detected!")
wait(100, MSEC)
installed#
installed IQ AI Vision Sensor’ün şu anda IQ (2. nesil) Beynine bağlı olup olmadığını gösteren bir Boolean değeri döndürür.
True— IQ Yapay Zeka Görüntü Sensörü, IQ (2. nesil) Beynine bağlıdır.False— IQ Yapay Zeka Görüntü Sensörü, IQ (2. nesil) Beynine bağlı değil.
Usage:
ai_vision_1.installed()
Parametreler |
Tanım |
|---|---|
Bu yöntemin parametresi yoktur. |
# Display a message if the AI Vision Sensor is connected
if ai_vision_1.installed():
brain.screen.print("Installed!")
Özellikler#
take_snapshot kullanıldıktan sonra tuple içinde saklanan her nesneye dahil edilen on özellik vardır.
.id ve .score dışındaki tüm özellik değerleri, take_snapshot kullanıldığı anda IQ AI Vision Sensor’ın görüş alanındaki algılanan nesnenin konumunu ve boyutunu tanımlar. Bu değerler, sensörün 320 x 240 piksel çözünürlüğüne bağlı olarak piksel cinsinden ölçülür.
.exists#
.exists ifadesi, indeksin demette olup olmadığını gösteren bir Boolean değer döndürür.
True— Dizin mevcut.False— Dizin mevcut değil.
# Check if at least two objects are detected
while True:
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
if objects[1].exists:
brain.screen.print("At least 2")
else:
brain.screen.print("Less than 2")
wait(50, MSEC)
.width#
.width algılanan nesnenin piksel cinsinden genişliğini döndürür; bu, 1 ile 320 arasında bir tam sayıdır.
# Approach an object until it's at least 100 pixels wide
while True:
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
if objects[0].width < 100:
drivetrain.drive(FORWARD)
else:
drivetrain.stop()
wait(50, MSEC)
.height#
.height fonksiyonu, tespit edilen nesnenin piksel cinsinden yüksekliğini döndürür; bu değer 1 ile 240 arasında bir tamsayıdır.
# Approach an object until it's at least 90 pixels tall
while True:
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
if objects[0].height < 90:
drivetrain.drive(FORWARD)
else:
drivetrain.stop()
wait(50, MSEC)
.centerX#
.centerX tespit edilen nesnenin merkezinin x koordinatını piksel cinsinden döndürür; bu, 0 ile 320 arasında bir tam sayıdır.
# Turn until an object is directly in front of the sensor
drivetrain.set_turn_velocity(10, PERCENT)
drivetrain.turn(RIGHT)
while True:
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
if 140 < objects[0].centerX < 180:
drivetrain.stop()
wait(10,MSEC)
.centerY#
.centerY fonksiyonu, tespit edilen nesnenin merkezinin y koordinatını piksel cinsinden döndürür; bu değer 0 ile 240 arasında bir tamsayıdır.
# Approach an object until the object's center is
# high enough in the field of view
while True:
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
if objects[0].centerY < 150:
drivetrain.drive(FORWARD)
else:
drivetrain.stop()
wait(50, MSEC)
.angle#
.angle algılanan Renk Kodunun veya AprilTag Kimliğinin yönünü derece cinsinden döndürür; bu değer 0 ile 359 arasında bir tamsayıdır.
# Turn left or right depending on how a
# configured Color Code is rotated
while True:
box_code = ai_vision_1.take_snapshot(ai_vision_1__BOX_CODE)
if box_code[0].exists:
if 50 < box_code[0].angle < 100:
drivetrain.turn(RIGHT)
elif 270 < box_code[0].angle < 330:
drivetrain.turn(LEFT)
else:
drivetrain.stop()
else:
drivetrain.stop()
wait(50, MSEC)
.originX#
.originX tespit edilen nesnenin sınırlayıcı kutusunun sol üst köşesinin x koordinatını piksel cinsinden döndürür; bu, 0 ile 320 arasında bir tam sayıdır.
# Display if an object is to the left or the right
while True:
brain.screen.clear_screen()
brain.screen.set_cursor(1,1)
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
if objects[0].originX < 120:
brain.screen.print("To the left!")
else:
brain.screen.print("To the right!")
else:
brain.screen.print("No objects")
wait(100, MSEC)
.originY#
.originY tespit edilen nesnenin sınırlayıcı kutusunun sol üst köşesinin y koordinatını piksel cinsinden döndürür; bu, 0 ile 240 arasında bir tam sayıdır.
# Display if an object is close or far
while True:
brain.screen.clear_screen()
brain.screen.set_cursor(1,1)
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
if objects[0].originY < 110:
brain.screen.print("Close")
else:
brain.screen.print("Far")
.id#
.id tespit edilen Yapay Zeka Sınıflandırması veya AprilTag Kimliğinin kimliğini tam sayı olarak döndürür. Yapay Zeka Sınıflandırmaları, Yapay Zeka Görsel Yardımcı Programında yapılandırılan modele bağlıdır.
Bir AprilTag ID için, .id özelliği, 0 ile 36 aralığındaki tespit edilen AprilTag ID numarasını temsil eder. Bir AI Sınıflandırması için, .id özelliği, AI Sınıflandırmaları bölümünde önceden tanımlanmış ID’ye karşılık gelir.
# Move forward when AprilTag ID 1 is detected
while True:
apriltags = ai_vision_1.take_snapshot(AiVision.ALL_TAGS)
if apriltags[0].exists:
if apriltags[0].id == 1:
robot.drive(FORWARD)
else:
drivetrain.stop()
wait(50, MSEC)
.score#
.score , tespit edilen yapay zeka sınıflandırmasının güven skorunu 1 ile 100 arasında bir tamsayı olarak döndürür.
Daha düşük bir puan, sensörün tespit edilen nesne konusunda daha az emin olduğunu, daha yüksek bir puan ise sensörün daha emin olduğunu gösterir.
# Display if a score is confident
while True:
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
if objects[0].exists:
if objects[0].score > 95:
brain.screen.print("Confident")
else:
brain.screen.print("Not confident")
wait(50, MSEC)
İnşaatçılar#
Yapıcılar, VEXcode dışında IQ AI Vision Sensor’ü yapılandırmak için gerekli olan AiVision, Colordescve Codedesc nesnelerini manuel olarak oluşturmak için kullanılır.
AI Vision Sensor#
AiVision AiVision yapay zekalı bir görüntü sensörü oluşturur.
Kullanım
Vision(port, sigs)
Parametreler |
Tanım |
|---|---|
|
IQ AI Vision Sensörünün bağlı olduğu Akıllı Bağlantı Noktası (1’den 12’ye kadar). |
|
İsteğe bağlı. Bir veya daha fazla imzanın adı:
|
Örnek
ai_vision_1 = AiVision(Ports.PORT1, AiVision.ALL_AIOBJS)
# Move forward if an object is detected
while True:
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
drivetrain.drive_for(FORWARD, 50, MM)
wait(50, MSEC)
Color Signature#
Colordesc , bir Renk İmzası oluşturur. Bir IQ AI Vision Sensöründe aynı anda yedi farklı Renk İmzası saklanabilir.
Kullanım:
Colordesc(index, uMin, uMax, uMean, vMin, vMax, vMean, rgb, type)
Parametre |
Tanım |
|---|---|
|
|
|
Vision Utility’deki değer |
|
Vision Utility’deki değer |
|
Görme Yardımcı Programı’nda |
|
Vision Utility’deki |
|
Vision Utility’deki |
|
Vision Utility’deki |
|
Vision Utility’deki rgb değeri |
|
Vision Utility’deki |
Renk İmzası oluşturmak için değerleri elde etmek üzere Görsel Yardımcı Programı’ya gidin. Bir Renk İmzası yapılandırıldıktan sonra, Yapılandırma penceresinden parametre değerlerini kopyalayın.
Örnek
# Create a new Signature RED_BOX with the Colordesc class
RED_BOX = Colordesc(1, 10121, 10757, 10439,-1657, -1223, -1440,2.5, 1)
# Create a new AI Vision Sensor "ai_vision_1" with the AiVision
# class, with the RED_BOX Signature.
ai_vision_1 = AiVision(Ports.PORT1, 100, RED_BOX)
# Move forward if a red object is detected
while True:
red_object = ai_vision_1.take_snapshot(RED_BOX)
if red_object[0].exists:
drivetrain.drive_for(FORWARD, 10, MM)
wait(5, MSEC)
Color Code#
Codedesc bir Renk Kodu oluşturur. Kullanılabilmesi için en az iki önceden tanımlanmış Renk İmzası gerektirir. Bir Görsel Sensörde aynı anda sekiz farklı Renk Kodu saklanabilir.
Kullanım:
Codedesc(sig1, sig2, sig3, sig4, sig5)
Parametre |
Tanım |
|---|---|
|
Daha önce oluşturulmuş bir Renk İmzası. |
|
Daha önce oluşturulmuş bir Renk İmzası. |
|
İsteğe bağlı. Daha önce oluşturulmuş bir Renk İmzası. |
|
İsteğe bağlı. Daha önce oluşturulmuş bir Renk İmzası. |
|
İsteğe bağlı. Daha önce oluşturulmuş bir Renk İmzası. |
Örnek
# Create two new Signatures for a red and blue box
RED_BOX = Colordesc(1, 10121, 10757, 10439,-1657, -1223, -1440, 2.5, 1)
BLUE_BOX = Colordesc(2, -4443, -3373, -3908,6253, 7741, 6997, 2.5, 1)
# Create a Color Code for a red box to the left of a blue box
RED_BLUE = Codedesc(RED_BOX, BLUE_BOX)
# Create a new AI Vision Sensor "ai_vision_1" with the AiVision
# class, with the RED_BOX and BLUE_BOX Signatures.
ai_vision_1 = AiVision(Ports.PORT1, RED_BOX, BLUE_BOX)
# Display a message if Color Code is detected
while True:
brain.screen.set_cursor(1, 1)
brain.screen.clear_row(1)
# Change to any configured Color Code
box_code = ai_vision_1.take_snapshot(RED_BLUE)
if box_code[0].exists:
brain.screen.print("Code detected!")
wait(100, MSEC)