Innholdsfortegnelse:

Hawking Bot: 5 trinn
Hawking Bot: 5 trinn

Video: Hawking Bot: 5 trinn

Video: Hawking Bot: 5 trinn
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Juli
Anonim
Image
Image
Bygg din Hawking Bot
Bygg din Hawking Bot

Hawking Bot er et Lego MINDSTORMS EV3 -prosjekt inspirert av avdøde Stephen Hawking. Stephen Hawking hadde en god sans for humor, så jeg er sikker på at han ville ha godkjent dette prosjektet. Hawking Bot kan navigere seg rundt hindringer og reagere på bevegelser og uttaler deretter en av Stephen Hawkings berømte lydbitt og beveger seg i retning av objektet i bevegelse. Den bruker ultralydsensoren som skanner miljøet med en svevende hodebevegelse.

Trinn 1: Bygg din Hawking Bot

Alle de nødvendige brikkene er i det grunnleggende EV3 Lego MINDSTORMS -settet, med unntak av ultralydssensoren (øynene hans) som må kjøpes separat.

Steg 2:

Bilde
Bilde

Koden for Hawking Bot er alt skrevet i python 3. En oppstartbar bildefil for å kjøre python i et Debian Linux -miljø på Hawking Bot kan lastes ned fra ev3dev -nettstedet. Koden for å kjøre Hawking Bot kan lastes ned herfra. All kode er inneholdt i en klassefil, slik at du kan bruke de eksisterende metodene eller til og med endre dem hvis du vil.

Se denne videoen med detaljerte instruksjoner om hvordan du konfigurerer Debian Linux og Python3 på roboten din. Selv om dette er spesielt for et Mac -oppsett, vil det fortsatt være nyttig å få en generell forståelse av prosessen. Dette er pågår. Ultralydssensoren er til tider upålitelig, og dette krever smartere kode for å oppdage 'outliers'. Jeg vil gjerne se bidrag fra andre for å gjøre koden mer effektiv og mindre utsatt for feil.

Trinn 3: Lag dine egne Hawking Soundbites

OK nå vil du ha noen kjente sitater eller bare noen enkle ytringer fra Prof Hawking. Det er tonnevis med videoer hvor du kan høre ham snakke, og så er det forelesningene hans som er en skattekiste av visdom og nyttige lydbitt.

Du trenger et program som Audacity som fungerer på mange plattformer for å velge og kutte ut dine favorittlydbiter.

Lagre lydbiten din som en wav -monofil som SH6, SH7, … SH11, SH12 og så videre.

Nedenfor finner du noen eksempler som jeg har laget i henhold til metoden ovenfor.

Trinn 4: Tips og triks

Tips og triks
Tips og triks
Tips og triks
Tips og triks

Hawking Bot leveres med en selvkontrollmodul for å sikre at alle kabler er tilkoblet og at batteristrømmen er tilstrekkelig. Løse, manglende eller ødelagte tilkoblinger kan lett oppstå. Så denne modulen er veldig nyttig. Metoden 'checkConnection' sjekker bare om det er en elektrisk tilkobling. Du må fortsatt sørge for at motorene er koblet til riktig port.

Den sveipende hodebevegelsen er avgjørende for Hawking Bot for å skanne terrenget og finne den lengste uhindrede banen fremover. Kablene trenger nok plass til å imøtekomme hodebevegelser; det er derfor lurt å knytte dem sammen som vist på fotografiet.

Hawking Bot fungerer best med store hindringer og på en flat og glatt overflate. Tepper er mer utfordrende for motorene, og du må kanskje justere innstillingene for å justere oppførselen for forskjellige overflater.

Hawking Bot er på ingen måte perfekt, og dette er en prototype som vil dra nytte av ytterligere forbedringer. Koden er fullstendig kommentert, og det bør være enkelt for deg å finne ut hva de forskjellige metodene gjør. Ulike biter har blitt kommentert med #, hvis du fjerner # foran "skrive ut", viser programmet som kjører de forskjellige sensoravlesningene og beregningene.

Trinn 5: Foreslåtte forbedringer, oppdateringer og fremtidige ideer

Nå som du har lykkes med å bygge roboten din, vil du ta den til neste nivå. Du kan forbedre MotionDetector -metoden. Akkurat nå blir det ofte feil lesing. Du kan se de faktiske avlesningene ved å ikke kommentere disA og disB (nederst i metodeblokken). Feil lesing skiller seg vanligvis ut fra andre avlesninger, slik at du kan skrive en algoritme for å stoppe roboten som svarer på feil lesning.

Kanskje du vil ta full kontroll over roboten og bare fjernkontrollere de forskjellige funksjonene. Du kan gjøre dette via Bluetooth og skrive et Android -program for å kommunisere med roboten. Imidlertid ville en mye enklere tilnærming være å finne et sted for den infrarøde sensoren for å ta kontroll over Hawking Bot.

Hva med å få roboten til å lære om miljøet? Dette kan oppnås med en k-nærmeste nabo-tilnærming eller muligens et neuralt nettverk. EV3 -klossen har begrenset prosessorkraft, selv om den støtter Numpy. Et alternativ ville være en BrickPi som lar deg kjøre et AI -bibliotek som Tensorflow, men intensjonen med denne guiden var å bruke Lego EV3 MINDSTORMS -settet uten å måtte kjøpe mange andre dyre tilleggsstykker enn ultralydssensoren.

Imidlertid bør k-nærmeste naboer re-infocement læringsmetode fungere på EV3-klossen, og dette er den foreslåtte algoritmen. Jeg lar det være opp til deg å finne en fungerende implementering eller oppdage eventuelle problemer:

Forsterkningslæring for Hawkings Bot

Tanken er at de 7 USS -avlesningene er kodet inn i en vektor og de siste 10 hodeskuddene brukes til å lage en sekvensiell vektor med 70 oppføringer. De første avlesningene er ufullstendige, så de blir fylt med nuller. Hver oppføring inneholder avstandsverdien fra USS. Dette er tilstandsvektoren s. Systemet tillater 1000 oppføringer. Deretter vil den eldste oppføringen bli erstattet og aldersoppføringene for hvert s-r-par reduseres med en.

Boten må ikke komme nærmere en gjenstand enn 10 cm. Dette skaper en negativ belønning. For enkelhets skyld; gode handlinger belønnes med en 1 og dårlige med en 0. Effektivt skaper dette en sannsynlighet for belønningen for hver kombinasjon av handling-tilstand. Vi vil bruke rabatterte belønninger og epsilon grådig politikk.

Dette oppretter 3 store state-belønningstabeller (s-r) for alle tre handlingene til høyre, rett frem og til venstre-det kan være mulig å ha raske og langsomme hastigheter for hver handling. Vi ville da ha 6 handlinger og 6 oppslag s-r tabeller.

Hver gang en ny tilstand registreres, blir den sammenlignet med tabellene, euklidisk avstand (eller lignende mål) brukes for å finne nærmeste nabo. Dette vil ikke bli rangert, men en terskel t er satt til å godta staten som veldig lik, overskrive den eksisterende staten og oppdatere for den høyeste belønningen og utføre den tilhørende handlingen a. Hvis det ikke er likt (d> t), skriv inn et nytt s-r-par for hver handling a. Hvis det er likhet mellom handlingene for for s-r (de har alle samme belønning), velg tilfeldig, men dette er ikke vanlig og kan utelates.

t må eksperimentelt bestemmes, hvis t er for liten, vil lignende tilstander bli ignorert og hver tilstand blir sett på som unik. For stor t betyr at til og med ganske forskjellige tilstander er samlet, noe som kan påvirke evnen til å velge gode handlinger. Det kan være mulig å bruke statistiske metoder for å bestemme den beste t.

Tabellen ser omtrent slik ut: Oppføring nr - Statvektor - belønning for handling 1 - belønning for handling 2 - belønning for handling 3.

Jeg antar at den faktiske implementeringen vil være vanskelig, men bør være en innsats. Lykke til!

Anbefalt: