Lompat ke isi utama

Koneksi Kompetisi: Titik Balik - C++

Lapangan Kompetisi Robotik VEX Turning Point dengan elemen permainan dan area penilaian di posisi awal untuk awal pertandingan. Di sepanjang dinding belakang terdapat jaring dengan serangkaian bendera yang dapat dibalik di depannya.
VRC 2018-2019 Titik Balik Lapangan

Kemampuan Robot

Permainan Kompetisi Robotika VEX 2018-2019 Turning Point mengharuskan pemain untuk mengganti bendera di antara elemen permainan lainnya. Totalnya ada sembilan bendera: tiga bendera bawah yang dapat diubah-ubah oleh robot, dan enam bendera tinggi yang hanya dapat diubah-ubah dengan memukulnya menggunakan potongan permainan bola kompetisi. Tim kompetisi perlu menemukan cara untuk mencapai bendera yang lebih tinggi menggunakan peluncur bola. Jika Anda dapat membayangkan, memprogram robot untuk memukul bendera menggunakan potongan permainan bola dengan pengukuran mungkin tidak selalu akurat. Jika robot melakukan satu kali kesalahan belok selama periode otonom, ada kemungkinan tidak ada satu pun bendera yang terkena karena perhitungannya salah. Demikian pula, untuk tantangan Keterampilan Mengemudi, mungkin sulit bagi tim untuk secara manual menyelaraskan robot agar dapat meluncurkan bola dengan benar. Dengan demikian, tim yang terampil akan memprogram robot menggunakan Sensor Penglihatan untuk mendeteksi bendera dan kemudian menyelaraskan robot dengan tepat agar dapat membuat tembakan akurat.

Ikon Perluas Pembelajaran Anda Perluas Pembelajaran Anda

Untuk memperluas kegiatan ini, mintalah siswa Anda untuk merancang dan menguraikan proyek yang akan membuat robot bergerak menuju objek kuning yang terdeteksi, yang berpotensi dapat mereka gunakan untuk permainan kompetisi ini!
siswa Anda untuk melakukan hal berikut:

  • Buka proyek contoh Clawbot (Drivetrain, 2-motor, Tanpa Gyro).

    Ikon proyek templat bertuliskan Clawbot Drivetrain, No Gyro di bagian bawah dengan diagram robot berwarna abu-abu di atasnya, yang menunjukkan proyek mana yang akan dipilih.

     

  • Gunakan proyek contoh Mendeteksi Objek (Visi) sebagai referensi saat memprogram Sensor Visi (Google Doc / .v5cpp).
  • Tambahkan Sensor Penglihatan ke konfigurasi Clawbot (Drivetrain, 2-motor, Tanpa Gyro) lalu konfigurasikan Sensor Penglihatan untuk mendeteksi objek merah dan biru. Klikdi siniuntuk informasi lebih lanjut.

    Jendela Perangkat VEXcode V5 terbuka dan pilihan untuk Tambah Perangkat memperlihatkan Sensor Penglihatan yang disorot dalam kotak merah di sisi kiri. Pilihan lainnya termasuk Pengendali, Penggerak, Motor dan 3 kabel.

  • Program Clawbot untuk bergerak menuju objek yang terdeteksi. Clawbot bahkan dapat diprogram untuk mengangkat lengannya seolah-olah ingin mengaktifkan bendera!
  • Unduh dan jalankan (dalamC++) proyek untuk mengamati apakah Sensor Penglihatan dapat mendeteksi objek kuning seperti bola kuning dalam permainan VRC Turning Point. Jika Sensor Penglihatan dapat mendeteksi objek, apakah robot bergerak berdasarkan objek yang terdeteksi tersebut? Untuk bantuan, lihat video tutorial Unduh dan Jalankan Proyek.
  • Bila waktu memungkinkan, buatlah lapangan permainan yang mirip dengan lapangan Turning Point. Berlatihlah menggunakan Sensor Penglihatan untuk memungkinkan robot bergerak dan mencetak poin!

Lihat contoh solusi di bawah ini:

// Sertakan Pustaka V5
#include "vex.h"
  
// Memungkinkan penggunaan Pustaka VEX lebih mudah
menggunakan namespace vex;

event checkRed = event();
event checkBlue = event();

void hasRedCallback() {
  Brain.Screen.setFont(mono40);
  Brain.Screen.clearLine(1);
  Brain.Screen.setCursor(1, 1);
  Vision5.takeSnapshot(Vision5__REDBOX);
  if (Vision5.objectCount > 0) {
    ArmMotor.spinFor(maju, 300, derajat);
    ClawMotor.spinFor(maju, 100, derajat);
    Drivetrain.driveFor(maju, 12, inci);
    ArmMotor.spinFor(mundur, 300, derajat);
    ClawMotor.spinFor(mundur, 100, derajat);
  }
  else {
    Brain.Screen.print("Tidak Ada Objek Merah")
  }
}

void hasBlueCallback() {
  Brain.Screen.setFont(mono40);
  Brain.Screen.clearLine(3);
  Brain.Screen.setCursor(3, 1);
  Vision5.takeSnapshot(Vision5__BLUEBOX);
  if (Vision5.objectCount > 0) {
    ArmMotor.spinFor(maju, 90, derajat);
    ClawMotor.spinFor(maju, 90, derajat);
    Drivetrain.driveFor(maju, 12, inci);
    ArmMotor.spinFor(mundur, 90, derajat);
    ClawMotor.spinFor(mundur, 90, derajat);
  }
  else {
    Brain.Screen.print("Tidak Ada Objek Biru")
  }
}

int main() {
  // Menginisialisasi Konfigurasi Robot. JANGAN DIHAPUS!
  vexcodeInit();
  // daftarkan pengendali peristiwa
  checkRed(hasRedCallback);
  checkBlue(hasBlueCallback);

  // terus berjalan untuk memeriksa data sensor baru
  while (true) {
    checkRed.broadcastAndWait();
    checkBlue.broadcastAndWait();
    wait(0.2, detik);
  }
}