Indholdsfortegnelse:

Hawking Bot: 5 trin
Hawking Bot: 5 trin

Video: Hawking Bot: 5 trin

Video: Hawking Bot: 5 trin
Video: Stephen Hawking's Famous Speech. 2024, November
Anonim
Image
Image
Byg din Hawking Bot
Byg din Hawking Bot

Hawking Bot er et Lego MINDSTORMS EV3 -projekt inspireret af afdøde Stephen Hawking. Stephen Hawking havde en god sans for humor, så jeg er sikker på, at han ville have godkendt dette projekt. Hawking Bot kan navigere sig rundt om forhindringer og reagere på bevægelser og udsender derefter en af Stephen Hawkings berømte lydbider og bevæger sig i retning af det bevægelige objekt. Det bruger ultralydssensoren, der scanner sit miljø med en fejende hovedbevægelse.

Trin 1: Byg din Hawking Bot

Alle de nødvendige stykker er i det grundlæggende EV3 Lego MINDSTORMS -sæt med undtagelse af ultralydssensoren (hans øjne), som skal købes separat.

Trin 2:

Billede
Billede

Koden til Hawking Bot er alle skrevet i python 3. En bootbar billedfil til at køre python i et Debian Linux -miljø på Hawking Bot kan downloades fra ev3dev -webstedet. Koden til at køre Hawking Bot kan downloades herfra. Al kode er indeholdt i en klassefil, så du kan bruge de eksisterende metoder eller endda ændre dem, hvis du vil.

Se denne video med detaljerede instruktioner om, hvordan du konfigurerer Debian Linux og Python3 på din robot. Selvom dette specifikt er til en Mac -opsætning, vil det stadig være nyttigt at få en generel forståelse af processen. Dette er igangværende arbejde. Ultralydssensoren er til tider upålidelig, og dette kræver smartere kode for at detektere 'outliers'. Jeg vil gerne se bidrag fra andre for at gøre koden mere effektiv og mindre tilbøjelig til fejl.

Trin 3: Lav dine egne Hawking Soundbites

OK nu vil du have nogle berømte citater eller bare nogle enkle ytringer fra Prof Hawking. Der er masser af videoer, hvor du kan høre ham tale, og så er der hans foredrag, som er en skattekiste af visdom og nyttige lydbid.

Du har brug for et program som Audacity, der fungerer på mange platforme for at vælge og skære dine yndlingslydbid ud.

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

Nedenfor finder du et par prøver, som jeg har oprettet i henhold til ovenstående metode.

Trin 4: Tips og tricks

Tips og tricks
Tips og tricks
Tips og tricks
Tips og tricks

Hawking Bot leveres med et selvkontrolmodul for at sikre, at alle kabler er tilsluttet, og batteristrømmen er tilstrækkelig. Løse, manglende eller endda beskadigede forbindelser kan let forekomme. Så dette modul er meget nyttigt. Metoden 'checkConnection' kontrollerer kun, om der er en elektrisk forbindelse. Du skal stadig sikre, at motorerne er tilsluttet den korrekte port.

Den svævende hovedbevægelse er afgørende for Hawking Bot for at scanne sit terræn og finde den længste uhindrede vej forude. Kablerne har brug for plads nok til at rumme hovedbevægelser; det er derfor tilrådeligt at binde dem sammen som vist på fotografiet.

Hawking Bot fungerer bedst med store forhindringer og på en flad og glat overflade. Tæpper er mere udfordrende for motorerne, og du skal muligvis justere indstillingerne for at justere adfærden for forskellige overflader.

Hawking Bot er på ingen måde perfekt, og dette er en prototype, der vil drage fordel af yderligere forbedringer. Koden er fuldt kommenteret, og det skal være let for dig at finde ud af, hvad de forskellige metoder gør. Forskellige bits er blevet kommenteret med #, hvis du fjerner # foran 'print', viser det igangværende program dig de forskellige sensoraflæsninger og beregninger.

Trin 5: Foreslåede forbedringer, opdateringer og fremtidige ideer

Nu hvor du med succes har bygget din robot, vil du tage den til det næste niveau. Du kan forbedre MotionDetector -metoden. Lige nu bliver det så ofte forkert læsning. Du kan se de faktiske aflæsninger ved at kommentere disA og disB (nederst i metodeblokken). Den forkerte læsning skiller sig normalt ud fra andre aflæsninger, så du kan skrive en algoritme for at stoppe robotten med at reagere på en forkert læsning.

Måske vil du tage fuld kontrol over robotten og bare fjernbetjene dens forskellige funktioner. Du kan gøre dette via Bluetooth og skrive et Android -program for at kommunikere med robotten. En meget lettere tilgang ville imidlertid være at finde et sted for den infrarøde sensor til at tage kontrol over Hawking Bot.

Hvad med at få robotten til at lære om sit miljø? Dette kan opnås med en k-nærmeste nabo-tilgang eller muligvis et neuralt netværk. EV3 -klodsen har begrænset behandlingskraft, selvom den understøtter Numpy. Et alternativ ville være en BrickPi, som ville give dig mulighed for at køre et AI -bibliotek som Tensorflow, men hensigten med denne vejledning var at bruge Lego EV3 MINDSTORMS -kittet uden at skulle købe mange andre dyre ekstra stykker end ultralydssensoren.

Imidlertid bør k-nærmeste naboer til re-infocement læringsmetode fungere på EV3-klodsen, og dette er den foreslåede algoritme. Jeg lader det være op til dig at finde en fungerende implementering eller se eventuelle problemer:

Forstærkningslæring for Hawkings Bot

Ideen er, at de 7 USS -aflæsninger er kodet til en vektor, og de sidste 10 hovedswoops bruges til at oprette en sekventiel vektor med 70 poster. De første aflæsninger er ufuldstændige, så de vil blive fyldt med nuller. Hver post indeholder afstandsværdien fra USS. Dette er tilstandsvektoren s. Systemet giver mulighed for 1000 poster. Derefter vil den ældste post blive udskiftet, og aldersposterne for hvert s-r-par vil blive reduceret med en.

Botten må ikke komme tættere end 10 cm på et objekt. Dette skaber en negativ belønning. For enkelhed; gode handlinger belønnes med en 1 og dårlige med en 0. Effektivt skaber dette en sandsynlighed for belønningen for hver kombination af handling-tilstand. Vi vil bruge rabatterede belønninger og epsilon grådige politik.

Dette skaber 3 store state-belønningstabeller (s-r) for alle tre handlinger til højre, lige frem og til venstre-det kan være muligt at have hurtige og langsomme hastigheder for hver handling. Vi ville derefter have 6 handlinger og 6 opslag s-r tabeller.

Hver gang en ny tilstand registreres, sammenlignes den med tabellerne, Euklidisk afstand (eller lignende mål) bruges til at finde den nærmeste nabo. Dette vil ikke blive rangeret, men snarere en tærskel t er indstillet til at acceptere staten som meget ens, overskrive den eksisterende tilstand og opdatere for den højeste belønning og udføre den tilhørende handling a. Hvis det ikke ligner (d> t), skal du indtaste et nyt s-r-par for hver handling a. Hvis der er et bånd mellem handlinger for for s-r (de har alle samme belønning) skal du vælge tilfældigt, men dette er ikke almindeligt og kan udelades.

t bliver nødt til at eksperimentelt bestemme, hvis t er for lille, ignoreres lignende tilstande, og hver tilstand ses som unik. For stor en t betyder, at selv temmelig forskellige tilstande samles, hvilket kan påvirke evnen til at vælge gode handlinger. Det kan være muligt at bruge statistiske metoder til at bestemme den bedste t.

Tabellen ser sådan ud: Indgang nr. - Statvektor - belønning for handling 1 - belønning for handling 2 - belønning for handling 3.

Jeg gætter på, at den faktiske implementering vil være vanskelig, men burde være en indsats. Held og lykke!

Anbefalede: