Cuprins:

Robot haotic de auto-învățare: 3 pași
Robot haotic de auto-învățare: 3 pași

Video: Robot haotic de auto-învățare: 3 pași

Video: Robot haotic de auto-învățare: 3 pași
Video: CHESTIONARE AUTO PROFESIONISTI - CATEGORIA C 2024, Iulie
Anonim
Robot haotic de auto-învățare
Robot haotic de auto-învățare

Ești interesat de învățarea automată, AI și roboții? Nu trebuie să lucrați la o universitate de lux. Aceasta este o descriere a robotului meu haotic. Este un robot foarte simplu pentru a demonstra cum să utilizați codul de auto-învățare și cum să-l implementați într-o platformă arduino, în acest caz un Arduino datorat. Este o platformă foarte ieftină!

Codul evoluează robotul astfel încât robotul să învețe să se târască. Obține feedback de la mouse-ul care este tras în spate. Codul este „genetic”. Aceasta înseamnă că o serie de persoane sunt testate, iar cele mai bune sunt păstrate și vor avea copii. Aceasta înseamnă că codul evoluează într-un mod evolutiv.

Pasul 1: Hardware AKA Robotul

Hardware AKA Robotul
Hardware AKA Robotul
Hardware AKA Robotul
Hardware AKA Robotul
Hardware AKA Robotul
Hardware AKA Robotul

Ai nevoie:

- 1 Arduino Due

- 8 microservuri

- 1 mouse PS / 2

- 1 nivel de schimbare

- vreo variantă a unui ecran-senzor sau similar, m-am săturat de ecranul senzorului și am sudat-o pe a mea.

-fire

-alimentare externa de 5V pentru servomotoare

- unele bucăți de fier vechi, unele lipici și câteva fire de oțel. Și bandă!

Așa că puneți Due pe podea. Puneți servoanele într-un inel în jurul său. Puneți-le împreună cu fier vechi, lipici și fir. Aceasta este partea haosului! Deoarece este haotic în designul său, este imprevizibil să stabiliți cum să vă mișcați pentru a face să se târască. Acesta este motivul pentru care codul de auto-învățare este calea de urmat!

Sfaturi: utilizați câteva piese metalice destul de grele, facilitează deplasarea robotului.

Conectați servomotoarele la scadență, în cazul meu sunt conectate la D39, 41, 43, 45, 47, 49, 51, 53.

Conectați servomotoarele la sursa de alimentare externă de 5V. Pentru aceasta, construiți un fel de scut sau utilizați un scut pentru senzori sau similar. NU alimentați servomotoarele de la pinul de 5V, nu este suficient, datorită va arde. Am folosit o mică placă prototip pentru a distribui 5 V tuturor servo-urilor. Această placă deține, de asemenea, schimbătorul de nivel pentru ceasul mouse-ului PS / 2 și liniile de date. De asemenea, placa alimentează mouse-ul cu 5V. Nu uitați să conectați masa de la sursa de alimentare externă la Arduino! schemele arată cum să le conectați pe toate.

Conectați PS / 2 la alimentare (5V) și la masă. Conectați ceasul și linia de date a PS / 2 la Due printr-un schimbător de nivel. (termenul scade este de 3,3V, PS / 2 merge 5V). Conectați ceasul pe D12 și datele pe D13.

Pentru detalii despre protocolul PS / 2, acesta este un instructiv foarte bun:

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

Biblioteca PS / 2 de jazzycamel pe care am folosit-o:

Pasul 2: Codul

Codul
Codul

La început lasă-mă să spun: NU sunt programator. Unele părți sunt foarte extinse, un programator priceput ar putea, desigur, să le scurteze, așa și așa.

Codul este autoînvățarea și acesta este nucleul proiectului. Aceasta este partea distractivă a acestuia! Înseamnă că robotul evoluează și devine din ce în ce mai bun, în acest caz devine mai bun la accesarea cu crawlere. Lucrul uimitor la acest lucru este că robotul va evolua către ceea ce vreodată îl veți alimenta. În acest caz, trage un mouse PS / 2 și cu cât mouse-ul este mai lung, cu atât punctele sunt mai ridicate.

Acest lucru înseamnă, de asemenea, că puteți utiliza acest cod pentru a vă antrena robotul și faceți altceva, atâta timp cât acesta este măsurat și alimentat înapoi la robot!

După cum puteți vedea în imagini, mouse-ul este tras pe un cablu subțire. La început a fost tras în cablul mouse-ului. Cu toate acestea, cablul este cam rigid, astfel încât robotul a învățat să scuture mouse-ul, în loc să-l tragă. Scuturarea a produs puncte culminante …

Codul folosește 50 de persoane. Nucleul acestui lucru este o matrice de 50x50 octeți.

O persoană este o serie de octeți. Când individul este folosit pentru a rula robotul, acest individ este trimis la o funcție din codul numit „tolken”.

La începutul unei runde există 8 variabile m1, m2, m3, m4, m5, m6, m7 și m8 (una pentru fiecare servo). În acest robot, toți au valori de pornire constante. În „tolken”, mś sunt transformate într-o bucată de carcasă / swich, în funcție de valorile individului. de exemplu o valoare „1” execută următoarele: m1 = m1 + m2.

Dacă o persoană este: 1, 2, 3, 0, 0, 0, 0 ….. atunci mś va fi transformat în felul următor:

m1 = m1 + m2;

m1 = m1 + m3;

m1 = m1 + m4;

Tolken este o listă de 256 de operații matematice diferite, astfel încât fiecare valoare posibilă a matricei individuale reprezintă o schimbare matematică a valorilor m.

Procesul tolken se realizează de 4 ori, cu citire între fiecare tură, generând patru coduri motor diferite pentru fiecare „m”. Codurile motor sunt valorile care ulterior sunt trimise la servomotoare.

În fiecare etapă a evoluției, 4 persoane concurează în târâtoare. Cele mai bune două persoane vor fi părinții a doi copii, iar copiii vor înlocui cei doi cei mai răi indivizi. Când se fac bebeluși, o porțiune de „cod genetic” de la un părinte este schimbată cu o felie de la celălalt părinte, ceea ce creează doi noi indivizi.

Dacă nicio persoană nu efectuează deloc, mutația persoanelor va avea loc pentru a genera altele noi.

Puteți găsi codul la GitHub:

Pasul 3: Cum să-l antrenezi?

Aceasta este partea dificilă. Pentru a vă antrena corect, trebuie să îl „resetați” după fiecare alergare. Acest lucru înseamnă că trebuie să îl puneți în aceeași poziție de fiecare dată.

Am pus câteva puncte de verificare în interiorul codului pentru a mă asigura că robotul se află în poziția sa inițială.

Deci, aliniați robotul și lăsați-l să ruleze.

Testează 4 persoane și apoi alege cele mai bune 2 pentru a fi părinți. După înlocuirea celui mai rău cu bebelușii, acesta imprimă câteva date despre performanța persoanelor. De asemenea, imprimă matricea 50x50. Este înțelept să copiați acest lucru într-o foaie Excel sau similar. (sau scrieți un cod de nevoie în procesare) Dacă restabilirea datorată (acest lucru se întâmplă din diferite motive), atunci nu vă veți pierde munca de formare. Puteți copia / lipi matricea în cod și puteți continua antrenamentul dacă ați rămas.

Robotul meu a învățat să se târască după câteva ore. Descărcați videoclipul pentru a-l vizualiza cu crawlere. Nu a mers în direcția în care credeam că va merge!

Încercați, de asemenea, diferite etaje! Robotul meu a funcționat cel mai bine pe un covor de nailon.

Posibile îmbunătățiri:

1. Ar fi mai bine să aveți un nano separat pentru a citi mouse-ul PS / 2 și să trimiteți distanța procesată mutată pe serial către nano. Citirea mouse-ului meu PS / 2 este cam tremurată. Acesta este motivul pentru care mouse-ul citește / șterge părți ale codului.

2. un fel de dispozitiv de testare care a tras robotul înapoi la poziția sa inițială ar accelera antrenamentul.

3. Cred că este înțelept să îl antrenez puțin mai încet decât am făcut-o. Antrenamentul mai lent asigură că este antrenat „în direcția corectă”. Performanța medie a mai multor teste ar putea fi o modalitate posibilă.

Recomandat: