Cuprins:

Hawking Bot: 5 pași
Hawking Bot: 5 pași

Video: Hawking Bot: 5 pași

Video: Hawking Bot: 5 pași
Video: Stephen Hawking's 5 Biggest Contributions To Science | Answers With Joe 2024, Iulie
Anonim
Image
Image
Construiește-ți botul Hawking
Construiește-ți botul Hawking

Hawking Bot este un proiect Lego MINDSTORMS EV3 inspirat de regretatul Stephen Hawking. Stephen Hawking avea un bun simț al umorului, așa că sunt sigur că ar fi aprobat acest proiect. Botul Hawking poate naviga în jurul obstacolelor și răspunde la mișcări și apoi pronunță una dintre celebrele mușcături de sunet ale lui Stephen Hawking și se mișcă în direcția obiectului în mișcare. Folosește senzorul cu ultrasunete care își scanează mediul cu o mișcare a capului.

Pasul 1: Construiește-ți botul Hawking

Toate piesele necesare se află în setul de bază EV3 Lego MINDSTORMS, cu excepția senzorului cu ultrasunete (ochii lui) care trebuie achiziționat separat.

Pasul 2:

Imagine
Imagine

Codul pentru Hawking Bot este scris în python 3. Un fișier de imagine bootabil pentru a rula python într-un mediu Debian Linux de pe Hawking Bot poate fi descărcat de pe site-ul web ev3dev. Codul pentru a rula Hawking Bot poate fi descărcat de aici. Tot codul este conținut într-un fișier de clasă, astfel încât să puteți utiliza metodele existente sau chiar să le modificați dacă doriți.

Vă rugăm să urmăriți acest videoclip cu instrucțiuni detaliate despre cum să configurați Debian Linux și Python3 pe robotul dvs. Deși acest lucru este specific pentru o configurare Mac, va fi util să obțineți o înțelegere generală a procesului. Aceasta este o lucrare în curs. Senzorul cu ultrasunete este uneori nesigur și acest lucru necesită un cod mai inteligent pentru a detecta „valorile aberante”. Aș dori să văd contribuțiile celorlalți pentru a face codul mai eficient și mai puțin predispus la erori.

Pasul 3: Creați-vă propriile sunete Hawking

OK, acum vrei să ai niște citate celebre sau doar câteva cuvinte simple de la Prof Hawking. Există o mulțime de videoclipuri în care îl poți auzi vorbind și apoi sunt prelegerile sale, care sunt o comoară a înțelepciunii și mușcături de sunet utile.

Aveți nevoie de un program precum Audacity care funcționează pe multe platforme pentru a selecta și a tăia sunetele dvs. preferate.

Salvați sunetul dvs. ca fișier wav mono ca SH6, SH7, … SH11, SH12 și așa mai departe.

Mai jos găsiți câteva exemple pe care le-am creat conform metodei de mai sus.

Pasul 4: Sfaturi și trucuri

Sfaturi și trucuri
Sfaturi și trucuri
Sfaturi și trucuri
Sfaturi și trucuri

Hawking Bot vine cu un modul de auto-verificare pentru a se asigura că toate cablurile sunt conectate și că bateria este suficientă. Conexiunile libere, lipsă sau chiar deteriorate pot apărea cu ușurință. Deci, acest modul este foarte util. Metoda „checkConnection” verifică numai dacă există o conexiune electrică. Trebuie să vă asigurați în continuare că motoarele sunt conectate la portul corect.

Mișcarea glisării capului este esențială pentru ca Hawking Bot să-și scaneze terenul și să găsească cea mai lungă cale neobstrucționată din față. Cablurile au nevoie de suficient spațiu pentru a acomoda mișcările capului; prin urmare, este recomandabil să le legați așa cum se arată pe fotografie.

Hawking Bot funcționează cel mai bine cu obstacole mari și pe o suprafață plană și netedă. Covoarele sunt mai provocatoare pentru motoare și poate fi necesar să reglați setările pentru a regla comportamentul pentru diferite suprafețe.

Hawking Bot nu este nicidecum perfect și acesta este un prototip care va beneficia de îmbunătățiri suplimentare. Codul este complet comentat și ar trebui să vă fie ușor să aflați ce fac diferitele metode. Au fost comentate diverse biți cu #, dacă eliminați # în fața „print”, programul care rulează vă va arăta diferitele citiri și calcule ale senzorilor.

Pasul 5: îmbunătățiri sugerate, actualizări și idei viitoare

Acum, că v-ați construit cu succes robotul, doriți să îl duceți la nivelul următor. Ați putea îmbunătăți metoda MotionDetector. În acest moment, de foarte multe ori se citește greșit. Puteți vedea citirile reale descomentând disA și disB (în partea de jos a blocului de metode). Citirea greșită iese în evidență de la alte lecturi, astfel încât să puteți scrie un algoritm pentru a opri robotul să răspundă la o lectură greșită.

Poate doriți să controlați complet robotul și să controlați de la distanță funcțiile sale. Puteți face acest lucru prin Bluetooth și puteți scrie un program Android pentru a comunica cu robotul. Cu toate acestea, o abordare mult mai ușoară ar fi găsirea unui loc unde senzorul infraroșu să preia controlul asupra Hawking Bot.

Ce zici de a face robotul să învețe despre mediul său? Acest lucru ar putea fi realizat cu o abordare a vecinului k-cel mai apropiat sau, eventual, cu o rețea neuronală. Cărămida EV3 are o putere de procesare limitată, deși acceptă Numpy. O alternativă ar fi un BrickPi care vă va permite să rulați o bibliotecă AI precum Tensorflow, dar intenția acestui ghid a fost utilizarea kitului Lego EV3 MINDSTORMS fără a fi nevoie să cumpărați multe piese suplimentare scumpe, altele decât senzorul cu ultrasunete.

Cu toate acestea, abordarea de învățare re-infocement a celor mai apropiați vecini k ar trebui să funcționeze pe caramida EV3 și acesta este algoritmul sugerat. Vă las pe voi să găsiți o implementare funcțională sau să detectați orice probleme:

Învățarea întăririi pentru Hawkings Bot

Ideea este că cele 7 citiri USS sunt codificate într-un vector și ultimele 10 swoops-uri sunt utilizate pentru a crea un vector secvențial de 70 de intrări. Primele citiri sunt incomplete, așa că vor fi completate cu zerouri. Fiecare intrare conține valoarea distanței față de USS. Acesta este vectorul de stare s. Sistemul permite 1000 de intrări. Ulterior, cea mai veche intrare va fi înlocuită și intrările de vârstă pentru fiecare pereche s-r vor fi reduse cu una.

Botul nu trebuie să se apropie mai mult de 10 cm de un obiect. Acest lucru creează o recompensă negativă. Pentru simplitate; acțiunile bune sunt recompensate cu 1 și cele rele cu 0. În mod efectiv, acest lucru creează o probabilitate pentru recompensă pentru fiecare combinație acțiune-stare. Vom folosi recompensele reduse și politica epsilon lacomă.

Astfel se creează 3 tabele mari de stare - recompensă (s-r) pentru toate cele trei acțiuni dreapta, dreapta înainte și stânga - poate fi posibil să aveți viteze rapide și lente pentru fiecare acțiune. Am avea apoi 6 acțiuni și 6 tabele de căutare s-r.

De fiecare dată când se înregistrează o nouă stare, este comparată cu tabelele, distanța euclidiană (sau o măsură similară) este utilizată pentru a găsi cel mai apropiat vecin. Acest lucru nu va fi clasat, ci mai degrabă un prag t este setat pentru a accepta starea ca foarte asemănătoare, suprascrie starea existentă și actualizați pentru cea mai mare recompensă și efectuați acțiunea asociată a. Dacă nu este similar (d> t) introduceți o nouă pereche s-r pentru fiecare acțiune a. Dacă există o legătură între acțiuni pentru s-r (toate au aceeași recompensă) alegeți aleatoriu, dar acest lucru nu este comun și ar putea fi omis.

t va trebui determinat experimental, dacă t este prea mic, stările similare vor fi ignorate și fiecare stare va fi văzută ca fiind unică. Prea mare înseamnă că chiar și stări destul de diferite sunt reunite, ceea ce ar putea afecta capacitatea de a alege acțiuni bune. Poate fi posibil să se utilizeze metode statistice pentru a determina cel mai bun t.

Tabelul arată așa ceva: Nu intrare - Vector de stat - recompensă pentru acțiunea 1 - recompensă pentru acțiunea 2 - recompensă pentru acțiunea 3.

Presupun că implementarea reală va fi dificilă, dar ar trebui să depășească efortul. Noroc!

Recomandat: