Daftar Isi:

Robot Chaotic belajar mandiri: 3 Langkah
Robot Chaotic belajar mandiri: 3 Langkah

Video: Robot Chaotic belajar mandiri: 3 Langkah

Video: Robot Chaotic belajar mandiri: 3 Langkah
Video: UNBOXING ROBOT MIKO 3 TERBARU YANG HARGANYA 4.6 JUTA! 2024, Desember
Anonim
Robot Chaotic belajar mandiri
Robot Chaotic belajar mandiri

Apakah Anda tertarik dengan pembelajaran mesin, robot AI och? Anda tidak perlu bekerja di universitas mewah. Ini adalah deskripsi robot kacau saya. Ini adalah robot yang sangat sederhana untuk menunjukkan bagaimana menggunakan kode belajar mandiri dan bagaimana menerapkannya ke dalam platform arduino, dalam hal ini Arduino jatuh tempo. Ini adalah platform yang sangat murah!

Kode mengembangkan robot sehingga robot belajar merangkak. Ia mendapat umpan balik dari mouse yang diseret ke belakang. Kodenya adalah "genetik". Artinya, sejumlah individu diuji dan yang terbaik disimpan dan akan memiliki anak. Ini berarti bahwa kode berkembang secara evolusioner.

Langkah 1: Perangkat Keras AKA Robot

Perangkat Keras AKA Robot
Perangkat Keras AKA Robot
Perangkat Keras AKA Robot
Perangkat Keras AKA Robot
Perangkat Keras alias Robot
Perangkat Keras alias Robot

Anda membutuhkan:

- 1 Arduino Due

- 8 mikroservo

- 1 PS/2 mouse

- 1 pengubah level

- beberapa varian pelindung sensor atau sejenisnya, saya bosan dengan pelindung sensor dan mengelasnya sendiri.

-kabel

- catu daya 5V eksternal untuk servos

- beberapa potongan besi tua, beberapa lem dan beberapa benang baja. Dan rekaman!

Jadi letakkan Due di lantai. Letakkan servo di dalam cincin di sekelilingnya. Satukan dengan besi tua, lem, dan benang. Ini adalah bagian kekacauan! Karena desainnya kacau, tidak dapat diprediksi untuk menentukan bagaimana bergerak untuk membuatnya merangkak. Inilah sebabnya mengapa kode belajar mandiri adalah cara yang tepat!

Tips: gunakan beberapa bagian logam yang cukup berat, untuk memudahkan robot bergerak.

Hubungkan servos ke due, dalam kasus saya mereka terhubung ke D39, 41, 43, 45, 47, 49, 51, 53.

Hubungkan servos ke catu daya 5V eksternal. Untuk ini, buat semacam pelindung, atau gunakan pelindung sensor atau sejenisnya. JANGAN memberi makan servos dari pin iuran 5V, itu tidak cukup, Karena akan terbakar. Saya menggunakan papan prototipe kecil untuk mendistribusikan 5 V ke semua servos. Papan ini juga memegang shifter level untuk jam mouse PS/2 dan jalur data. Papan juga memberi makan mouse dengan 5V. Ingat hubungkan ground dari daya eksternal ke Arduino karena ground! skema menunjukkan bagaimana menghubungkan semuanya.

Hubungkan PS/2 ke daya (5V) dan ground. Hubungkan jam dan jalur data PS/2 ke Due melalui pemindah level. (karena berjalan 3.3V, PS/2 berjalan 5V). Hubungkan jam di D12 dan data di D13.

Untuk detail tentang protokol PS/2, ini adalah instruksi yang sangat bagus:

www.instructables.com/id/Optical-Mouse-Od…

Pustaka PS/2 oleh jazzycamel yang saya gunakan:

Langkah 2: Kode

Kode
Kode

Pada awalnya izinkan saya mengatakan: Saya BUKAN seorang programmer. Beberapa bagian sangat luas, seorang programmer yang terampil tentu saja dapat mempersingkatnya dan ini dan itu.

Kodenya adalah pembelajaran mandiri dan ini adalah inti dari proyek ini. Ini adalah bagian yang menyenangkan! Artinya robot berkembang dan menjadi lebih baik dan lebih baik, dalam hal ini semakin baik dalam merangkak. Hal yang menakjubkan tentang ini adalah bahwa robot akan berevolusi menjadi apa pun yang Anda berikan umpan balik. Dalam hal ini ia menyeret mouse PS/2 dan semakin lama mouse diseret, semakin tinggi poin yang didapat.

Ini juga berarti bahwa Anda dapat menggunakan kode ini untuk melatih robot Anda melakukan sesuatu yang lain, selama itu diukur dan diumpankan kembali ke robot!

Seperti yang Anda lihat pada gambar, mouse diseret pada kabel tipis. Awalnya diseret di kabel mouse. Namun, kabelnya agak kaku, jadi robot itu belajar menggoyang mouse, bukan menyeretnya. Gemetar menghasilkan poin tinggi …

Kode menggunakan 50 individu. Inti dari ini adalah array 50x50 byte.

Individ adalah array byte. Ketika individ digunakan untuk menjalankan robot, individ ini dikirim ke fungsi dalam kode yang disebut "tolken".

Pada awal lari ada 8 variabel m1, m2, m3, m4, m5, m6, m7 dan m8 (satu untuk setiap servo). Dalam robot ini mereka semua memiliki nilai awal yang konstan. Dalam "tolken" mś ditransformasikan dalam loop case/swich tergantung pada nilai individ. misalnya nilai "1" mengeksekusi yang berikut: m1 = m1 + m2.

Jika suatu bilangan adalah: 1, 2, 3, 0, 0, 0, 0….. maka mś akan ditransformasikan sebagai berikut:

m1 = m1 + m2;

m1 = m1 + m3;

m1 = m1 + m4;

Tolken adalah daftar 256 operasi matematika yang berbeda, jadi setiap nilai yang mungkin dari array individ mewakili perubahan matematis dari nilai m.

Proses tolken dilakukan 4 kali, dengan pembacaan antara setiap putaran, menghasilkan empat kode motor yang berbeda untuk setiap "m". Kode motor adalah nilai yang kemudian dikirim ke servos.

Dalam setiap langkah evolusi, 4 individu bersaing dalam merangkak. Dua individu terbaik akan menjadi orang tua dari dua bayi, bayi akan menggantikan dua individu terburuk. Ketika bayi dibuat, sebuah sambatan "kode genetik" dari satu orang tua ditukar dengan sepotong dari orang tua lainnya, ini menciptakan dua individ baru.

Jika tidak ada individ yang tampil sama sekali, maka akan terjadi mutasi individ untuk menghasilkan individ baru.

Anda dapat menemukan kodenya di GitHub:

Langkah 3: Bagaimana Melatihnya?

Ini adalah bagian yang sulit. Untuk berlatih dengan benar, Anda perlu "mengatur ulang" setelah setiap lari. Ini berarti Anda harus meletakkannya di posisi yang sama setiap saat.

Saya telah menempatkan beberapa titik pemeriksaan di dalam kode untuk memastikan bahwa robot berada di posisi awal.

Jadi sejajarkan robot dan biarkan berjalan.

Ini menguji 4 individu dan kemudian memilih 2 yang terbaik untuk menjadi orang tua. Setelah mengganti yang terburuk dengan bayi, ia mencetak beberapa data tentang kinerja individu. Itu juga mencetak larik 50x50. Adalah bijaksana untuk menyalin ini ke dalam lembar excel atau sejenisnya. (atau tulis beberapa kode kebutuhan dalam pemrosesan) Jika Due me-reset (ini terjadi karena berbagai alasan), Anda tidak akan kehilangan pekerjaan pelatihan Anda. Anda dapat menyalin/menempelkan array ke dalam kode dan terus berlatih jika Anda ditinggalkan.

Robot saya belajar merangkak setelah beberapa jam. Unduh video untuk melihatnya merangkak. Itu tidak pergi ke arah yang saya pikir akan!

Coba juga lantai yang berbeda! Robot saya tampil paling baik di atas karpet nilon.

Kemungkinan peningkatan:

1. Akan lebih baik untuk memiliki nano terpisah untuk membaca mouse PS/2, dan mengirim jarak yang diproses dipindahkan secara serial ke nano. Pembacaan mouse PS/2 saya agak goyah. Ini adalah alasan mouse membaca/menghapus bagian kode.

2. semacam alat uji yang menyeret robot kembali ke posisi awal akan mempercepat pelatihan.

3. Saya pikir adalah bijaksana untuk melatihnya sedikit lebih lambat daripada yang saya lakukan. Pelatihan yang lebih lambat memastikan bahwa itu dilatih "ke arah yang benar". Kinerja rata-rata dari beberapa uji coba bisa menjadi cara yang memungkinkan.

Direkomendasikan: