Kazalo:

Hawking Bot: 5 korakov
Hawking Bot: 5 korakov

Video: Hawking Bot: 5 korakov

Video: Hawking Bot: 5 korakov
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Julij
Anonim
Image
Image
Zgradite svojega Hawking Bota
Zgradite svojega Hawking Bota

Hawking Bot je projekt Lego MINDSTORMS EV3, ki ga je navdihnil pokojni Stephen Hawking. Stephen Hawking je imel dober smisel za humor, zato sem prepričan, da bi ta projekt odobril. Hawkingov robot se lahko premika okoli ovir in se odziva na gibe, nato pa izgovori enega od znanih zvokov Stephena Hawkinga in se premakne v smeri premikajočega se predmeta. Uporablja ultrazvočni senzor, ki skenira svoje okolje z velikim premikom glave.

1. korak: Zgradite svojega Hawking Bota

Vsi potrebni deli so v osnovnem kompletu EV3 Lego MINDSTORMS, razen ultrazvočnega senzorja (njegovih oči), ki ga je treba kupiti ločeno.

2. korak:

Slika
Slika

Koda za Hawking Bota je vsa napisana v pythonu 3. Zagonsko slikovno datoteko za zagon pythona v okolju Debian Linux na Hawking Botu lahko prenesete s spletnega mesta ev3dev. Kodo za zagon Hawking Bota lahko prenesete od tukaj. Vsa koda je v datoteki razreda, tako da lahko uporabite obstoječe metode ali jih celo spremenite, če želite.

Oglejte si ta videoposnetek s podrobnimi navodili, kako v svojem robotu nastaviti Debian Linux in Python3. Čeprav je to posebej za nastavitev Mac, bo še vedno koristno, da se splošno razume proces. To delo je v teku. Ultrazvočni senzor je včasih nezanesljiv, kar zahteva pametnejšo kodo za zaznavanje "odstopanj". Rad bi videl prispevke drugih, da bi bila koda učinkovitejša in manj nagnjena k napakam.

3. korak: Naredite svoje zvočne posnetke Hawkinga

V redu, zdaj želite imeti nekaj znanih citatov ali le nekaj preprostih izjav profesorja Hawkinga. Obstaja na tone videoposnetkov, kjer ga lahko slišite govoriti, nato pa njegova predavanja, ki so zakladnica modrosti in uporabnih zvokov.

Potrebujete program, kot je Audacity, ki deluje na številnih platformah za izbiro in izrezovanje vaših najljubših zvočnih posnetkov.

Zvočni zapis shranite kot wav mono datoteko kot SH6, SH7,… SH11, SH12 itd.

Spodaj najdete nekaj vzorcev, ki sem jih ustvaril po zgornji metodi.

4. korak: Nasveti in triki

Namigi in triki
Namigi in triki
Namigi in triki
Namigi in triki

Hawking Bot je opremljen z modulom za samopreverjanje, ki zagotavlja, da so vsi kabli povezani in da je baterija dovolj napolnjena. Lahko pride do ohlapnih, manjkajočih ali celo poškodovanih povezav. Zato je ta modul zelo uporaben. Metoda 'checkConnection' preveri le, če obstaja električna povezava. Še vedno morate zagotoviti, da so motorji priključeni na ustrezna vrata.

Premikanje glave je bistveno, da Hawking Bot skenira svoj teren in poišče najdaljšo neovirano pot. Kabli potrebujejo dovolj prostora za premikanje glave; zato je priporočljivo, da jih povežete skupaj, kot je prikazano na fotografiji.

Hawking Bot najbolje deluje pri velikih ovirah in na ravni in gladki površini. Preproge so za motorje zahtevnejše in morda boste morali prilagoditi nastavitve, da prilagodite obnašanje različnih površin.

Hawking Bot nikakor ni popoln in to je prototip, ki mu bodo koristile nadaljnje izboljšave. Koda je v celoti komentirana in z lahkoto boste ugotovili, kaj različne metode počnejo. Različni kosi so bili komentirani z #, če odstranite # pred 'print', bo program, ki teče, prikazal različne odčitke senzorjev in izračune.

