Lompat ke isi utama

Tantangan Paket Dash - C++

Contoh tata letak untuk tantangan lari paket yang menunjukkan dok pemuatan di sudut kiri bawah, tiga area untuk penempatan kaleng, dan area awal di sudut kanan atas dengan Clawbot di dalamnya.

Tata letak kotak lapangan kompetisi robotik yang menunjukkan robot diposisikan di area 'Mulai' di sisi kanan. Lapangan tersebut mencakup area 'Dom Pemuatan' di sisi kiri dan tiga zona yang lebih kecil, masing-masing berisi gambar kaleng yang diletakkan di atas buku, didistribusikan ke seluruh lapangan. Zona-zona tersebut diatur untuk menciptakan lingkungan berorientasi tugas di mana robot mungkin diminta untuk berinteraksi dengan objek-objek di zona yang lebih kecil dan mengangkutnya ke Dermaga Pemuatan.

Tantangan Paket Lari

Dalam tantangan ini, Anda akan memprogram robot Anda untuk mengambil paket dan membawanya ke dermaga pemuatan secepat mungkin!

Aturan tantangan:

  • Robot harus memulai tantangan di Zona Mulai.
  • Paket (kaleng aluminium) hanya dapat bersentuhan dengan buku, cakar Clawbot, dan Dermaga Pemuatan.
    • Jika suatu paket terjatuh di lantai gudang, Anda harus mengatur ulang bidang tersebut dan memulai dari awal lagi.
  • Waktu untuk setiap putaran dimulai segera setelah robot bergerak.
  • Waktu berhenti saat paket terakhir dijatuhkan di Dermaga Pemuatan.
  • Saat mengatur ulang bidang, semuanya harus dikembalikan ke lokasi tepat saat dimulai.
  • Selamat bersenang-senang!

Ikon Tips Guru Tips Guru

  • Tingkatkan keterlibatan dengan membuat cerita latar atau tujuan gudang! Gudang jenis apa itu? Jenis paket apa yang ditemukan di gudang? Siapa pemilik gudang itu?

  • Izinkan siswa membuat rute atau strategi berbeda yang akan memudahkan mereka mengangkut kaleng secara lebih efisien.

  • Bandingkan tidak hanya waktu penyelesaian untuk menentukan pemenang tantangan ini (jika Anda menyelenggarakannya untuk menjadi kompetitif) tetapi juga teknik navigasi yang digunakan sehingga siswa dapat mempertimbangkan solusi tim lain.

Ikon Kotak Alat Guru Kotak Alat Guru - Solusi

Rubrik pemrograman untuk mengevaluasi siswa dapatdi sini

Berikut ini adalah salah satu kemungkinan solusi untuk tantangan tersebut. Solusi dapat bervariasi tergantung pada posisi awal robot dan jalur yang dipilih. Ada beberapa jalur yang dapat mengarah pada pemindahan semua paket.

int main() {
  // Menginisialisasi Konfigurasi Robot. JANGAN DIHAPUS!
  vexcodeInit();

  // Jalankan motor Claw dengan aman dan ambil paket pertama
  ClawMotor.setTimeout(2, detik);
  Drivetrain.driveFor(maju, 900, mm);
  Drivetrain.turnFor(kanan, 90, derajat);
  ArmMotor.spinFor(maju, 315, derajat);
  ClawMotor.spinFor(mundur, 180, derajat);
  Drivetrain.driveFor(maju, 215, mm);
  ClawMotor.spinFor(maju, 120, derajat);

  // Berkendara ke Dermaga Pemuatan untuk menurunkan paket pertama
  Drivetrain.driveFor(mundur, 110, mm);
  Drivetrain.turnFor(kanan, 90, derajat);
  Drivetrain.driveFor(maju, 920, mm);
  Drivetrain.turnFor(kiri, 90, derajat);
  Drivetrain.driveFor(maju, 2300, mm);
  Drivetrain.turnFor(kiri, 90, derajat);
  Drivetrain.driveFor(maju, 750, mm);
  ArmMotor.spinFor(mundur, 315, derajat);
  ClawMotor.spinFor(mundur, 120, derajat);

  // Ambil paket kedua
  Drivetrain.driveFor(mundur, 200, mm);
  Drivetrain.turnFor(kiri, 170, derajat);
  Drivetrain.driveFor(maju, 900, mm);
  Drivetrain.turnFor(kanan, 90, derajat);
  Drivetrain.driveFor(maju, 2300, mm);
  ArmMotor.spinFor(maju, 315, derajat);
  ClawMotor.spinFor(maju, 120, derajat);

  // Berkendara ke Dermaga Pemuatan untuk menurunkan paket kedua
  Drivetrain.driveFor(maju, 900, mm);
  Drivetrain.turnFor(kanan, 90, derajat);
  Drivetrain.driveFor(maju, 960, mm);
  ArmMotor.spinFor(mundur, 315, derajat);
  ClawMotor.spinFor(mundur, 120, derajat);

  // Ambil paket ketiga
  Drivetrain.driveFor(mundur, 150, mm);
  Drivetrain.turnFor(kiri, 90, derajat);
  ArmMotor.spinFor(maju, 315, derajat);
  Drivetrain.driveFor(maju, 490, mm);
  ClawMotor.spinFor(maju, 120, derajat); 

  // Berkendara ke Dermaga Pemuatan untuk menurunkan paket ketiga
  Drivetrain.driveFor(mundur, 490, mm);
  Drivetrain.turnFor(kanan, 90, derajat);
  Drivetrain.driveFor(maju, 150, mm);
  ArmMotor.spinFor(mundur, 315, derajat);
  ClawMotor.spinFor(mundur, 120, derajat);
  
}