Obsah:

AI v robotu LEGO EV3 Maze-Driving: 13 kroků
AI v robotu LEGO EV3 Maze-Driving: 13 kroků

Video: AI v robotu LEGO EV3 Maze-Driving: 13 kroků

Video: AI v robotu LEGO EV3 Maze-Driving: 13 kroků
Video: LEGO MINDSTORMS EV3 Smart AI-Powered LEGO Bird Learns How To Sort Bricks 2024, Listopad
Anonim
Image
Image
Jak se řeší bludiště
Jak se řeší bludiště

Jedná se o jednoduchého, autonomního robota s umělou inteligencí. Je navržen tak, aby prozkoumal bludiště a po umístění zpět ke vchodu jel skrz východ a vyhnul se slepým uličkám. Je to mnohem komplikovanější než můj předchozí projekt, který jednoduše projel bludištěm. Zde si robot musí pamatovat cestu, kterou urazil, odstranit slepé uličky, uložit novou cestu a poté sledovat novou cestu.

Můj předchozí robot je popsán zde:

Robot je postaven pomocí LEGO Mindstorms EV3. Software EV3 běží na počítači a generuje program, který se poté stáhne do mikrokontroléru s názvem EV3 Brick. Metoda programování je založená na ikonách a na vysoké úrovni. Je to velmi snadné a univerzální.

Zásoby

DÍLY

  1. Sada LEGO Mindstorms EV3
  2. Ultrazvukový senzor LEGO Mindstorms EV3. Není součástí sady EV3.
  3. Vlnitá lepenka pro bludiště. Dva kartony by měly stačit.
  4. Malý kousek tenké lepenky, který pomůže stabilizovat některé rohy a stěny.
  5. Lepidlo a páska spojují kusy lepenky dohromady.
  6. Červená obálka na přání k identifikaci východu z bludiště.

NÁSTROJE

  1. Nůž na řezání lepenky.
  2. Ocelové pravítko na podporu procesu řezání.

SOFTWARE

Program je zde:

Krok 1: Jak se bludiště řeší

METODA ŘÍZENÍ MAZE

Existuje několik způsobů navigace bludištěm. Pokud máte zájem je studovat, jsou velmi dobře popsány v následujícím článku Wikipedie:

Zvolil jsem levou metodu sledování stěny. Myšlenka je taková, že robot bude při procházení bludištěm udržovat zeď na levé straně a dělat následující rozhodnutí:

  1. Pokud je možné odbočit doleva, udělejte to.
  2. Jinak jeďte rovně, pokud je to možné.
  3. Pokud to nejde vlevo nebo rovně, odbočte pokud možno doprava.
  4. Pokud nic z výše uvedeného není možné, musí to být slepá ulička. Otočit se.

Jedna opatrnost je, že metoda by mohla selhat, pokud má bludiště smyčku. V závislosti na umístění smyčky by robot mohl smyčku stále obcházet. Možným řešením tohoto problému by bylo, kdyby se robot přepnul na pravidlo pravého následovníka zdi, pokud by si uvědomil, že jde ve smyčce. Toto upřesnění jsem do svého projektu nezahrnul.

ŘEŠENÍ MAZE NAJÍT PŘÍMOU CESTU

Při procházení bludištěm si robot musí pamatovat cestu, kterou cestuje, a eliminovat slepé uličky. Toho je dosaženo uložením každé odbočky a křižovatky do pole, kontrolou konkrétních kombinací odboček a křižovatek, jak to jde, a nahrazením kombinací, které obsahují slepou uličku. Konečný seznam zatáček a křižovatek je přímá cesta bludištěm.

Možné zatáčky jsou: Vlevo, Vpravo, Zpět (ve slepé uličce) a Rovné (což je křižovatka).

Kombinace se nahrazují takto:

  • „Levý, zadní, levý“se mění na „přímý“.
  • „Vlevo, vzadu, vpravo“se stává „zpět“.
  • „Vlevo, vzadu, rovně“se mění na „vpravo“.
  • „Správně, zpět, vlevo“se mění na „zpět“.
  • „Rovný, zadní, levý“se mění na „pravý“.
  • „Rovně, zpět, rovně“se mění na „Zpět“.

JAK ROBOT ZAŘÍZÍ MOJI MAZE

  1. Když robot začne řídit, uvidí místo vpravo a uloží Straight do seznamu v poli.
  2. Poté se otočí doleva a přidá do seznamu vlevo. Seznam nyní obsahuje: Rovný, Levý.
  3. Ve slepé uličce se otočí a přidá Zpět do seznamu. Seznam nyní obsahuje: Rovný, Levý, Zpět.
  4. Když projde uličkou, kterou použil od vchodu, přidá Straight do seznamu. Seznam nyní obsahuje: Rovný, Levý, Zpět, Rovný. Rozpozná kombinaci a změní se zleva, zezadu, přímo doprava. Seznam nyní obsahuje Přímo, Správně.
  5. Ve slepé uličce se to otočí a přidá Zpět do seznamu. Seznam nyní obsahuje: Rovný, Pravý, Zpět.
  6. Za zatáčkou doleva seznam obsahuje Rovný, Pravý, Zpět, Vlevo. Rozpozná kombinaci a změní se doprava, zpět, zleva dozadu. Seznam nyní obsahuje Přímo, Zpět.
  7. Po dalším odbočení doleva seznam obsahuje Rovný, Zpět, Vlevo. Změní tuto kombinaci na Right. Seznam nyní obsahuje pouze Right.
  8. Předá mezeru a přidá Straight do seznamu. Seznam nyní obsahuje Right, Straight.
  9. Po odbočení doprava obsahuje seznam Přímá, Přímá, Pravá, což je přímá cesta.

Krok 2: Důležité informace při programování robota

ÚVAHY PRO JAKÝKOLI MIKROKontrolér

Když se robot rozhodne zatočit, měl by buď udělat širokou zatáčku, nebo jít dopředu krátkou vzdálenost před otočením a po otočení jít znovu na krátkou vzdálenost vpřed bez kontroly senzoru. Důvodem pro první krátkou vzdálenost je, že by robot neměl po zatáčce narazit do zdi, a pro druhou krátkou vzdálenost je to, že poté, co se robot otočil, senzor uvidí dlouhý prostor, ze kterého právě přišel, a robot by si myslel, že by se měl znovu otočit, což není správné.

Když robot ucítí křižovatku vpravo, ale není to správná zatáčka, zjistil jsem, že je dobré nechat robota jet vpřed asi 10 palců (25 cm), aniž by zkontroloval své senzory.

ÚVAHY SPECIFICKÉ PRO LEGO MINDSTORMS EV3

Přestože je LEGO Mindstorms EV3 velmi univerzální, k jednomu cihlu nepřipojí více než jeden z každého typu senzoru. Dvě nebo více cihel lze řetězit, ale nechtěl jsem si koupit další cihlu, a tak jsem použil následující senzory (místo tří ultrazvukových senzorů): infračervený senzor, barevný senzor a ultrazvukový senzor. Tohle dopadlo dobře.

Barevný senzor má však velmi krátký dosah, přibližně 2 palce (5 cm), což vede k několika zvláštním úvahám, jak je popsáno níže:

  1. Když barevný senzor detekuje zeď vpředu a robot se rozhodne odbočit doprava nebo se otočit, měl by nejprve couvat, aby měl dostatek prostoru k otočení, aniž by narazil do zdi.
  2. Složitý problém nastává u některých „přímých“křižovatek. Kvůli krátkému dosahu barevného senzoru robot nemůže určit, zda snímá správnou „přímou“křižovatku nebo nájezd do pravé zatáčky. Pokusil jsem se tento problém vyřešit nastavením programu tak, aby ukládal „Straight“do seznamu pokaždé, když ho robot detekuje, a poté v seznamu odstranil více než „Straight“v řadě. Opravuje to situaci, kdy pravé odbočení následuje po „rovince“v bludišti, ale ne situaci, kdy je před ní pravá zatáčka bez „rovinky“. Také jsem se pokusil nastavit program tak, aby eliminoval „rovinku“, pokud je těsně před „vpravo“, ale to nefunguje, pokud odbočení doprava následuje po „rovině“. Nepodařilo se mi najít řešení, které by vyhovovalo všem případům, altho předpokládám, že by bylo možné, aby se robot podíval na ujetou vzdálenost (čtením snímačů otáčení motoru) a rozhodl se, zda je to „rovný“nebo pravý otáčet se. Nemyslel jsem si, že by tato komplikace stála za to pro účely demonstrace konceptu AI v tomto projektu.
  3. Výhodou barevného senzoru je, že rozlišuje mezi hnědou zeď a červenou bariérou, kterou jsem použil při východu, a poskytuje robotovi snadný způsob, jak se rozhodnout, kdy dokončil bludiště.

Krok 3: Hlavní program

Hlavní program
Hlavní program

LEGO Mindstorms EV3 má velmi pohodlnou metodu programování založenou na ikonách. Bloky se zobrazují ve spodní části obrazovky počítače a lze je sestavit přetažením do programovacího okna. EV3 Brick může být připojen k počítači buď USB kabelem, Wi-Fi nebo Bluetooth a program pak může být stažen z počítače do Brick.

Program se skládá z hlavního programu a několika „mých bloků“, které jsou podprogramy. Nahraný soubor obsahuje celý program, který je zde:

Kroky v hlavním programu jsou následující:

  1. Definujte a inicializujte proměnnou počítání odboček a pole.
  2. Počkejte 5 sekund a řekněte „Jdi“.
  3. Spusťte smyčku.
  4. Projeďte se bludištěm. Když je dosaženo východu, smyčka se opustí.
  5. Zobrazte na cihlové obrazovce doposud nalezené křižovatky v bludišti.
  6. Zkontrolujte, zda by cesta neměla být zkrácena.
  7. Zobrazit křižovatky ve zkrácené cestě.
  8. Smyčkou se vraťte ke kroku 4.
  9. Po smyčce jeďte přímou cestou.

Snímek obrazovky ukazuje tento hlavní program.

Krok 4: Moje bloky (podprogramy)

Moje bloky (podprogramy)
Moje bloky (podprogramy)

Zobrazí se navigační blok, který řídí, jak robot projíždí bludištěm. Tisk je velmi malý a nemusí být čitelný. Je to však dobrý příklad toho, jak univerzální a výkonné jsou příkazy if (v systému LEGO EV3 nazývané Přepínače).

  1. Šipka č. 1 ukazuje na přepínač, který kontroluje, zda infračervený senzor vidí předmět více než na určitou vzdálenost. Pokud ano, provede se nejvyšší řada bloků. Pokud ne, pak je řízení předáno velké spodní řadě bloků, kde se nachází šipka č. 2.
  2. Šipka č. 2 ukazuje na přepínač, který kontroluje, jakou barvu vidí barevný senzor. Existují 3 případy: žádná barva nahoře, červená uprostřed a hnědá dole.
  3. Dvě šipky č. 3 ukazují na přepínače, které kontrolují, zda ultrazvukový senzor vidí předmět více než na určitou vzdálenost. Pokud ano, provede se nejvyšší řada bloků. Pokud ne, pak je řízení předáno do spodní řady bloků.

Moje bloky pro zkrácení cesty a pro řízení přímé cesty jsou složitější a byly by zcela nečitelné, a proto nejsou v tomto dokumentu zahrnuty.

Krok 5: Začínáme stavět robota: základna

Začínáme stavět robota: základna
Začínáme stavět robota: základna
Začínáme stavět robota: základna
Začínáme stavět robota: základna

Jak již bylo zmíněno dříve, LEGO Mindstorms EV3 umožňuje maximálně jeden z každého typu senzoru připojeného k jedné cihle. Použil jsem následující senzory (namísto tří ultrazvukových senzorů): infračervený senzor, barevný senzor a ultrazvukový senzor.

Dvojice níže uvedených fotografií ukazují, jak postavit robota. První fotografie každého páru ukazuje potřebné části a druhá fotografie ukazuje stejné části spojené dohromady.

Prvním krokem je postavit základnu robota pomocí zobrazených částí. Základna robota je zobrazena vzhůru nohama. Malá část ve tvaru písmene L v zadní části robota je oporou pro záda. Klouže, jak se robot pohybuje. To funguje dobře. Souprava EV3 nemá součást typu rolovací koule.

Krok 6: Horní část základny, 1

Horní část základny, 1
Horní část základny, 1
Horní část základny, 1
Horní část základny, 1

Tento krok a další 2 kroky jsou pro horní část základny robota, barevný senzor a kabely, což jsou všechny kabely o délce 10 palců (26 cm).

Krok 7: Horní část základny, 2

Horní část základny, 2
Horní část základny, 2
Horní část základny, 2
Horní část základny, 2

Krok 8: Horní část základny, 3

Horní část základny, 3
Horní část základny, 3
Horní část základny, 3
Horní část základny, 3

Krok 9: Infračervené a ultrazvukové senzory

Infračervené a ultrazvukové senzory
Infračervené a ultrazvukové senzory
Infračervené a ultrazvukové senzory
Infračervené a ultrazvukové senzory

Dále jsou to infračervený senzor (na levé straně robota) a ultrazvukový senzor (na pravé straně). Také 4 kolíky pro připevnění cihly nahoře.

Infračervené a ultrazvukové senzory jsou umístěny vertikálně místo normální horizontální. To poskytuje lepší identifikaci rohů nebo konců stěn.

Krok 10: Kabely

Kabely
Kabely

Kabely se ke kostce připojují následovně:

  • Port B: levý velký motor.
  • Port C: pravý velký motor.
  • Port 2: ultrazvukový senzor.
  • Port 3: barevný senzor.
  • Port 4: infračervený senzor.

Krok 11: Poslední krok při stavbě robota: dekorace

Poslední krok při stavbě robota: dekorace
Poslední krok při stavbě robota: dekorace
Poslední krok při stavbě robota: dekorace
Poslední krok při stavbě robota: dekorace

Křídla a ploutve jsou pouze na ozdobu.

Krok 12: Postavte bludiště

Postavte bludiště
Postavte bludiště
Postavte bludiště
Postavte bludiště

Na bludiště by měly stačit dva kartony z vlnité lepenky. Stěny bludiště jsem vytvořil na výšku 5 palců (12,5 cm), ale 4 palce (10 cm) by měly fungovat stejně dobře, pokud vám chybí vlnitá lepenka.

Nejprve jsem řezal kolem stěn kartonů, 10 palců (25 cm) ode dna. Poté jsem ořízl kolem zdí 5 palců ode dna. To poskytuje několik 5palcových stěn. Také jsem prořízl spodní části kartonů a ponechal asi 1 palec (2,5 cm) připevněný ke stěnám kvůli stabilitě.

Různé kousky lze stříhat a lepit nebo lepit páskou, kdykoli je potřeba k vytvoření bludiště. Mezi bočními stěnami v jakékoli cestě se slepou uličkou by měl být prostor 11 nebo 12 palců (30 cm). Délka by neměla být menší než 25 cm. Tyto vzdálenosti jsou potřebné k tomu, aby se robot otočil.

Některé rohy bludiště mohou být vyztuženy. Rovněž je třeba zabránit ohýbání některých rovných stěn, pokud obsahují narovnaný roh kartonu. Malé kousky tenké lepenky by měly být v těchto místech přilepeny ke dnu, jak je znázorněno.

Východ má červenou bariéru, která se skládá z poloviny červené obálky na přání a základny ze 2 kusů tenké lepenky, jak je znázorněno.

Krok 13: Bludiště

Bludiště
Bludiště

Jedna opatrnost je, že bludiště by nemělo být velké. Pokud jsou otáčky robota v mírném úhlu od správného úhlu, nesrovnalosti se po několika otáčkách sčítají a robot může vběhnout do zdí. Několikrát jsem se musel pohrávat s nastavením rotací zatáček, abych zvládl úspěšnou jízdu i malým bludištěm, které jsem udělal.

Řešením tohoto problému je zahrnout rutinu pro narovnání cesty, která by udržovala robota v určité vzdálenosti od levé stěny. Toto jsem nezahrnul. Program je dostatečně komplikovaný a pro demonstraci konceptu AI v tomto projektu je dostačující.

ZÁVĚREČNÁ POZNÁMKA

Byl to zábavný projekt a skvělá zkušenost s učením. Doufám, že vás to také bude zajímat.

Doporučuje: