Skip to main content

Vizyon Veri Mücadelesi - Python

Öğretmen Araç Kutusu simgesi Öğretmen Araç Kutusu - Vizyon Veri Mücadelesinin Amacı

Vision Data Challenge'ın amacı, öğrencilerin Vision Sensörünün anlık görüntüsünden toplanan verileri ve merkez X ve Y değerlerinin nasıl hesaplandığını anlamalarını sağlamaktır. Öğrencileriniz ayrıca bu laboratuvarı, söz konusu verilerin nasıl yorumlanabileceği (örneğin, merkez X değeri, nesnenin robotun merkez noktasına göre nerede olduğunu belirlemek için kullanılabilir) ve yapılandırma sırasında nesneleri adlandırma konusunda en iyi uygulamalar hakkında bir anlayışla tamamlamalıdır.

Vizyon Sensörü, sarı bir dişliyi tutan bir eli gösteren konfigürasyondan anlık görüntü. Dişlinin üzerinde yukarıda listelenen verilerle kare bir kaplama bulunur: Sarı Kutu, X 90, Y 62, W 102, H 98.

Soruları yanıtlayarak ve mühendislik defterinizdeki eksik verileri doldurarak Vision Data Challenge'ı tamamlayın.

  1. Yukarıdaki anlık görüntüyü almak için bu talimatlardan hangisi kullanılmıştır?
    1. vision_5.take_snapshot(REDBOX)
    2. vision_5.take_snapshot(YELLOWBOX)
  2. Şu değerleri girin:

    Görüş Sensörü komutları, değerleriyle doldurmak için sol tarafta boş kutularla listelenmiştir. Yukarıdan aşağıya doğru bloklar listelenir: VISION 5 nesneleri None 0 değildir, len VISION 5 nesneleri, en büyük nesne merkezi x, en büyük nesne merkezi y, en büyük nesne genişliği ve en büyük nesne yüksekliği.

  3. YELLOWBOX robotun merkez noktasının solunda mı yoksa sağında mı?
  4. YELLOWBOX robotun merkez noktasının üstünde veya altında mı?
  5. Hangi renk imzasının hangisi olduğunu kolayca anlamak istiyorsanız bu nesneye verebileceğiniz en iyi isim SARI KUTUDURNOT Hangisi daha iyi bir isim? Neden?
    1. YELLOWGEAR
    2. YELLOWCUBE

Öğretmen Araç Kutusu simgesi Öğretmen Araç Kutusu - Cevap

Öğrencilerin cevapları sınıfça tartışılabilir ve/veya aktiviteyi başarıyla tamamladıklarından emin olmak için mühendislik defterlerini inceleyebilirsiniz.

  1. vision_5.anlık_görüntü_al(YELLOWBOX)
  2. VEXcode komutlarına göre hizalanmış tamamlanmış veriler. Cevaplar, sırayla, vizyon 5 nesne doğru değil = Doğru; len vizyon 5 nesne = 1; en büyük nesne merkezi x = 141; en büyük nesne merkezi y = 111; en büyük nesne genişliği = 102; en büyük nesne yüksekliği = 98.
  3. YELLOWBOX robotun merkez noktasının biraz solundadır ancak sadece 16,5 piksel farkla (merkez 157,5 - 141).
  4. YELLOWBOX, robotun merkez noktasından biraz daha aşağıdadır ancak yalnızca 5,5 piksellik bir farkla (111 - merkez 105,5).
  5. A. SARI DİŞLİ

    Bu daha iyi bir isimdir çünkü sadece nesnenin rengini değil aynı zamanda türünü de tanımlar. Bu bir dişli,değilbir kutu veya küp.

Öğrenmenizi Genişletin simgesi Öğreniminizi Genişletin - Bir Projede Algılama Talimatlarını Kullanın

Artık Görme Sensörü'nün bildirilen verilerinden bazıları daha iyi anlaşıldığına göre, öğrenciler bu Algılama Talimatlarını bir projede kullanmak isteyebilirler. Bunu yaparken keşfetmelerine izin verin.

def check_red_callback():
    brain.screen.set_font(FontType.MONO40)
    brain.screen.clear_row(3)
    brain.screen.set_cursor(3, 1)
    vision_5_objects = vision_5.take_snapshot(REDBOX)

    if (vision_5_objects):
        brain.screen.print("Kırmızı Nesne Bulundu")
        brain.screen.next_row()
        brain.screen.print("Algılanan Nesne Sayısı:", len(vision_5_objects))
        brain.screen.next_row()
        brain.screen.print("Merkez X:", vision_5.largest_object().centerX)
        brain.screen.next_row()
        brain.screen.print("Merkez Y:", vision_5.largest_object().centerY)
        brain.screen.next_row()
        brain.screen.print("Genişlik:", vision_5.largest_object().width)
        brain.screen.next_row()
        brain.screen.print("Yükseklik:", vision_5.largest_object().height)
        brain.screen.next_row()
    
    else:
        brain.screen.print("Kırmızı Nesne Yok")

Daha ileri seviyedeki öğrenciler, karar almak için bir proje içerisinde bu talimatları kullanabilirler.

while True:
    drivetrain.drive(FORWARD)
    vision_5_objects = vision_5.take_snapshot(REDBOX)
    if (vision_5_objects) and (vision_5.largest_object().centerX < 157.5):
        drivetrain.turn_for(LEFT, 90, DEGREES)
    else:
        drivetrain.turn_for(RIGHT, 90, DEGREES)
        wait(5, MSEC)