Sadržaj:

Hawking Bot: 5 koraka
Hawking Bot: 5 koraka

Video: Hawking Bot: 5 koraka

Video: Hawking Bot: 5 koraka
Video: Призрак (фильм) 2024, Novembar
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 okolinu brzim 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:

Image
Image

Kôd za Hawking Bota je sav napisan na pythonu 3. Datoteka slike koja se može pokrenuti za pokretanje pythona u Debian Linux okruženju na Hawking Botu može se preuzeti sa web stranice ev3dev. Kôd za pokretanje Hawking Bota možete preuzeti ovdje. Sav kôd se 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čunara, ipak će biti korisno steći općenito razumijevanje procesa. Ovo je rad u toku. Ultrazvučni senzor je ponekad nepouzdan i to zahtijeva pametniji kôd za otkrivanje "izvanrednih vrijednosti". Volio bih vidjeti doprinose drugih kako bi kod učinio efikasnijim i manje sklonim greškama.

Korak 3: Napravite vlastite Hawkingove zvučne zalogaje

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.

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

Ispod ć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 kablovi spojeni i da je baterija dovoljna. Labave, nedostajuće ili čak oštećene veze mogu se lako pojaviti. 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.

Kretanje glave prevlačenjem neophodno je da Hawking Bot skenira svoj teren i pronađe najduži neometani put ispred sebe. Kabelima je potrebno dovoljno prostora za prilagođavanje pokreta glave; stoga je preporučljivo da ih povežete kao što je prikazano na fotografiji.

Hawking Bot najbolje radi s velikim preprekama i na ravnoj i glatkoj površini. Tepisi su veći izazov 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 različite metode rade. Različiti bitovi su komentirani s #, ako uklonite # ispred 'print', pokrenuti program će vam pokazati različita očitanja senzora i prorač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ši nivo. Mogli biste poboljšati metodu MotionDetector. Trenutno tako često dolazi do pogrešnog čitanja. Stvarna očitanja možete vidjeti tako što ćete dekomentirati disA i disB (pri dnu bloka metode). Pogrešno čitanje obično se izdvaja od ostalih očitanja pa biste mogli napisati algoritam koji će spriječiti robota da reagira 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 lakši pristup bio bi pronaći mjesto gdje infracrveni senzor može preuzeti kontrolu nad Hawking Botom.

Šta je sa učenjem robota 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 upotreba Lego EV3 MINDSTORMS kompleta bez potrebe za kupovinom mnogih skupih dodatnih komada osim ultrazvučnog senzora.

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

Učenje o pojačanju 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 su nepotpuna pa će biti ispunjena nulama. Svaki unos sadrži vrijednost udaljenosti od USS -a. Ovo je vektor stanja s. Sistem omogućava 1000 unosa. Nakon toga će se najstariji unos zamijeniti, a unosi u dobi za svaki s-r par smanjiti za jedan.

Robot ne smije biti bliže od 10 cm predmetu. Ovo stvara negativnu nagradu. Radi jednostavnosti; dobre radnje se nagrađuju s 1, a loše s 0. Ustvari, ovo stvara vjerovatnoću nagrade za svaku kombinaciju stanja-radnje. Koristit ćemo diskontirane nagrade i epsilon pohlepnu politiku.

Ovo stvara 3 velike tablice stanja prema unaprijed (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 akcija 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 i izvršavanje 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. Preveliki t znači da se čak i prilično različita stanja spajaju zajedno što može 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 bi trebalo uložiti napor. Sretno!

Preporučuje se: