Isi kandungan:

Robot Catur Dibuat Dengan LEGO dan Raspberry Pi: 6 Langkah
Robot Catur Dibuat Dengan LEGO dan Raspberry Pi: 6 Langkah

Video: Robot Catur Dibuat Dengan LEGO dan Raspberry Pi: 6 Langkah

Video: Robot Catur Dibuat Dengan LEGO dan Raspberry Pi: 6 Langkah
Video: Fastest 100 meters by a bipedal robot - 24.73 seconds 🤖 2024, November
Anonim
Image
Image

Kagumkan rakan anda dengan robot catur ini!

Tidak terlalu sukar untuk dibina jika anda telah membuat robot LEGO sebelum ini dan jika anda mempunyai sekurang-kurangnya pengetahuan asas mengenai pengaturcaraan komputer dan Linux.

Robot membuat pergerakannya sendiri, dan menggunakan pengecaman visual untuk menentukan pergerakan pemain manusia.

Salah satu perkara baru dalam robot ini adalah kod untuk pengecaman bergerak. Kod penglihatan ini juga boleh digunakan untuk robot catur yang dibina dengan pelbagai cara lain (seperti ChessRobot saya menggunakan lengan robot Lynxmotion).

Tidak ada papan catur khas, suis buluh atau apa sahaja yang diperlukan (kerana pergerakan manusia ditentukan oleh pengenalan visual).

Kod saya tersedia untuk kegunaan peribadi.

Langkah 1: Keperluan

Lampu, Kamera, Aksi!
Lampu, Kamera, Aksi!

Semua kod ditulis dalam Python, yang akan dijalankan, antara lain, Raspberry Pi.

Raspberry Pi adalah komputer berukuran kad kredit yang dapat dipasang ke layar dan papan kekunci. Ini adalah komputer kecil yang mampu (sekitar $ 40), yang dapat digunakan dalam projek elektronik dan robotik, dan untuk banyak perkara yang dilakukan oleh PC desktop anda.

Robot saya menggunakan Raspberry Pi, dan Lego. Antara muka perkakasan antara motor dan sensor RPi dan Lego Mindstorms EV3 disediakan oleh BrickPi3 dari Dexter Industries.

Pembinaan Lego didasarkan pada "Charlie the Chess Robot", oleh Darrous Hadi, yang diubah suai oleh saya, termasuk mod untuk menggunakan RPi, dan bukannya pemproses Lego Mindstorms. Motor dan sensor Lego Mindstorms EV3 digunakan.

Anda juga memerlukan meja, kamera, pencahayaan, papan kekunci, skrin dan peranti penunjuk (mis. Tetikus).

Dan tentu saja, catur dan papan.

Saya menerangkan semua perkara ini dengan lebih terperinci dalam langkah-langkah berikutnya.

Langkah 2: Pembinaan Perkakasan

Image
Image

Seperti yang saya nyatakan sebelumnya, inti kod penglihatan akan berfungsi dengan pelbagai binaan.

Saya mendasarkan robot saya pada "Charlie the Chess Robot" (versi EV3) oleh Darrous Hadi, maklumat di halaman itu mengatakan bagaimana mendapatkan arahan membina. Senarai bahagian ada di sini.

Saya mengubahsuai robot dengan beberapa cara.

1. Pencengkam. Ini tidak berkesan untuk saya. Gear tergelincir, jadi saya menambah potongan Lego tambahan untuk mengelakkannya. Dan ketika kren diturunkan, ia sering macet, jadi saya menambah hubungan Watt untuk mengelakkannya.

Di atas adalah penangkap dalam tindakan, menunjukkan hubungan yang diubah.

2. Binaan asal menggunakan pemproses Lego Mindstorms EV3, tetapi saya menggunakan Raspberry Pi, yang memudahkan penggunaan Python.

3. Saya menggunakan Model B Raspberry Pi 3.

4. Untuk menghubungkan RPi ke Lego, saya menggunakan BrickPi3 dari Dexter Industries. BrickPi melekat pada Raspberry Pi dan bersama-sama mereka menggantikan LEGO Mindstorms NXT atau EV3 Brick.

Apabila anda mempunyai fail Lego Digital Designer, maka ada persoalan untuk mendapatkan potongan LEGO. Anda boleh mendapatkan batu bata terus dari kedai LEGO, dan ini adalah kaedah termurah untuk mendapatkannya. Walau bagaimanapun, mereka tidak akan mempunyai semua yang anda perlukan, dan batu bata mungkin memerlukan beberapa minggu atau lebih untuk sampai.

Anda juga boleh menggunakan Rebrickable: buka akaun, muat naik fail LDD dan dari itu dapatkan senarai penjual.

Sumber lain yang baik ialah Bricklink.

Langkah 3: Perisian yang Membuat Robot Bergerak

Semua kod ditulis dalam Python 2.

  1. Dexter Industries membekalkan kod untuk menyokong menggerakkan motor EV3, dll. Ini disertakan dengan BrickPi3.
  2. Saya memberikan kod untuk membuat motor bergerak sedemikian rupa untuk menggerakkan kepingan catur!
  3. Mesin catur adalah Stockfish - yang dapat mengalahkan mana-mana manusia! "Stockfish adalah salah satu mesin catur terkuat di dunia. Ia juga jauh lebih kuat daripada grandmaster catur manusia terbaik."
  4. Kod untuk menggerakkan mesin catur, mengesahkan bahawa pergerakan itu sah, dan sebagainya adalah ChessBoard.py
  5. Saya menggunakan beberapa kod dari https://chess.fortherapy.co.uk untuk berinteraksi dengan itu.
  6. Kod saya (dalam 2 di atas) kemudian bersambung dengan itu!

Langkah 4: Perisian untuk Mengiktiraf Pergerakan Manusia

Setelah pemain bergerak, kamera mengambil gambar. Kod memotong dan memutarnya sehingga papan catur sesuai dengan gambar berikutnya. Petak papan catur perlu kelihatan persegi !. Terdapat penyelewengan pada gambar kerana tepi papan lebih jauh dari kamera daripada bahagian tengah papan. Walau bagaimanapun, kameranya cukup jauh sehingga, setelah memotong, penyelewengan ini tidak ketara. Oleh kerana robot tahu di mana semua potongan itu berada setelah komputer bergerak, maka semua yang harus dilakukan setelah manusia bergerak adalah kodnya dapat membezakan antara tiga kes berikut:

  • Dataran kosong
  • Sekeping hitam apa sahaja
  • Sekeping putih apa sahaja.

Ini merangkumi semua kes, termasuk istana dan en passant.

Robot memeriksa bahawa pergerakan manusia itu betul, dan memberitahu mereka jika tidak! Satu-satunya kes yang tidak dilindungi adalah di mana pemain manusia mempromosikan bidak menjadi bukan ratu. Pemain kemudian harus memberitahu robot apa bahagian yang dipromosikan.

Kita sekarang boleh mempertimbangkan gambar dari segi segi empat papan catur.

Pada susunan papan awal kita tahu di mana semua kepingan putih dan hitam berada dan di mana kotak kosong.

Kotak kosong mempunyai variasi warna yang jauh lebih sedikit daripada kotak yang diduduki. Kami mengira sisihan piawai untuk masing-masing dari tiga warna RGB untuk setiap petak di semua pikselnya (selain daripada yang berdekatan dengan sempadan persegi). Sisihan piawai maksimum untuk mana-mana kotak kosong jauh lebih kecil daripada sisihan piawai minimum untuk mana-mana petak yang dihuni, dan ini membolehkan kita, setelah pemain seterusnya bergerak, untuk menentukan kotak mana yang kosong.

Setelah menentukan nilai ambang untuk kotak kosong berbanding kotak yang dihuni, kita sekarang perlu menentukan warna kepingan untuk kotak yang diduduki:

Pada papan awal kami mengira untuk setiap kotak putih, untuk masing-masing R, G, B, nilai rata-rata (rata-rata) pikselnya (selain yang berdekatan dengan sempadan segi empat sama). Minimum kaedah ini untuk mana-mana kotak putih lebih besar daripada maksimum sarana di seberang kotak hitam, dan oleh itu kita dapat menentukan warna kepingan untuk kotak yang dihuni. Seperti yang dinyatakan sebelum ini, hanya ini yang perlu kita lakukan untuk menentukan apa tindakan pemain manusia itu.

Algoritma berfungsi paling baik jika papan catur mempunyai warna yang jauh dari warna kepingan! Dalam robot saya, kepingannya berwarna putih dan coklat, dan papan catur dibuat dengan tangan dalam kad, dan berwarna hijau muda dengan sedikit perbezaan antara kotak "hitam" dan "putih".

Sunting 17 Okt 2018: Saya sekarang telah melukis kepingan coklat matt hitam, yang menjadikan algoritma berfungsi dalam keadaan pencahayaan yang lebih berubah-ubah.

Langkah 5: Lampu, Kamera, Tindakan

Lampu

Anda memerlukan sumber cahaya yang rata yang diletakkan di atas papan. Saya menggunakan yang ini, yang sangat murah, dari amazon.co.uk - dan tidak diragukan lagi ada yang serupa di amazon.com. Dengan lampu bilik dimatikan.

Kemas kini: Saya sekarang mempunyai dua lampu, untuk memberikan sumber cahaya yang lebih sekata

Kamera

Tidak syak lagi anda boleh menggunakan modul kamera Raspberry Pi khas (dengan kabel panjang), tetapi saya menggunakan kamera USB - "Logitech 960-001064 C525 HD Webcam - Black" - yang berfungsi dengan RPi. Anda perlu memastikan bahawa kamera tidak bergerak sehubungan dengan papan, dengan membina menara atau mempunyai tempat untuk memperbaikinya dengan kuat. Kamera perlu berada agak tinggi di atas papan, untuk mengurangkan penyelewengan geometri. Kamera saya 58 cm di atas papan.

Kemas kini: Saya sekarang lebih suka HP Webcam HD 2300, kerana saya merasa lebih dipercayai.

Jadual

Anda memerlukan yang kukuh. Saya beli yang ini. Di atasnya anda dapat melihat saya mempunyai sebidang MDF, dengan beberapa barang untuk menghentikan robot melompat ketika troli bergerak. Adalah idea yang baik untuk memastikan kamera berada pada kedudukan yang sama di atas papan!

Papan Kekunci

RPi memerlukan papan kekunci USB untuk persediaan pertama. Dan saya menggunakannya untuk mengembangkan kod. Satu-satunya perkara yang diperlukan oleh robot adalah memulakan program dan mensimulasikan memukul jam catur. Saya mendapat salah satu daripada ini. Tetapi sebenarnya, anda hanya memerlukan tetikus atau butang GPIO yang disambungkan ke RPi

Paparan

Saya menggunakan layar besar untuk pembangunan, tetapi satu-satunya perkara yang diperlukan robot untuk memberitahu anda bahawa pergerakan anda tidak sah, periksa, dan lain-lain. Saya mendapat salah satunya, juga terdapat di amazon.com.

Tetapi daripada memerlukan paparan, robot akan menyebut frasa ini! Saya telah melakukan ini dengan menukar teks ke ucapan menggunakan kod seperti yang dijelaskan di sini, dan memasang pembesar suara kecil. (Saya menggunakan "Pembesar suara mini Hamburger").

Frasa robot mengatakan:

  • Semak!
  • Rakan sekerja
  • Pergerakan tidak sah
  • Kamu telah menang!
  • Kebuntuan
  • Lukis dengan pengulangan tiga kali ganda
  • Lukis dengan peraturan 50 gerakan

Peraturan lima puluh gerakan dalam catur menyatakan bahawa pemain boleh menuntut seri jika tidak ada tangkapan dibuat dan tidak ada bidak yang telah dipindahkan dalam lima puluh gerakan terakhir (untuk tujuan ini "pergerakan" terdiri daripada pemain yang menyelesaikan gilirannya diikuti oleh lawan melengkapkan giliran mereka).

Anda boleh mendengar robot bercakap dalam video "bodoh bodoh" pendek di atas (jika anda menaikkan suara anda agak tinggi)!

Langkah 6: Cara Memperoleh Perisian

1. Stok ikan

Sekiranya anda menjalankan Raspbian di RPi anda, anda boleh menggunakan mesin Stockfish 7 - ia percuma. Lari saja:

sudo apt-get pasang stokin

2. ChessBoard.py

Dapatkan ini di sini.

3. Kod berdasarkan

Disertakan dengan kod saya.

4. Pemacu Python untuk BrickPi3:

Dapatkan ini di sini.

5. Kod saya yang menggunakan semua kod di atas dan yang membuat robot membuat pergerakan, dan kod penglihatan saya.

Dapatkan ini dari saya dengan menghantar komen, dan saya akan memberi respons.

Disyorkan: