Obsah:

Hawking Bot: 5 kroků
Hawking Bot: 5 kroků

Video: Hawking Bot: 5 kroků

Video: Hawking Bot: 5 kroků
Video: Odkaz Stephena Hawkinga 2024, Listopad
Anonim
Image
Image
Sestavte si svého Hawkingova robota
Sestavte si svého Hawkingova robota

Hawking Bot je projekt Lego MINDSTORMS EV3 inspirovaný zesnulým Stephenem Hawkingem. Stephen Hawking měl dobrý smysl pro humor, takže jsem si jist, že by tento projekt schválil. Hawking Bot se dokáže pohybovat kolem překážek a reagovat na pohyby a poté pronese jeden ze slavných zvukových kousků Stephena Hawkinga a pohybuje se ve směru pohybujícího se objektu. Využívá ultrazvukový senzor, který snímá své okolí pohybem hlavy.

Krok 1: Sestavte si svého Hawkingova robota

Všechny požadované kusy jsou v základní sadě EV3 Lego MINDSTORMS s výjimkou ultrazvukového senzoru (jeho očí), který je nutné zakoupit samostatně.

Krok 2:

obraz
obraz

Kód pro Hawking Bot je napsán v pythonu 3. Spouštěcí obrazový soubor pro spuštění pythonu v prostředí Debian Linux na Hawking Bot lze stáhnout z webu ev3dev. Odtud lze stáhnout kód pro spuštění Hawking Bot. Veškerý kód je obsažen v souboru třídy, takže můžete použít stávající metody nebo je dokonce upravit, pokud chcete.

Podívejte se na toto video s podrobnými pokyny, jak na vašem robotu nastavit Debian Linux a Python3. Přestože se jedná konkrétně o nastavení systému Mac, bude stále užitečné získat obecné znalosti o procesu. Toto je nedokončená práce. Ultrazvukový senzor je někdy nespolehlivý a to vyžaduje chytřejší kód pro detekci „odlehlých hodnot“. Chtěl bych vidět příspěvky ostatních, aby byl kód efektivnější a méně náchylný k chybám.

Krok 3: Vytvořte si vlastní Hawking Soundbites

Dobře, nyní chcete mít nějaké slavné citáty nebo jen nějaké jednoduché výroky od profesora Hawkinga. Existuje spousta videí, kde ho můžete slyšet mluvit, a pak jeho přednášky, které jsou pokladem moudrosti a užitečných zvukových kousnutí.

Potřebujete program, jako je Audacity, který funguje na mnoha platformách, abyste si vybrali a vystřihli své oblíbené soundbity.

Uložte svůj soundbite jako wav mono soubor jako SH6, SH7, … SH11, SH12 atd.

Níže naleznete několik ukázek, které jsem vytvořil podle výše uvedené metody.

Krok 4: Tipy a triky

Tipy a triky
Tipy a triky
Tipy a triky
Tipy a triky

Hawking Bot je dodáván se samokontrolním modulem, který zajišťuje, že jsou připojeny všechny kabely a baterie je dostačující. Snadno může dojít k uvolněnému, chybějícímu nebo dokonce poškozenému spojení. Tento modul je tedy velmi užitečný. Metoda 'checkConnection' kontroluje pouze, zda existuje elektrické připojení. Stále musíte zajistit, aby byly motory připojeny ke správnému portu.

Pohyb švihající hlavou je nezbytný pro to, aby Hawking Bot skenoval svůj terén a našel nejdelší volnou cestu před sebou. Kabely potřebují dostatečný prostor pro přizpůsobení pohybům hlavy; je proto vhodné spojit je dohromady, jak je znázorněno na fotografii.

Hawking Bot funguje nejlépe s velkými překážkami a na rovném a hladkém povrchu. Koberce jsou pro motory náročnější a možná budete muset upravit nastavení, abyste upravili chování pro různé povrchy.

Hawking Bot není v žádném případě dokonalý a toto je prototyp, který bude těžit z dalších vylepšení. Kód je plně komentovaný a mělo by být pro vás snadné zjistit, co různé metody dělají. Různé bity byly okomentovány pomocí #, pokud odstraníte # před „tiskem“, běžící program vám ukáže různé hodnoty senzorů a výpočty.

Krok 5: Navrhovaná vylepšení, aktualizace a budoucí nápady

Nyní, když jste úspěšně postavili svého robota, ho chcete posunout na další úroveň. Můžete vylepšit metodu MotionDetector. Právě teď někdy tak často dostává špatné čtení. Skutečné hodnoty můžete zobrazit odkomentováním disA a disB (ve spodní části bloku metody). Špatné čtení obvykle vyčnívá z ostatních měření, takže můžete napsat algoritmus, který zabrání robotu reagovat na nesprávné čtení.

Možná budete chtít plně ovládat robota a dálkově ovládat jeho různé funkce. Můžete to udělat přes Bluetooth a napsat program Android pro komunikaci s robotem. Mnohem snazším přístupem by však bylo najít místo pro infračervený senzor, který by převzal kontrolu nad Hawking Bot.

Co takhle přimět robota, aby se seznámil se svým prostředím? Toho lze dosáhnout přístupem K-nejbližšího souseda nebo případně neurální sítí. Kostka EV3 má omezený výpočetní výkon, přestože podporuje Numpy. Alternativou by byl BrickPi, který by vám umožnil provozovat knihovnu AI, jako je Tensorflow, ale záměrem této příručky bylo použít stavebnici Lego EV3 MINDSTORMS, aniž byste museli kupovat mnoho dalších drahých kusů kromě ultrazvukového senzoru.

Učební přístup reinformace k-nejbližších sousedů by však měl fungovat na cihle EV3 a toto je navrhovaný algoritmus. Nechám na vás, abyste našli funkční implementaci nebo zjistili jakékoli problémy:

Výukové učení pro Hawkings Bot

Myšlenka je taková, že 7 odečtů USS je zakódováno do vektoru a posledních 10 pohybů hlavy se použije k vytvoření sekvenčního vektoru se 70 položkami. První odečty jsou neúplné, takže budou vyplněny nulami. Každý záznam obsahuje hodnotu vzdálenosti od USS. Toto je stavový vektor s. Systém umožňuje 1000 záznamů. Poté bude nejstarší záznam nahrazen a věkové záznamy pro každý pár s-r budou sníženy o jeden.

Robot se nesmí přibližovat k předmětu blíže než 10 cm. To vytváří negativní odměnu. Pro jednoduchost; dobré akce jsou odměňovány 1 a špatné 0. Účinně to vytváří pravděpodobnost odměny pro každou kombinaci akčního stavu. Použijeme zlevněné odměny a epsilon chamtivou politiku.

To vytvoří 3 velké tabulky stavu-odměny (s-r) pro všechny tři akce vpravo, přímo vpřed a vlevo-pro každou akci může být možné mít rychlé a pomalé rychlosti. Pak bychom měli 6 akcí a 6 vyhledávacích tabulek s-r.

Pokaždé, když je zaznamenán nový stav s, je porovnán s tabulkami, k nalezení nejbližšího souseda se použije euklidovská vzdálenost (nebo podobná míra). To nebude hodnoceno, ale je nastavena prahová hodnota t, aby přijal stav jako velmi podobný, přepsal stávající stav a aktualizoval se za nejvyšší odměnu a provedl související akci a. Pokud to není podobné (d> t), zadejte nový pár s-r pro každou akci a. Pokud existuje shoda mezi akcemi pro pro s-r (všechny mají stejnou odměnu), vyberte náhodně, ale není to běžné a lze to vynechat.

t bude muset experimentálně určit, pokud t je příliš malé, podobné stavy budou ignorovány a každý stav je považován za jedinečný. Příliš velké t znamená, že i docela rozdílné stavy jsou spojeny dohromady, což by mohlo ovlivnit schopnost volit dobré akce. Ke stanovení nejlepšího t může být možné použít statistické metody.

Tabulka vypadá nějak takto: Záznam č. - Stavový vektor - odměna za akci 1 - odměna za akci 2 - odměna za akci 3.

Myslím, že skutečná implementace bude složitá, ale měla by být zbytečná. Hodně štěstí!

Doporučuje: