Innehållsförteckning:
- Steg 1: Bygg din Hawking Bot
- Steg 2:
- Steg 3: Gör dina egna Hawking Soundbites
- Steg 4: Tips och tricks
- Steg 5: Föreslagna förbättringar, uppdateringar och framtida idéer
Video: Hawking Bot: 5 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
Hawking Bot är ett Lego MINDSTORMS EV3 -projekt inspirerat av avlidne Stephen Hawking. Stephen Hawking hade ett bra sinne för humor så jag är säker på att han skulle ha godkänt detta projekt. Hawking Bot kan navigera sig runt hinder och reagerar på rörelser och sedan yttrar en av Stephen Hawkings berömda soundbites och rör sig i riktning mot det rörliga föremålet. Den använder ultraljudssensorn som skannar sin miljö med en svepande huvudrörelse.
Steg 1: Bygg din Hawking Bot
Alla erforderliga bitar finns i grundläggande EV3 Lego MINDSTORMS -set med undantag för ultraljudssensorn (hans ögon) som måste köpas separat.
Steg 2:
Koden för Hawking Bot är helt skriven i python 3. En startbar bildfil för att köra python i en Debian Linux -miljö på Hawking Bot kan laddas ner från ev3dev -webbplatsen. Koden för att köra Hawking Bot kan laddas ner härifrån. All kod finns i en klassfil så att du kan använda befintliga metoder eller till och med ändra dem om du vill.
Se den här videon med detaljerade instruktioner om hur du konfigurerar Debian Linux och Python3 på din robot. Även om detta är specifikt för en Mac -installation, kommer det fortfarande att vara användbart att få en allmän förståelse för processen. Detta är pågående arbete. Ultraljudssensorn är ibland opålitlig och detta kräver smartare kod för att upptäcka 'outliers'. Jag skulle vilja se bidrag från andra för att göra koden effektivare och mindre benägen för fel.
Steg 3: Gör dina egna Hawking Soundbites
OK nu vill du ha några kända citat eller bara några enkla uttal från Prof Hawking. Det finns massor av videor där du kan höra honom prata och sedan finns det hans föreläsningar som är en skattkammare av visdom och användbara ljudbett.
Du behöver ett program som Audacity som fungerar på många plattformar för att välja och klippa ut dina favoritljudbitar.
Spara din soundbite som en wav -monofil som SH6, SH7, … SH11, SH12 och så vidare.
Nedan hittar du några exempel som jag har skapat enligt ovanstående metod.
Steg 4: Tips och tricks
Hawking Bot levereras med en självkontrollmodul för att säkerställa att alla kablar är anslutna och att batteriet är tillräckligt. Lösa, saknade eller till och med skadade anslutningar kan lätt uppstå. Så den här modulen är mycket användbar. Metoden "checkConnection" kontrollerar bara om det finns en elektrisk anslutning. Du måste fortfarande se till att motorerna är anslutna till rätt port.
Svephuvudets rörelse är avgörande för Hawking Bot att skanna dess terräng och hitta den längsta obehindrade vägen framåt. Kablarna behöver tillräckligt med utrymme för att rymma huvudrörelser; det är därför lämpligt att knyta ihop dem som visas på fotot.
Hawking Bot fungerar bäst med stora hinder och på en plan och slät yta. Mattor är mer utmanande för motorerna och du kan behöva justera inställningarna för att justera beteendet för olika ytor.
Hawking Bot är ingalunda perfekt och det här är en prototyp som kommer att dra nytta av ytterligare förbättringar. Koden är fullständigt kommenterad och det ska vara enkelt för dig att räkna ut vad de olika metoderna gör. Olika bitar har kommenterats med #, om du tar bort # framför "skriv ut" visar det pågående programmet dig de olika sensoravläsningarna och beräkningarna.
Steg 5: Föreslagna förbättringar, uppdateringar och framtida idéer
Nu när du har byggt din robot framgångsrikt vill du ta den till nästa nivå. Du kan förbättra MotionDetector -metoden. Just nu så ofta blir det fel läsning. Du kan se de faktiska avläsningarna genom att inte kommentera disA och disB (längst ner i metodblocket). Fel läsning sticker vanligtvis ut från andra avläsningar så att du kan skriva en algoritm för att stoppa roboten som svarar på en felaktig avläsning.
Kanske vill du ta full kontroll över roboten och bara fjärrstyra dess olika funktioner. Du kan göra detta via Bluetooth och skriva ett Android -program för att kommunicera med roboten. Ett mycket enklare tillvägagångssätt skulle dock vara att hitta en plats för den infraröda sensorn för att ta kontroll över Hawking Bot.
Vad sägs om att få roboten att lära sig om sin miljö? Detta kan uppnås med en k-närmaste granne eller möjligen ett neuralt nätverk. EV3 -tegelstenen har begränsad processorkraft även om den stöder Numpy. Ett alternativ skulle vara en BrickPi som gör att du kan köra ett AI -bibliotek som Tensorflow men avsikten med den här guiden var att använda Lego EV3 MINDSTORMS -kit utan att behöva köpa många andra dyra bitar än ultraljudssensorn.
Emellertid bör k-närmaste grannars inlärningssätt för inlärning fungera på EV3-tegelstenen och detta är den föreslagna algoritmen. Jag lämnar upp till dig att hitta en fungerande implementering eller upptäcka några problem:
Förstärkningsinlärning för Hawkings Bot
Tanken är att de 7 USS -avläsningarna kodas in i en vektor och de sista 10 huvudsvängningarna används för att skapa en sekventiell vektor med 70 poster. De första avläsningarna är ofullständiga så kommer att fyllas med nollor. Varje post innehåller avståndsvärdet från USS. Detta är tillståndsvektorn s. Systemet tillåter 1000 poster. Därefter kommer den äldsta posten att ersättas och åldersposterna för varje s-r-par reduceras med en.
Boten får inte komma närmare än 10 cm till ett föremål. Detta skapar en negativ belöning. För enkelheten; bra handlingar belönas med en 1 och dåliga med en 0. Effektivt skapar detta en sannolikhet för belöningen för varje kombination av handling-tillstånd. Vi kommer att använda rabatterade belöningar och epsilon giriga politik.
Detta skapar tre stora tillstånd-belönings (s-r) tabell för alla tre åtgärderna höger, rakt fram och vänster-det kan vara möjligt att ha snabba och långsamma hastigheter för varje åtgärd. Vi skulle då ha 6 åtgärder och 6 uppslagningstabeller.
Varje gång ett nytt tillstånd registreras jämförs det med tabellerna, euklidiskt avstånd (eller liknande mått) används för att hitta närmaste granne. Detta kommer inte att rankas utan snarare en tröskel t är inställd för att acceptera staten som väldigt lik, skriva över den befintliga staten och uppdatera för den högsta belöningen och utföra den associerade åtgärden a. Om det inte liknar (d> t) anger du ett nytt s-r-par för varje åtgärd a. Om det finns en koppling mellan åtgärder för för s-r (de har alla samma belöning) välj slumpmässigt men detta är inte vanligt och kan utelämnas.
t måste experimentellt bestämmas, om t är för liten ignoreras liknande tillstånd och varje tillstånd ses som unikt. För stor t betyder att även ganska olika stater klumpas ihop vilket kan påverka möjligheten att välja bra handlingar. Det kan vara möjligt att använda statistiska metoder för att bestämma den bästa t.
Tabellen ser ungefär ut så här: Inmatningsnr - Tillståndsvektor - belöning för handling 1 - belöning för handling 2 - belöning för handling 3.
Jag antar att den faktiska implementeringen kommer att vara knepig, men det borde vara en ansträngning. Lycka till!
Rekommenderad:
Telegram Bot With NodeMCU (ESP8266): 3 steg
Telegram Bot With NodeMCU (ESP8266): Behöver du en bot för att ge aviseringar från ditt system? eller göra något bara genom att skicka ett meddelande? Telegram Bot är din lösning! I den här självstudien kommer jag att använda Telegram Web och BotFather för att göra min bot
T2 - Tea Bot -Tea Brewing Made Easy: 4 Steg
T2 - Tea Bot -Tea Brewing Made Easy: Teboten gjordes för att hjälpa användaren att brygga sitt te till den rekommenderade bryggtiden. Ett av designmålen var att hålla det enkelt. En ESP8266 är programmerad med en webbserver för att styra en servomotor. ESP8266 -webbservern är mobilsvarig och
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
Trash Built BT Line Drawing Bot - My Bot: 13 steg (med bilder)
Trash Built BT Line Drawing Bot - My Bot: Hai vänner efter ett långt gap cirka 6 månader här kommer jag med ett nytt projekt. Fram till slutförandet av Cute Drawing Buddy V1, SCARA Robot - Arduino planerar jag för en annan ritbot, huvudsyftet är att täcka ett stort utrymme för teckning. Så fixade robotarmar
Hawking 7dBi Wifi Antenna Free Boost: 4 steg
Hawking 7dBi Wifi Antenna Free Boost: Jag upptäckte att Hawking 7dBi Wifi Antenna har en brist. Genom att ta bort felet fick jag en signalförstärkning GRATIS. Antennens artikelnummer är HAI7SIP. Innan denna ändring hade jag en signalrad som ibland sjönk dog helt. Efter