Sadržaj:

Hawking Bot: 5 koraka
Hawking Bot: 5 koraka

Video: Hawking Bot: 5 koraka

Video: Hawking Bot: 5 koraka
Video: Stephen Hawking's Famous Speech. 2024, Srpanj
Anonim
Image
Image
Napravite svog Hawking Bota
Napravite svog Hawking Bota

Hawking Bot je Lego MINDSTORMS EV3 projekt inspiriran pokojnim Stephenom Hawkingom. Stephen Hawking je imao dobar smisao za humor pa sam siguran da bi odobrio ovaj projekt. Hawking Bot se može kretati oko prepreka i reagirati na pokrete, a zatim izgovoriti jedan od poznatih zvučnih zapisa Stephena Hawkinga i kretati se u smjeru objekta u pokretu. Koristi ultrazvučni senzor koji skenira svoje okruženje zamašnim pokretom glave.

Korak 1: Izgradite svog Hawking Bota

Svi potrebni dijelovi nalaze se u osnovnom EV3 Lego MINDSTORMS kompletu, osim ultrazvučnog senzora (njegovih očiju) koji se mora kupiti zasebno.

Korak 2:

Slika
Slika

Kôd za Hawking Bota sav je napisan na pythonu 3. Slikovna datoteka za pokretanje za pokretanje pythona u Debian Linux okruženju na Hawking Botu može se preuzeti s web stranice ev3dev. Kôd za pokretanje Hawking Bota možete preuzeti ovdje. Sav se kôd nalazi u datoteci klase pa možete koristiti postojeće metode ili ih čak izmijeniti ako želite.

Pogledajte ovaj video s detaljnim uputama o tome kako postaviti Debian Linux i Python3 na svog robota. Iako je ovo posebno za postavljanje Mac računala, ipak će biti korisno steći općenito razumijevanje procesa. Ovo je rad u tijeku. Ultrazvučni senzor ponekad je nepouzdan i to zahtijeva pametniji kôd za detekciju "izvanrednih vrijednosti". Volio bih vidjeti doprinose drugih kako bi kod učinio učinkovitijim i manje sklonim pogreškama.

Korak 3: Napravite vlastite Hawkingove zvučne udjele

U redu, sada želite imati neke poznate citate ili samo neke jednostavne izjave profesora Hawkinga. Postoje tone video zapisa na kojima ga možete čuti kako govori, a zatim i njegova predavanja koja su riznica mudrosti i korisnih zvučnih zalogaja.

Potreban vam je program poput Audacity koji radi na mnogim platformama za odabir i izrezivanje vaših omiljenih zvučnih zapisa.

Spremite svoj zvučni zapis kao wav mono datoteku kao SH6, SH7,… SH11, SH12 i tako dalje.

Dolje ćete pronaći nekoliko uzoraka koje sam stvorio prema gore navedenoj metodi.

Korak 4: Savjeti i trikovi

Savjeti i trikovi
Savjeti i trikovi
Savjeti i trikovi
Savjeti i trikovi

Hawking Bot dolazi s modulom za samoprovjeru kako bi se osiguralo da su svi kabeli spojeni i da je baterija dovoljna. Lako se mogu pojaviti labave, nedostajuće ili čak oštećene veze. Stoga je ovaj modul vrlo koristan. Metoda 'checkConnection' provjerava samo postoji li električna veza. I dalje morate osigurati da su motori spojeni na odgovarajući priključak.

Pomicanje glave prevlačenjem bitno je da Hawking Bot skenira svoj teren i pronađe najduži neometan put ispred sebe. Kablovi trebaju dovoljno prostora za prilagođavanje kretnji glave; stoga je poželjno povezati ih zajedno kako je prikazano na fotografiji.

Hawking Bot najbolje radi s velikim preprekama i na ravnoj i glatkoj površini. Tepisi su izazovniji za motore i možda ćete morati prilagoditi postavke kako biste prilagodili ponašanje na različitim površinama.

Hawking Bot nikako nije savršen i ovo je prototip koji će imati koristi od daljnjih poboljšanja. Kôd je potpuno komentiran i trebalo bi vam biti lako shvatiti što razne metode rade. Različiti su bitovi komentirani s #, ako uklonite # ispred 'ispisa', pokrenuti program će vam pokazati različita očitanja senzora i izračune.

Korak 5: Predložena poboljšanja, ažuriranja i buduće ideje

Sada kada ste uspješno izgradili svog robota, želite ga podići na višu razinu. Mogli biste poboljšati metodu MotionDetector. Trenutno tako često dolazi do pogrešnog čitanja. Stvarna očitanja možete vidjeti razkomentiranjem disA i disB (pri dnu bloka metode). Pogrešno čitanje obično se izdvaja od ostalih očitanja pa možete napisati algoritam za zaustavljanje robota u reagiranju na pogrešno očitanje.

Možda želite preuzeti potpunu kontrolu nad robotom i samo daljinski upravljati njegovim različitim funkcijama. To možete učiniti putem Bluetootha i napisati Android program za komunikaciju s robotom. Međutim, mnogo bi lakši pristup bio pronaći mjesto gdje infracrveni senzor može preuzeti kontrolu nad Hawking Botom.

Što je s time da robot nauči o svom okruženju? To se može postići pristupom k-najbližeg susjeda ili eventualno neuronskom mrežom. EV3 cigla ima ograničenu procesorsku snagu iako podržava Numpy. Alternativa bi bila BrickPi koja bi vam omogućila pokretanje AI biblioteke poput Tensorflow -a, ali namjera ovog vodiča bila je korištenje Lego EV3 MINDSTORMS kompleta bez potrebe za kupnjom mnogih skupih dodatnih komada osim ultrazvučnog senzora.

Međutim, pristup učenja k-najbližih susjeda o ponovnom informiranju trebao bi djelovati na EV3 cigli, a to je predloženi algoritam. Na vama je da pronađete radnu implementaciju ili uočite bilo kakve probleme:

Učenje pojačanja za Hawkings Bota

Ideja je da se 7 očitanja USS kodira u vektor, a posljednjih 10 zamaha glave koristi za stvaranje uzastopnog vektora od 70 unosa. Prva očitanja nisu potpuna pa će biti ispunjena nulama. Svaki unos sadrži vrijednost udaljenosti od USS -a. Ovo je vektor stanja s. Sustav omogućuje 1000 unosa. Nakon toga će se najstariji unos zamijeniti, a unosi u dobi za svaki s-r par smanjiti za jedan.

Robot ne smije prići bliže od 10 cm predmetu. Time se stvara negativna nagrada. Za jednostavnost; dobre radnje nagrađuju se s 1, a loše s 0. Učinkovito to stvara vjerojatnost za nagradu za svaku kombinaciju stanja-radnje. Koristit ćemo nagrade s popustom i pohlepnu politiku epsilona.

Time se stvaraju 3 velike tablice stanja s nagradom (s-r) za sve tri radnje desno, ravno naprijed i nalijevo-možda je moguće imati velike i spore brzine za svaku radnju. Tada bismo imali 6 radnji i 6 tražilica s-r tablica.

Svaki put kada se zabilježi novo stanje s uspoređuje se s tablicama, Euklidova udaljenost (ili slična mjera) koristi se za pronalaženje najbližeg susjeda. Ovo neće biti rangirano, već je postavljen prag t za prihvaćanje stanja kao vrlo sličnog, prepisivanje postojećeg stanja i ažuriranje za najveću nagradu te provođenje pridružene radnje a. Ako nije slično (d> t), unesite novi s-r par za svaku radnju a. Ako postoji veza između radnji za za s-r (svi imaju istu nagradu), odaberite nasumično, ali to nije uobičajeno i moglo bi se izostaviti.

t će morati biti eksperimentalno utvrđeno, ako je t premalo, slična stanja će se zanemariti i svako stanje se smatra jedinstvenim. Prevelik t znači da se čak i prilično različita stanja spajaju što bi moglo utjecati na mogućnost odabira dobrih radnji. Možda je moguće koristiti statističke metode za određivanje najboljeg t.

Tablica izgleda otprilike ovako: Unos br. - Vektor stanja - nagrada za akciju 1 - nagrada za akciju 2 - nagrada za akciju 3.

Pretpostavljam da će stvarna implementacija biti zeznuta, ali treba uložiti napor. Sretno!

Preporučeni: