Isi kandungan:

Robot Kekacauan Pembelajaran Kendiri: 3 Langkah
Robot Kekacauan Pembelajaran Kendiri: 3 Langkah

Video: Robot Kekacauan Pembelajaran Kendiri: 3 Langkah

Video: Robot Kekacauan Pembelajaran Kendiri: 3 Langkah
Video: Praktek Pengendali Sistem Robotik kelas XI ELIN semester 3 KD 4.1 2024, November
Anonim
Robot Kekacauan Pembelajaran Kendiri
Robot Kekacauan Pembelajaran Kendiri

Adakah anda berminat dengan pembelajaran mesin, robot AI och? Anda tidak perlu bekerja di universiti mewah. Ini adalah gambaran mengenai robot kacau saya. Ini adalah robot yang sangat sederhana untuk menunjukkan bagaimana menggunakan kod pembelajaran kendiri dan bagaimana menerapkannya ke dalam platform arduino, dalam hal ini Arduino dijelaskan. Ia adalah platform yang sangat murah!

Kod tersebut mengembangkan robot sehingga robot belajar merangkak. Ia mendapat maklum balas dari tetikus yang tersembunyi di belakang. Kodnya adalah "genetik". Ini bermaksud bahawa sebilangan individu diuji dan yang terbaik disimpan dan akan mengandung bayi. Ini bermaksud bahawa kod tersebut berkembang secara evolusi.

Langkah 1: Perkakasan AKA the Robot

Perkakasan AKA the Robot
Perkakasan AKA the Robot
Perkakasan AKA the Robot
Perkakasan AKA the Robot
Perkakasan AKA the Robot
Perkakasan AKA the Robot

Awak perlu:

- 1 Arduino Berakhir

- 8 mikroservos

- 1 tetikus PS / 2

- 1 pengubah tahap

- beberapa varian pelindung sensor atau yang serupa, saya bosan dengan pelindung sensor dan mengimpal pelindung saya.

-kawat

- bekalan kuasa 5V luaran untuk servo

- beberapa kepingan logam sekerap, beberapa gam dan beberapa benang keluli. Dan pita!

Oleh itu, letakkan Due di lantai. Letakkan servo di cincin di sekelilingnya. Satukan dengan logam sekerap, gam dan benang. Ini adalah bahagian kekacauan! Oleh kerana reka bentuknya huru-hara, tidak dapat diramalkan untuk menentukan cara bergerak untuk membuatnya merangkak. Inilah sebabnya mengapa kod pembelajaran kendiri adalah cara yang tepat!

Petua: gunakan beberapa bahagian logam yang cukup berat, memudahkan robot bergerak.

Sambungkan servo dengan sewajarnya, sekiranya saya disambungkan ke D39, 41, 43, 45, 47, 49, 51, 53.

Sambungkan servo ke bekalan kuasa 5V luaran. Untuk ini, bina semacam perisai, atau gunakan pelindung sensor atau yang serupa. JANGAN memberi makan servo dari pin 5V yang dikenakan, itu tidak mencukupi, Due akan terbakar. Saya menggunakan papan prototaip kecil untuk mengedarkan 5 V ke semua servos. Papan ini juga memegang pengubah tahap untuk jam tetikus dan garis data PS / 2. Papan juga memberi makan tetikus dengan 5V. Ingatlah, sambungkan tanah dari kuasa luaran ke Arduino. skema menunjukkan cara menghubungkan semuanya.

Sambungkan PS / 2 ke kuasa (5V) dan arde. Sambungkan jam dan garis data PS / 2 ke Hutang melalui pergeseran tahap. (jatuh tempo 3.3V, PS / 2 pergi 5V). Sambungkan jam pada D12 dan data pada D13.

Untuk perincian mengenai protokol PS / 2, ini adalah arahan yang sangat baik:

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

Perpustakaan PS / 2 oleh jazzycamel yang telah saya gunakan:

Langkah 2: Kodnya

Kod tersebut
Kod tersebut

Pada mulanya saya katakan: Saya BUKAN pengaturcara. Beberapa bahagian sangat luas, seorang pengaturcara yang mahir tentu saja dapat memendekkannya dan begitu dan seterusnya.

Kodnya adalah pembelajaran sendiri dan ini adalah teras projek. Ini adalah bahagian yang menyeronokkan! Ini bermaksud bahawa robot itu berkembang dan menjadi lebih baik dan lebih baik, dalam hal ini ia menjadi lebih baik dalam merangkak. Perkara yang mengagumkan ialah robot akan berkembang menjadi apa sahaja yang anda beri. Dalam kes ini, ia menyeret tetikus PS / 2 dan semakin lama tetikus diseret, semakin tinggi mata.

Ini juga bermaksud bahawa anda boleh menggunakan kod ini untuk melatih robot anda melakukan sesuatu yang lain, selagi ia diukur dan dimasukkan kembali ke robot!

Seperti yang anda lihat dalam gambar, tetikus diseret pada tali nipis. Pada mulanya ia diseret pada kabel tetikus. Namun, kabelnya agak kaku, jadi robot belajar menggoyangkan tetikus, bukannya menyeretnya. Gegaran menghasilkan titik tinggi …

Kod tersebut menggunakan 50 individu. Inti dari ini adalah susunan 50x50 bait.

Individu adalah sebilangan bait. Apabila individu digunakan untuk menjalankan robot, individu ini akan dikirim ke fungsi dalam kod yang disebut "tolken".

Pada permulaan larian terdapat 8 pemboleh ubah m1, m2, m3, m4, m5, m6, m7 dan m8 (satu untuk setiap servo). Dalam robot ini mereka semua mempunyai nilai permulaan yang tetap. Dalam "tolken" mś diubah dalam gelung case / swich bergantung pada nilai-nilai individu. sebagai contoh nilai "1" melaksanakan perkara berikut: m1 = m1 + m2.

Sekiranya seseorang adalah: 1, 2, 3, 0, 0, 0, 0….. maka mś akan berubah dengan cara berikut:

m1 = m1 + m2;

m1 = m1 + m3;

m1 = m1 + m4;

Tolken adalah senarai 256 operasi matematik yang berbeza, jadi setiap kemungkinan nilai array individu mewakili perubahan matematik dari nilai m.

Proses tolken dilakukan sebanyak 4 kali, dengan pembacaan antara setiap pusingan, menghasilkan empat kod motor yang berbeza untuk setiap "m". Motor adalah nilai yang kemudian dihantar ke servo.

Dalam setiap langkah evolusi, 4 individu bersaing dalam merangkak. Dua individu terbaik akan menjadi ibu bapa kepada dua bayi, bayi akan menggantikan dua individu terburuk. Apabila bayi dibuat, potongan "kod genetik" dari satu ibu bapa diperdagangkan untuk potongan dari ibu bapa yang lain, ini akan menghasilkan dua individu baru.

Sekiranya tidak ada individu yang melakukan sama sekali, mutasi individu akan berlaku untuk menghasilkan yang baru.

Anda boleh mendapatkan kod di GitHub:

Langkah 3: Bagaimana Melatihnya?

Ini adalah bahagian yang sukar. Untuk melatih dengan betul, anda perlu "menetapkan semula" selepas setiap larian. Ini bermaksud bahawa anda mesti meletakkannya pada kedudukan yang sama setiap masa.

Saya telah meletakkan beberapa titik pemeriksaan di dalam kod tersebut untuk memastikan bahawa robot berada di kedudukan awal.

Oleh itu, sejajarkan robot dan biarkan ia berjalan.

Ia menguji 4 individu dan kemudian memilih 2 yang terbaik untuk menjadi ibu bapa. Setelah menggantikan yang terburuk dengan bayi, ia mencetak beberapa data mengenai prestasi individu. Ia juga mencetak susunan 50x50. Adalah bijak untuk menyalinnya ke lembaran excel atau yang serupa. (atau tuliskan beberapa kod keperluan dalam pemprosesan) Sekiranya Hutang diset semula (ini berlaku dengan pelbagai sebab) anda tidak akan kehilangan kerja latihan anda. Anda boleh menyalin / menampal susunan ke dalam kod dan terus berlatih sekiranya anda tinggal.

Robot saya belajar merangkak setelah beberapa jam. Muat turun video untuk melihatnya merangkak. Ia tidak mengikut arah yang saya sangka!

Cuba juga lantai yang berbeza! Robot saya menunjukkan prestasi terbaik di permaidani nilon.

Kemungkinan peningkatan:

1. Lebih baik mempunyai nano yang terpisah untuk membaca tetikus PS / 2, dan mengirim jarak yang diproses dipindahkan secara bersiri ke nano. Pembacaan tetikus PS / 2 saya agak goyah. Ini adalah sebab tetikus membaca / membersihkan bahagian kod.

2. semacam rigg ujian yang menyeret robot kembali ke kedudukan awalnya akan mempercepat latihan.

3. Saya fikir adalah bijak untuk melatihnya sedikit lebih perlahan daripada yang saya lakukan. Latihan yang lebih perlahan memastikan bahawa ia dilatih "ke arah yang betul". Prestasi rata-rata beberapa ujian boleh menjadi cara yang mungkin.

Disyorkan: