Daftar Isi:

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: A Portable "12mm thin Tablet"!!! (+9 Rasp-Pi Projects) 2024, Juli
Anonim
Image
Image

Buat kagum teman-teman Anda dengan robot catur ini!

Tidak terlalu sulit untuk membangunnya jika Anda pernah membuat robot LEGO sebelumnya dan jika Anda memiliki setidaknya pengetahuan dasar tentang pemrograman komputer dan Linux.

Robot membuat gerakannya sendiri, dan menggunakan pengenalan visual untuk menentukan gerakan pemain manusia.

Salah satu hal baru dalam robot ini adalah kode untuk pengenalan gerakan. Kode visi ini juga dapat digunakan untuk robot catur yang dibuat dengan banyak cara lain (seperti Robot Catur saya menggunakan lengan robot Lynxmotion).

Tidak ada papan catur khusus, sakelar buluh atau apa pun yang diperlukan (karena gerakan manusia ditentukan oleh pengenalan visual).

Kode saya tersedia untuk penggunaan pribadi.

Langkah 1: Persyaratan

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

Semua kode ditulis dengan Python, yang akan berjalan, antara lain, Raspberry Pi.

Raspberry Pi adalah komputer seukuran kartu kredit yang dapat dicolokkan ke layar dan keyboard. Ini adalah komputer kecil yang murah (sekitar $ 40), yang dapat digunakan dalam proyek elektronik dan robotika, dan untuk banyak hal yang dilakukan PC desktop Anda.

Robot saya menggunakan Raspberry Pi, dan Lego. Antarmuka perangkat keras antara motor dan sensor RPi dan Lego Mindstorms EV3 disediakan oleh BrickPi3 dari Dexter Industries.

Lego build didasarkan pada "Charlie the Chess Robot", oleh Darrous Hadi, dimodifikasi oleh saya, termasuk mod untuk menggunakan RPi, bukan prosesor Lego Mindstorms. Motor dan sensor Lego Mindstorms EV3 digunakan.

Anda juga memerlukan meja, kamera, lampu, keyboard, layar, dan alat penunjuk (mis. mouse).

Dan tentu saja, bidak catur dan papan.

Saya menjelaskan semua hal ini secara lebih rinci dalam langkah-langkah selanjutnya.

Langkah 2: Pembuatan Perangkat Keras

Image
Image

Seperti yang saya tunjukkan sebelumnya, inti dari kode visi akan bekerja dengan berbagai build.

Saya mendasarkan robot saya pada "Charlie the Chess Robot" (versi EV3) oleh Darrous Hadi, info di halaman itu mengatakan cara mendapatkan instruksi pembuatan. Daftar bagian ada di sini.

Saya memodifikasi robot dalam beberapa cara.

1. Pengambil. Ini tidak berhasil untuk saya. Roda giginya tergelincir, jadi saya menambahkan potongan Lego tambahan untuk mencegahnya. Dan kemudian ketika crane diturunkan sering macet, jadi saya menambahkan tautan Watt untuk mencegahnya.

Di atas adalah aksi grabber, menunjukkan tautan yang dimodifikasi.

2. Versi asli menggunakan prosesor Lego Mindstorms EV3, tetapi saya menggunakan Raspberry Pi, yang memudahkan penggunaan Python.

3. Saya menggunakan Raspberry Pi 3 Model B.

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

Ketika Anda memiliki file Lego Digital Designer, maka ada pertanyaan untuk mendapatkan potongan LEGO. Anda bisa mendapatkan batu bata langsung dari toko LEGO, dan ini adalah cara termurah untuk mendapatkannya. Namun, mereka tidak akan memiliki semua yang Anda butuhkan, dan batu bata mungkin membutuhkan waktu beberapa minggu atau lebih untuk tiba.

Anda juga dapat menggunakan Rebrickable: buka akun, unggah file LDD dan dari sana dapatkan daftar penjual.

Sumber bagus lainnya adalah Bricklink.

Langkah 3: Perangkat Lunak Yang Membuat Robot Bergerak

Semua kode ditulis dengan Python 2.

  1. Dexter Industries menyediakan kode untuk mendukung pemindahan motor EV3, dll. Ini hadir dengan BrickPi3.
  2. Saya memberikan kode untuk membuat motor bergerak sedemikian rupa untuk memindahkan bidak catur!
  3. Mesin caturnya adalah Stockfish - yang bisa mengalahkan manusia mana pun! "Stockfish adalah salah satu mesin catur terkuat di dunia. Itu juga jauh lebih kuat daripada grandmaster catur manusia terbaik."
  4. Kode untuk menggerakkan mesin catur, memvalidasi bahwa suatu gerakan valid, dan seterusnya adalah ChessBoard.py
  5. Saya menggunakan beberapa kode dari https://chess.fortherapy.co.uk untuk berinteraksi dengan itu.
  6. Kode saya (dalam 2 di atas) kemudian berinteraksi dengan itu!

Langkah 4: Perangkat Lunak untuk Mengenali Gerakan Manusia

Setelah pemain bergerak, kamera mengambil foto. Kode memotong dan memutarnya sehingga papan catur benar-benar pas dengan gambar berikutnya. Kotak papan catur harus terlihat persegi!. Ada distorsi pada gambar karena tepi papan lebih jauh dari kamera daripada bagian tengah papan. Namun, jarak kamera cukup jauh sehingga, setelah dikrop, distorsi ini tidak terlalu signifikan. Karena robot mengetahui di mana semua bagian setelah komputer bergerak, maka yang harus dilakukan setelah manusia bergerak adalah kode untuk dapat membedakan antara tiga kasus berikut:

  • Sebuah kotak kosong
  • Sepotong hitam dalam bentuk apa pun
  • Sepotong putih apa pun.

Ini mencakup semua kasus, termasuk castling dan en passant.

Robot memeriksa apakah gerakan manusia itu benar, dan memberi tahu mereka jika tidak! Satu-satunya kasus yang tidak tercakup adalah di mana pemain manusia mempromosikan pion menjadi bukan ratu. Pemain kemudian harus memberi tahu robot apa bagian yang dipromosikan.

Kita sekarang dapat mempertimbangkan gambar dalam bentuk kotak papan catur.

Pada pengaturan papan awal, kita tahu di mana semua potongan putih dan hitam berada dan di mana kotak kosong berada.

Kotak kosong memiliki variasi warna yang jauh lebih sedikit daripada kotak yang ditempati. Kami menghitung deviasi standar untuk masing-masing dari tiga warna RGB untuk setiap kotak di semua pikselnya (selain yang dekat perbatasan kotak). Standar deviasi maksimum untuk setiap kotak kosong jauh lebih kecil dari standar deviasi minimum untuk setiap kotak yang ditempati, dan ini memungkinkan kita, setelah pemain berikutnya bergerak, untuk menentukan kotak mana yang kosong.

Setelah menentukan nilai ambang batas untuk kotak kosong versus kotak yang terisi, sekarang kita perlu menentukan warna potongan untuk kotak yang terisi:

Pada papan awal kami menghitung untuk setiap kotak putih, untuk setiap R, G, B, nilai rata-rata (rata-rata) pikselnya (selain yang dekat perbatasan kotak). Minimum rata-rata ini untuk setiap kotak putih lebih besar dari maksimum rata-rata di semua kotak hitam, sehingga kita dapat menentukan warna bagian untuk kotak yang ditempati. Seperti yang dinyatakan sebelumnya, hanya ini yang perlu kita lakukan untuk menentukan apa gerakan pemain manusia itu.

Algoritme bekerja paling baik jika papan catur memiliki warna yang jauh dari warna bidak! Di robot saya, potongan-potongannya berwarna putih pudar dan coklat, dan papan catur dibuat dengan kartu, dan berwarna hijau muda dengan sedikit perbedaan antara kotak "hitam" dan "putih".

Sunting 17 Okt 2018: Sekarang saya telah mengecat potongan cokelat menjadi hitam pekat, yang membuat algoritme bekerja di bawah kondisi pencahayaan yang lebih bervariasi.

Langkah 5: Lampu, Kamera, Aksi

lampu

Anda membutuhkan sumber cahaya yang merata yang ditempatkan 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 kamar dimatikan.

Pembaruan: Sekarang saya memiliki dua lampu, untuk memberikan sumber cahaya yang lebih merata

Kamera

Tidak diragukan lagi Anda dapat menggunakan modul kamera Raspberry Pi khusus (dengan kabel panjang), tetapi saya menggunakan kamera USB - "Logitech 960-001064 C525 HD Webcam - Black" - yang berfungsi dengan RPi. Anda perlu memastikan bahwa kamera tidak bergerak sehubungan dengan papan, dengan membangun menara atau memiliki tempat untuk memperbaikinya dengan kuat. Kamera harus cukup tinggi di atas papan, untuk mengurangi distorsi geometrik. Saya memiliki kamera saya 58 cm di atas papan.

Pembaruan: Sekarang saya lebih suka HP Webcam HD 2300, karena menurut saya lebih andal.

Meja

Anda membutuhkan yang kokoh. Saya membeli yang ini. Selain itu Anda dapat melihat saya memiliki kotak MDF, dengan beberapa hal untuk menghentikan robot melompat-lompat ketika troli bergerak. Sebaiknya simpan kamera pada posisi yang sama di atas papan!

Papan ketik

RPi membutuhkan keyboard USB untuk pengaturan pertamanya. Dan saya menggunakannya untuk mengembangkan kode. Satu-satunya hal yang robot membutuhkan keyboard adalah untuk memulai program dan untuk mensimulasikan memukul jam catur. Aku punya salah satu dari ini. Tapi sungguh, Anda hanya perlu mouse atau tombol GPIO yang terhubung ke RPi

Menampilkan

Saya menggunakan layar besar untuk pengembangan, tetapi satu-satunya hal yang dibutuhkan robot adalah memberi tahu Anda bahwa langkah Anda tidak valid, periksa, dll. Saya mendapatkan salah satunya, juga tersedia di amazon.com.

Tetapi alih-alih membutuhkan tampilan, robot akan mengucapkan frasa ini! Saya telah melakukan ini dengan mengonversi teks menjadi ucapan menggunakan kode seperti yang dijelaskan di sini, dan memasang speaker kecil. (Saya menggunakan "speaker mini Hamburger").

Frase robot mengatakan:

  • Memeriksa!
  • Sekakmat
  • Langkah tidak valid
  • Anda menang!
  • Jalan buntu
  • Gambar dengan pengulangan tiga kali lipat
  • Aturan menggambar dengan 50 gerakan

Aturan lima puluh langkah dalam catur menyatakan bahwa seorang pemain dapat mengklaim hasil imbang jika tidak ada tangkapan yang dilakukan dan tidak ada bidak yang dipindahkan dalam lima puluh langkah terakhir (untuk tujuan ini, "langkah" terdiri dari seorang pemain yang menyelesaikan giliran mereka diikuti oleh lawan menyelesaikan giliran mereka).

Anda dapat mendengar robot berbicara dalam video singkat "pasangan bodoh" di atas (jika Anda menaikkan suara Anda cukup tinggi)!

Langkah 6: Cara Mendapatkan Perangkat Lunak

1. Ikan Ternak

Jika Anda menjalankan Raspbian di RPi Anda, Anda dapat menggunakan mesin Stockfish 7 - gratis. Lari saja:

sudo apt-get install stockfish

2. Papan Catur.py

Dapatkan ini di sini.

3. Kode berdasarkan

Dilengkapi dengan kode saya.

4. Driver Python untuk BrickPi3:

Dapatkan ini di sini.

5. Kode saya yang memanggil semua kode di atas dan yang membuat robot bergerak, dan kode penglihatan saya.

Dapatkan ini dari saya dengan memposting komentar, dan saya akan merespons.

Direkomendasikan: