Robo Sumo: Perkelahian Robot Cerdas


( c )

Setiap tahun, sekitar seribu tim dari seluruh Jepang terlibat dalam pertempuran sengit dalam turnamen robot. Dalam kontes ini Anda tidak akan melihat gergaji mesin, obor, dan muatan listrik - singkatnya, tidak ada yang terlintas dalam pikiran ketika Anda mendengar ungkapan "pertempuran robot".

Ini bukan hanya tentang pertempuran - ini adalah robot sumo yang dihargai karena kualitas khususnya: untuk keanggunan, kesederhanaan dan kemampuan untuk menunjukkan kecerdasan dalam strategi. Persaingan berlangsung pada cincin logam bundar dengan diameter hanya 1,5 m, di sepanjang garis putih selebar 5 cm .Sebuah robot yang melintasi perbatasan ini dianggap kalah. Dan dalam kesederhanaan yang tampak ini terletak jurang peluang.

Kami akan memberi tahu Anda bagaimana "pertempuran robot" telah menjadi kompetisi intelektual bagi para programmer, dan memberikan instruksi terperinci untuk merakit robot-sumo.

Sensor pencarian perbatasan dan musuh



( c )

Mata robot adalah sensor inframerah. Tingkat refleksi IR diukur oleh elemen fotosensitif. Warna putih perbatasan tidak dipilih secara kebetulan - itu memantulkan lebih banyak cahaya daripada permukaan hitam cincin.

Robot ini dilengkapi dengan beberapa sensor inframerah yang bertanggung jawab untuk "pencarian" perbatasan. Sensor depan, sebagai suatu peraturan, membantu mengontrol kecepatan gerakan - petarung tidak boleh meninggalkan medan karena semangat yang berlebihan. Sensor belakang "mengikuti" pendekatan ke batas cincin: setelah menerima respons dari mereka, robot mengubah arah.

Dan dengan mengukur waktu yang diperlukan untuk memantulkan sinar, Anda dapat memahami lokasi musuh. Banyak robot (tetapi tidak semua) mengubah arah, mengingat parameter ini.

Aturan pertempuran



Selain keunggulan yang tercantum, sensor IR memiliki kelemahan - bidang pandang tetap sempit, karena yang ada banyak titik buta, penggunaan yang dalam serangan adalah strategi utama robot yang sangat bermanuver.

Namun, ini hanya berfungsi dengan robot otonom. Ketika sumoist robot independen bertemu lawan yang dikendalikan radio, dia tidak bisa menggunakan strategi serangan zona buta, karena operator melihat lebih dari robot.

Alih-alih menyerang titik-titik buta, Autobots menggunakan strategi serangan dari sudut. Secara umum, pegulat tidak memiliki banyak manuver yang tersedia: berputar, mendorong, mengerem, dan berhenti.

Namun, untuk membingungkan musuh, beberapa pejuang melemparkan bendera putih di salah satu atau kedua sisi lambung. Memikat musuh ke bendera, mereka menyerang sisi yang rentan dan mendorongnya keluar dari ring.

Tentu saja, cara untuk bertahan terhadap serangan semacam itu muncul. Munculnya bendera di kiri dan kanan berarti bahwa tubuh robot berada di tengah. Jika robot melemparkan bendera di satu sisi, maka tubuhnya berada di tempat yang berlawanan.

Beberapa bot tidak hanya bisa memancing musuh, tetapi juga bersembunyi dari sensornya. Untuk melakukan ini, mereka dicat hitam atau pelapis reflektif ditambahkan.

Persenjataan



Pertempuran robot Sumoist bukan hanya sebuah pantat. Banyak dari mereka dilengkapi dengan pisau buldoser bermata tajam. Hal ini memungkinkan Anda untuk meningkatkan lawan Anda dan memindahkannya dari lapangan atau bahkan menyebabkan kerusakan serius. Benar, senjata ini mengurangi kemampuan manuver pejuang.

Dalam sumo manusia, senjata utama petarung adalah massa yang mengesankan. Anehnya, dalam robot, massa juga memainkan "peran penting".

Terlepas dari kenyataan bahwa, menurut aturan, panjang robot (di kedua sisi) tidak melebihi 20 cm, dan beratnya tidak boleh lebih dari 3 kg, robot-sumoist dapat "menimbang" beberapa puluh kilogram. "Berat" ini dicapai melalui magnet. Ya, kadang-kadang teknik ini praktis bisa "menempel" ke lantai, karena cincin itu didasarkan pada permukaan logam.

Pikiran mesin


Saat membuat robot, taktik utama yang manuvernya tinggi, magnet lebih sedikit digunakan. Penekanan utama dalam hal ini ditempatkan pada motor yang kuat. Namun, kemenangan dalam pertempuran jarang hanya bergantung pada besi.

Hal utama untuk robot sumo adalah strategi, ditulis dalam bentuk kode. Pilihan besi juga tergantung padanya. Seringkali robot bergerak sangat cepat sehingga sulit untuk melacak pergerakan mereka. Namun, perilaku super-manuver didasarkan pada logika program yang ketat. Pertimbangkan prinsip-prinsip yang dengannya ia dibuat.

Pembuatan Robot Sumo



Mari kita beralih ke pengalaman para ahli dari situs hackster.io , yang menyiapkan panduan lengkap tentang pembuatan robot-sumoist.

Komponen-komponen berikut digunakan dalam proyek:

  • Pengontrol CytronTechnologies × 1;
  • sensor inframerah (3-80 cm) × 5;
  • set roda silikon JSumo (52 x 30 mm) × 2;
  • modul pelacakan inframerah × 2;
  • Motor roda gigi DC (12 V, 380 rpm) × 4;
  • Baterai LiPo (11.1 V, 1300 mAh) × 1.


1. Pengendali


Anda dapat menggunakan Arduino Uno, Mega atau Nano. Anda juga akan membutuhkan papan untuk menghubungkan semua sensor. Anda tentu saja dapat membuat kartu ekspansi Anda sendiri dan menghubungkan semua kontak ke Arduino, atau membeli kartu yang sudah jadi dan menghubungkan semua komponen elektronik.


2. Mesinnya


Ini adalah salah satu bagian terpenting di mana kinerja robot bergantung. Idealnya, Anda membutuhkan mesin dengan kecepatan dan torsi tinggi, tetapi dalam hal ini ukurannya akan besar. Anda harus memastikan bahwa semua mesin dan roda muat dalam kotak 20 x 20 cm.

Ada beberapa jenis mesin yang dapat Anda gunakan dalam proyek Anda.

Mesin dengan roda silindris dan roda gigi planetary , di mana poros keluaran sejajar dengan mesin.


Motor roda gigi cacing . Poros output di sini tegak lurus. Opsi ini mungkin lebih disukai, karena akan ada lebih banyak ruang di robot untuk komponen lainnya.


Roda dua vs roda empat


Penggerak empat roda pasti akan memberikan lebih banyak peluang untuk mendorong robot lawan. Namun, mobilitasnya lebih rendah daripada mobil roda dua. Tetap saja, penggerak semua-roda digunakan dalam proyek demo ini.

3. Roda



Tidak banyak pilihan karet yang bagus untuk robot sumo di pasaran. Insinyur memilih roda silikon yang diproduksi oleh Jsumo. Namun, Anda dapat menggunakan roda dari mobil mainan.

Perhatikan pemasangan - pastikan roda yang dipilih cocok dengan ukuran lubang yang sesuai dengan poros output mesin. Proyek ini menggunakan poros 6 mm, masing-masing, roda memiliki lubang 6 mm.

4. Sensor



Untuk mendeteksi objek, Anda dapat menggunakan kedua sensor inframerah, dan, misalnya, ultrasonik.

Para ahli merekomendasikan untuk memulai serangan ketika jarak ke musuh tidak lebih dari 60 cm. Dengan demikian, dimungkinkan untuk menempatkan sensor dengan rentang sensitivitas hingga 1 m.


Untuk robot ini, tiga sensor inframerah dipasang - satu per sisi.


Sensor inframerah juga harus dipasang di bagian bawah robot, yang akan membantu mendeteksi garis putih di tepi cincin. Anda dapat memasang beberapa set sensor tepi di depan dan belakang, tergantung pada strategi mengemudi Anda.

5. Baterai



Baterai lithium polimer biasanya digunakan karena memberikan daya lebih dari jenis baterai lain dengan ukuran yang sama.

6. Sasis robot


Anda dapat menggunakan basis siap pakai dari Cytron, yang sesuai dengan ukuran robot yang diizinkan (20 x 20 cm), atau membuatnya dari awal sendiri.


Karena pencetakan 3D lebih ekonomis, penyelam telah berbagi file untuk pencetakan rumah.


7. Majelis


Diagram dan tabel di bawah ini memberikan gambaran umum tentang koneksi kabel untuk robot Sumo.



Pertama, Anda perlu menyolder dua kabel (ukuran yang disarankan adalah 16-18 AWG) ke terminal motor, kemudian hubungkan ke pengontrol.


Selanjutnya, semua motor dan sensor harus disolder dengan kabel.


Sekarang kita beralih ke perakitan di dalam kasing. Gunakan baut M3x10 untuk memasang motor di housing bawah.


Pasang sensor inframerah di sisi kanan dan kiri.


Kencangkan pelek roda dengan sekrup M4, lalu pasang selotip silikon.

Sekrup yang disetel harus diamankan ke bagian datar poros motor bundar.


Kemudian, menggunakan sekrup self-tapping, pasang sensor tepi di bagian bawah blade.


Di bagian depan casing bawah, Anda akan melihat dua lubang yang dimaksudkan untuk meletakkan kabel sensor tepi.


Pasang pisau dengan casing bawah menggunakan baut dan mur M6x20.


Pasang sensor inframerah pada dudukan depan sebelum memasangnya ke huruf kecil.


Setelah memasang semua sensor dan motor, kami sarankan menandai setiap kabel sehingga lebih mudah untuk memecahkan masalah di masa depan.


Perbaiki dukungan dukungan untuk papan sirkuit.


Periksa polaritas baterai dan sensor sebelum menghubungkan ke papan, dan kemudian ingat untuk melepas baterai sebelum melanjutkan untuk menghubungkan komponen lain ke papan.


Karena ini adalah robot penggerak semua roda, dua mesin di satu sisi harus terhubung untuk mengendalikannya secara bersamaan.


Saat menggunakan contoh kode yang sudah jadi , lebih baik menghubungkan semua mesin dan sensor ke port yang sama, yang ditunjukkan pada ilustrasi.


Akhirnya, hubungkan baterai.


Robot Sumo sudah siap!

8. Kalibrasi sensor


Langkah penting adalah kalibrasi sebelum pemrograman. Sayangnya, sebagian besar pendatang baru tidak memperhatikan hal ini saat mengatur robot.

Pastikan sensor beroperasi dalam rentang sensitivitas yang diperlukan.

Rentang sensitivitas maksimum sensor pencarian musuh adalah 80 cm. Dalam proyek ini, robot tidak boleh merespons ke objek yang terletak pada jarak 60-80 cm, oleh karena itu rentang sensitivitas berkurang 20 cm.


Untuk melakukan ini, letakkan robot "menghadap" ke permukaan putih datar pada jarak 60 cm dan sesuaikan sensor sampai indikator LED padam. Prosedur ditampilkan secara lebih rinci dalam video.


Sensor tepi disesuaikan menggunakan obeng melalui lubang pada blade.

Menggunakan perangkat lunak, Anda dapat menampilkan sinyal dua sensor tepi pada LED D0 dan D1.


Ini diperlukan untuk memastikan bahwa sensor memberikan sinyal output tinggi ketika merasakan permukaan putih, dan yang rendah pada permukaan hitam (perhatikan LED pada D0 dan D1 dalam video di atas).

9. Pemrograman


Karena pengontrol robot URC10 kompatibel dengan Arduino UNO, Arduino IDE digunakan untuk pemrograman. Anda dapat mengambil contoh kode yang sudah jadi .

Satu-satunya perpustakaan yang digunakan dalam proyek ini adalah CytronMotorDrivers .

Jika Anda tidak tahu cara mengaktifkan perpustakaan atau mengunduh kode sampel, lihat manual URC10 .

Program robot sumo pada dasarnya dapat dibagi menjadi empat bagian:

  • mulai dari kinerja;
  • Cari;
  • menyerang;
  • mundur.

void loop() {
  //   .
  if (!digitalRead(EDGE_L)) {
    //     .
    backoff(RIGHT);
 
    //   .
    searchDir ^= 1;
  }
 
  //   .
  else if (!digitalRead(EDGE_R)) {
    //     .
    backoff(LEFT);
 
    //   .
    searchDir ^= 1;
  }
 
  //   .
  else {
    //  ,    .
    if ( digitalRead(OPPONENT_FC) &&
         digitalRead(OPPONENT_FL) &&
         digitalRead(OPPONENT_FR) &&
         digitalRead(OPPONENT_L) &&
         digitalRead(OPPONENT_R) ) {
      search();
    }
 
    // ,      .
    else {
      attack();
    }
  }
 
 
  //     .
  if (!digitalRead(BUTTON)) {
    //  .
    motorL.setSpeed(0);
    motorR.setSpeed(0);
 
    // .
    while (1);
  }
}

Mulai dari kinerja


Strategi awal tergantung pada aturan kompetisi. Robot hanya dapat mulai bergerak setelah 5 detik, dan terkadang dalam 1 detik.

Kebetulan aturan memungkinkan Anda untuk menempatkan robot di manapun di atas ring. Dalam kasus lain, robot harus berada di "zona awal" tertentu.

Dalam contoh ini, robot diprogram untuk bergerak dan menyerang lawan dari samping segera setelah permainan dimulai.

void startRoutine() {
  // .
  delay(1000);
 
  //    45 .
  motorL.setSpeed(255);
  motorR.setSpeed(0);
  delay(180);
 
  //  .
  motorL.setSpeed(255);
  motorR.setSpeed(255);
  delay(450);
 
  //  ,     .
  motorL.setSpeed(-0);
  motorR.setSpeed(255);
  uint32_t startTimestamp = millis();
  while (digitalRead(OPPONENT_FC)) {
    // ,        .
    if (millis() - startTimestamp > 400) {
      break;
    }
  }
 
}


Cari


Jika segera setelah start itu tidak mungkin untuk menyerang musuh, robot akan mengelilingi cincin dalam lingkaran untuk menemukan lawan. Setelah terdeteksi, mode pencarian akan dihentikan dan robot akan melanjutkan untuk menyerang.

void search() {
  //   .
  if (searchDir == LEFT) {
    motorL.setSpeed(100);
    motorR.setSpeed(255);
  } else {
    motorL.setSpeed(255);
    motorR.setSpeed(100);
  }
}


Menyerang


Ketika musuh terdeteksi oleh salah satu dari lima sensor, robot berputar ke arahnya dan menyerang dengan kecepatan penuh.

Keakuratan serangan tergantung pada seberapa jelas robot Anda dapat melacak musuh saat bergerak maju dengan kecepatan penuh. Jika musuh berhasil melarikan diri, program akan melanjutkan bekerja dalam mode pencarian.

void attack() {
  uint32_t attackTimestamp = millis();
  //    .
  //     .
  if (!digitalRead(OPPONENT_FC)) {
    motorL.setSpeed(255);
    motorR.setSpeed(255);
  }
 
  //   .
  //  .
  else if (!digitalRead(OPPONENT_FL)) {
    motorL.setSpeed(0);
    motorR.setSpeed(255);
  }
 
  //   .
  //  .
  else if (!digitalRead(OPPONENT_FR)) {
    motorL.setSpeed(255);
    motorR.setSpeed(0);
  }
 
  //   .
  //     ,     .
  else if (!digitalRead(OPPONENT_L)) {
    motorL.setSpeed(-150);
    motorR.setSpeed(150);
    while (digitalRead(OPPONENT_FC)) {
      // ,    .
      if (millis() - attackTimestamp > 400) {
        break;
      }
    }
  }
 
  //   .
  //     ,     .
  else if (digitalRead(OPPONENT_R) == 0) {
    motorL.setSpeed(150);
    motorR.setSpeed(-150);
    while (digitalRead(OPPONENT_FC)) {
      // ,    .
      if (millis() - attackTimestamp > 400) {
        break;
      }
    }
  }
}


Mundur


Ketika salah satu sensor tepi mendeteksi garis putih, robot harus mundur dan berbalik. Selama rotasi, robot akan terus mencari musuh. Jika terlihat, itu akan diserang.

void backoff(uint8_t dir) {
  //  .
  motorL.setSpeed(0);
  motorR.setSpeed(0);
  delay(100);
 
  // .
  motorL.setSpeed(-255);
  motorR.setSpeed(-255);
  delay(200);
 
  //  .
  motorL.setSpeed(0);
  motorR.setSpeed(0);
  delay(100);
 
  // .
  if (dir == LEFT) {
    motorL.setSpeed(-150);
    motorR.setSpeed(150);
  } else {
    motorL.setSpeed(150);
    motorR.setSpeed(-150);
  }
  delay(100);
 
  //   
  //  -   .
  uint32_t uTurnTimestamp = millis();
  while (millis() - uTurnTimestamp < 300) {
    //   ,     .
    if ( !digitalRead(OPPONENT_FC) ||
         !digitalRead(OPPONENT_FL) ||
         !digitalRead(OPPONENT_FR) ||
         !digitalRead(OPPONENT_L) ||
         !digitalRead(OPPONENT_R) ) {
      //  .
      motorL.setSpeed(0);
      motorR.setSpeed(0);
      delay(100);
 
      //    .
      return;
    }
  }
 
  //    ,         .
  motorL.setSpeed(255);
  motorR.setSpeed(255);
  delay(200);
}


Itu saja. Sekarang Anda dapat menonton video yang menunjukkan bagaimana robot bergerak dari pelajaran ini.


Apakah Anda sudah memiliki pengalaman membangun robot untuk kompetisi serupa? Bagikan strategi kemenangan dalam komentar.

Sumber


Perakitan robot DIY: https://www.hackster.io/cytron-technologies/building-a-sumo-robot-45d703

Kompetisi Robot Sumo Nasional Seluruh Jepang: http://www.fsi.co.jp/sumo/en /index.html

Illustrated Ruleset : http://www.robotroom.com/SumoRules.html

All Articles