Langsung ke konten utama

Tantangan Data Visi - Python

Ikon Kotak Peralatan Guru Kotak Peralatan Guru - Tujuan Tantangan Data Visi

Tujuan dari Tantangan Data Penglihatan adalah untuk memastikan bahwa siswa memahami data yang dikumpulkan dari cuplikan Sensor Penglihatan dan bagaimana nilai X dan Y pusat dihitung. Siswa Anda juga harus menyelesaikan praktikum ini dengan pemahaman tentang bagaimana data tersebut dapat diinterpretasikan (misalnya, nilai X tengah dapat digunakan untuk menentukan posisi objek relatif terhadap titik tengah robot), dan praktik terbaik untuk menamai objek saat melakukan konfigurasi.

Cuplikan sensor penglihatan dari konfigurasi yang menunjukkan sebuah tangan memegang roda gigi berwarna kuning. Terdapat lapisan persegi di atas roda gigi dengan data berikut yang tercantum di atas: Kotak Kuning, X 90, Y 62, W 102, H 98.

Selesaikan Tantangan Data Visi dengan menjawab pertanyaan dan mengisi data yang hilang di buku catatan teknik Anda.

  1. Instruksi manakah yang digunakan untuk mengambil foto di atas?
    1. visi_5.ambil_jepretan(REDBOX)
    2. visi_5.ambil_foto(KOTAK_KUNING)
  2. Isilah nilai-nilai berikut:

    Perintah sensor penglihatan tercantum di sisi kiri dengan kotak kosong untuk diisi dengan nilainya. Dari atas ke bawah, blok-blok tersebut tercantum sebagai berikut: vision 5 objects is not none 0, len vision 5 objects, largest object center x, largest object center y, largest object width, dan largest object height.

  3. Apakah YELLOWBOX berada di sebelah kiri atau kanan titik tengah robot?
  4. Apakah YELLOWBOX berada di atas atau di bawah titik tengah robot?
  5. YELLOWBOX adalahBUKANnama terbaik untuk objek ini jika Anda ingin dengan mudah mengenali tanda warna mana yang mana. Manakah di antara nama-nama ini yang lebih baik? Mengapa?
    1. YELLOWGEAR
    2. KUBUS KUNING

Ikon Kotak Peralatan Guru Jawaban untuk Kotak Peralatan Guru -

Jawaban siswa dapat didiskusikan di kelas dan/atau Anda dapat meninjau buku catatan teknik mereka untuk memastikan bahwa mereka telah menyelesaikan aktivitas tersebut dengan sukses.

  1. visi_5.ambil_foto(KOTAK_KUNING)
  2. Data yang telah selesai diselaraskan dengan perintah VEXcode. Jawaban dibaca, secara berurutan, penglihatan 5 objek tidak benar = Benar; panjang penglihatan 5 objek = 1; pusat objek terbesar x = 141; pusat objek terbesar y = 111; lebar objek terbesar = 102; tinggi objek terbesar = 98.
  3. YELLOWBOX sedikit bergeser ke kiri dari titik tengah robot, tetapi hanya dengan selisih 16,5 piksel (tengah 157,5 - 141).
  4. YELLOWBOX sedikit lebih rendah dari titik tengah robot, tetapi hanya dengan selisih 5,5 piksel (111 - tengah 105,5).
  5. A. YELLOWGEAR

    Ini adalah nama yang lebih baik karena tidak hanya menggambarkan warna objek tetapi juga jenis objek tersebut. Ini adalah roda gigi,atau kubus.

Perluas Pembelajaran Anda Perluas Pembelajaran Anda - Gunakan Instruksi Penginderaan dalam Sebuah Proyek

Sekarang setelah beberapa data yang dilaporkan oleh Sensor Penglihatan lebih dipahami, siswa mungkin ingin menggunakan Instruksi Penginderaan ini dalam sebuah proyek. Biarkan mereka mengeksplorasi cara melakukannya.

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("Objek Merah Ditemukan")
        brain.screen.next_row()
        brain.screen.print("Jumlah Objek Terdeteksi:", len(vision_5_objects))
        brain.screen.next_row()
        brain.screen.print("Pusat X:", vision_5.largest_object().centerX)
        brain.screen.next_row()
        brain.screen.print("Pusat Y:", vision_5.largest_object().centerY)
        brain.screen.next_row()
        brain.screen.print("Lebar:", vision_5.largest_object().width)
        brain.screen.next_row()
        brain.screen.print("Tinggi:", vision_5.largest_object().height)
        brain.screen.next_row()
    
    else:
        brain.screen.print("Tidak Ada Objek Merah")

Siswa yang lebih mahir mungkin dapat menggunakan petunjuk ini dalam sebuah proyek untuk membuat keputusan.

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)