5. korak: Predlagane izboljšave, posodobitve in prihodnje ideje

Zdaj, ko ste uspešno izdelali svojega robota, ga želite dvigniti na naslednjo stopnjo. Metodo MotionDetector lahko izboljšate. Trenutno je tako pogosto napačno branje. Dejanske odčitke si lahko ogledate z razkomentiranjem disA in disB (na dnu bloka metode). Napačno branje običajno izstopa od drugih odčitkov, zato lahko napišete algoritem, s katerim preprečite, da bi se robot odzval na napačno branje.

Morda želite v celoti prevzeti nadzor nad robotom in samo na daljavo upravljati njegove različne funkcije. To lahko storite prek Bluetootha in napišete program Android za komunikacijo z robotom. Vendar bi bil veliko lažji pristop najti mesto, kjer bi infrardeči senzor prevzel nadzor nad Hawking Botom.

Kaj pa, če bi robota spoznali svoje okolje? To bi lahko dosegli s pristopom k-najbližjega soseda ali morda z nevronsko mrežo. Opeka EV3 ima omejeno procesno moč, čeprav podpira Numpy. Druga možnost bi bil BrickPi, ki bi vam omogočil izvajanje knjižnice AI, kot je Tensorflow, vendar je bil namen tega priročnika uporaba kompleta Lego EV3 MINDSTORMS brez potrebe po nakupu številnih dragih dodatnih kosov, razen ultrazvočnega senzorja.

Vendar bi moral pristop k ponovnemu informiranju k-najbližjih sosedov delovati na opeki EV3 in to je predlagani algoritem. Na vas prepuščam, da poiščete delujočo izvedbo ali opazite kakršne koli težave:

Okrepitveno učenje za Hawkings Bota

Ideja je, da je 7 odčitkov USS kodiranih v vektor, zadnjih 10 zamahov glave pa se uporabi za ustvarjanje zaporednega vektorja 70 vnosov. Prvi odčitki so nepopolni, zato bodo napolnjeni z ničlami. Vsak vnos vsebuje vrednost razdalje od USS. To je vektor stanja s. Sistem omogoča 1000 vnosov. Nato se najstarejši vnos zamenja in starostni vnosi za vsak par s-r se zmanjšajo za eno.

Robot se ne sme približati 10 cm do predmeta. To ustvarja negativno nagrado. Za preprostost; dobra dejanja so nagrajena z 1, slaba pa z 0. Dejansko to ustvari verjetnost za nagrado za vsako kombinacijo stanja-dejanja. Uporabili bomo diskontirane nagrade in epsilon pohlepno politiko.

Tako nastanejo 3 velike tabele stanja –reward (s-r) za vsa tri dejanja desno, naravnost in levo-za vsako dejanje je mogoče imeti hitre in počasne hitrosti. Nato bi imeli 6 dejanj in 6 iskalnih tabel s-r.

Vsakič, ko se zabeleži novo stanje s, ga primerjamo s tabelami, za iskanje najbližjega soseda pa uporabimo evklidsko razdaljo (ali podobno merilo). To ne bo uvrščeno, temveč je nastavljen prag t, da sprejme stanje kot zelo podobno, prepiše obstoječe stanje in posodobi za najvišjo nagrado ter izvede povezano dejanje a. Če ni podobno (d> t), za vsako dejanje vnesite nov par s-r. Če obstaja dejstvo za dejanja za za s-r (vsi imajo enako nagrado), izberite naključno, vendar to ni običajno in bi ga lahko izpustili.

t bo treba eksperimentalno določiti, če je t premajhno, se podobna stanja ne upoštevajo in se vsako stanje obravnava kot edinstveno. Prevelik t pomeni, da se celo precej različna stanja združijo, kar bi lahko vplivalo na sposobnost izbire dobrih dejanj. Morda bo mogoče uporabiti statistične metode za določitev najboljše t.

Tabela izgleda nekako takole: Vnos št. - Vektor stanja - nagrada za dejanje 1 - nagrada za dejanje 2 - nagrada za dejanje 3.

Predvidevam, da bo dejanska izvedba težavna, vendar bi bilo vredno vložiti trud. Vso srečo!

Priporočena: