Obsah:

AI v robote LEGO EV3 Maze-Driving Robot: 13 krokov
AI v robote LEGO EV3 Maze-Driving Robot: 13 krokov

Video: AI v robote LEGO EV3 Maze-Driving Robot: 13 krokov

Video: AI v robote LEGO EV3 Maze-Driving Robot: 13 krokov
Video: Maze robot | Lego Mindstorms 2024, Júl
Anonim
Image
Image
Ako sa rieši bludisko
Ako sa rieši bludisko

Jedná sa o jednoduchého, autonómneho robota s umelou inteligenciou. Je navrhnutý tak, aby preskúmal bludisko a po umiestnení späť pri vchode prešiel autom k východu a vyhýbal sa slepým uličkám. Je to oveľa komplikovanejšie ako môj predchádzajúci projekt, ktorý jednoducho prešiel bludiskom. Tu si robot musí pamätať cestu, ktorú prešiel, odstrániť slepé uličky, uložiť novú cestu a potom nasledovať novú cestu.

Môj predchádzajúci robot je popísaný tu:

Robot je postavený pomocou LEGO Mindstorms EV3. Softvér EV3 beží na počítači a generuje program, ktorý sa potom stiahne do mikrokontroléra s názvom EV3 Brick. Metóda programovania je založená na ikonách a je na vysokej úrovni. Je to veľmi ľahké a všestranné.

Zásoby

ČASTI

  1. Sada LEGO Mindstorms EV3
  2. Ultrazvukový senzor LEGO Mindstorms EV3. Nie je súčasťou sady EV3.
  3. Vlnitá lepenka do bludiska. Dva kartóny by mali stačiť.
  4. Malý kúsok tenkej lepenky, ktorý pomôže stabilizovať niektoré rohy a steny.
  5. Lepidlo a páska na spojenie kusov lepenky dohromady.
  6. Červená obálka na pohľadnicu, ktorá identifikuje východ z bludiska.

NÁSTROJE

  1. Úžitkový nôž na rezanie lepenky.
  2. Oceľové pravítko na pomoc pri procese rezania.

SOFTVÉR

Program je tu:

Krok 1: Ako sa rieši bludisko

MAZE-DRIVING METHOD

Existuje niekoľko spôsobov navigácie v bludisku. Ak máte záujem ich študovať, sú veľmi dobre popísané v nasledujúcom článku Wikipedie:

Vybral som si ľavú metódu sledovania steny. Ide o to, že robot pri prechode bludiskom udrží stenu na ľavej strane a urobí nasledujúce rozhodnutia:

  1. Ak je možné odbočiť doľava, urobte to.
  2. V opačnom prípade choďte rovno, ak je to možné.
  3. Ak to nemôže ísť doľava alebo rovno, odbočte doprava, ak je to možné.
  4. Ak nič z vyššie uvedeného nie je možné, musí to byť slepá ulička. Otoč sa.

Jedna opatrnosť je, že metóda môže zlyhať, ak má bludisko slučku. V závislosti od umiestnenia slučky by robot mohol pokračovať v slučke stále dokola. Možným riešením tohto problému by bolo, keby sa robot prepol na pravé pravidlo sledovania steny, ak by zistil, že ide v slučke. Toto spresnenie som do svojho projektu nezahrnul.

RIEŠENIE MAZE NA NÁJDENIE PRIAMEJ CESTY

Pri jazde bludiskom si robot musí zapamätať cestu, ktorou cestuje, a eliminovať slepé uličky. Dosahuje to tým, že ukladá každú odbočku a križovatku do poľa, pričom priebežne kontroluje konkrétne kombinácie odbočiek a križovatiek a nahrádza kombinácie, ktoré obsahujú slepú uličku. Konečný zoznam zákrut a križovatiek je priama cesta bludiskom.

Možné odbočky sú: vľavo, vpravo, späť (v slepej uličke) a rovno (čo je križovatka).

Kombinácie sa nahrádzajú takto:

  • „Doľava, späť, doľava“sa stáva „rovným“.
  • „Vľavo, vzadu, vpravo“sa stáva „späť“.
  • „Vľavo, vzadu, rovno“sa stáva „vpravo“.
  • „Správne, späť, vľavo“sa stáva „späť“.
  • „Rovný, zadný, ľavý“sa stáva „pravý“.
  • „Rovný, späť, rovný“sa stáva „späť“.

AKO ROBOT SPRÁVA S mojou MAZE

  1. Keď robot začne jazdiť, uvidí miesto napravo a v zozname v poli uloží rovno.
  2. Potom sa otočí doľava a pridá doľava do zoznamu. Zoznam teraz obsahuje: Rovný, Vľavo.
  3. So slepou uličkou sa to otočí a pridá sa Späť do zoznamu. Zoznam teraz obsahuje: Rovný, Ľavý, Späť.
  4. Po prejdení pruhu, ktorý používa od vchodu, sa zaradí do zoznamu rovno. Zoznam teraz obsahuje: Rovný, Ľavý, Zadný, Rovný. Rozpozná kombináciu a zmení sa doľava, späť, rovno doprava. Zoznam teraz obsahuje Rovno, Správne.
  5. So slepou uličkou sa to otočí a pridá sa Späť do zoznamu. Zoznam teraz obsahuje: Rovný, Pravý, Späť.
  6. Po odbočení doľava obsahuje zoznam Rovné, Pravé, Späť, Vľavo. Rozpozná kombináciu a zmení sa doprava, späť, zľava dozadu. Zoznam teraz obsahuje Rovno, Späť.
  7. Za ďalším odbočením doľava obsahuje zoznam Rovné, Späť, Vľavo. Mení túto kombináciu na Pravú. Zoznam teraz obsahuje iba Právo.
  8. Prejde medzerou a pridá sa do zoznamu rovno. Zoznam teraz obsahuje Správne, Priamo.
  9. Po odbočení doprava zoznam obsahuje Priama, Rovná, Pravá, čo je priama cesta.

Krok 2: Odporúčania pri programovaní robota

ÚVAHY PRE KAŽDÝ MIKROKONTROLÉR

Keď sa robot rozhodne zatočiť, mal by urobiť širokú zákrutu alebo ísť dopredu krátku vzdialenosť pred otočením a po otočení ísť znova o malú vzdialenosť dopredu bez kontroly senzora. Dôvod prvej krátkej vzdialenosti je ten, že robot by nemal naraziť do steny po odbočení, a dôvod druhej krátkej vzdialenosti je ten, že potom, čo sa robot otočí, senzor uvidí dlhý priestor, z ktorého práve prišiel., a robot by si myslel, že by sa mal znova otočiť, čo nie je vhodné.

Keď robot vníma križovatku napravo, ale nie je to správna zákruta, zistil som, že je dobré nechať robota jazdiť dopredu asi 25 palcov bez kontroly senzorov.

ÚVAHY ŠPECIFICKÉ PRE LEGO MINDSTORMS EV3

Aj keď je LEGO Mindstorms EV3 veľmi univerzálny, k jednému tehlu nepripúšťa viac ako jeden z každého typu senzora. Dve alebo viac tehál je možné reťaziť, ale nechcel som kúpiť ďalšiu tehlu, a tak som použil nasledujúce senzory (namiesto troch ultrazvukových senzorov): infračervený senzor, farebný senzor a ultrazvukový senzor. Toto dopadlo dobre.

Farebný senzor má však veľmi krátky dosah, asi 2 palce (5 cm), čo vedie k niekoľkým špeciálnym úvahám, ako je popísané nižšie:

  1. Keď snímač farieb zistí stenu vpredu a robot sa rozhodne odbočiť vpravo alebo sa otočiť, mal by najskôr zacúvať, aby mal dostatok priestoru na otočenie bez toho, aby narazil do steny.
  2. Komplikovaný problém nastáva s niektorými „rovnými“križovatkami. Z dôvodu krátkeho dosahu farebného senzora robot nemôže určiť, či vníma správnu „rovnú“križovatku alebo náskok do pravej zákruty. Pokúsil som sa tento problém vyriešiť tak, že program nastavím tak, aby ukladal „rovný“do zoznamu vždy, keď ho robot zaznamená, a potom v zozname odstránil viac ako jeden „rovný“. Opravuje to situáciu, keď pravá zákruta nasleduje v bludisku po „rovinke“, ale nie situáciu, kde je pravá zákruta bez „rovinky“pred ňou. Skúsil som tiež nastaviť program tak, aby eliminoval „rovinku“, ak je tesne pred „pravicou“, ale to nefunguje, ak odbočka doprava nasleduje po „rovke“. Nepodarilo sa mi nájsť riešenie, ktoré by vyhovovalo všetkým prípadom, a hoci predpokladám, že by bolo možné, aby sa robot pozeral na prejdenú vzdialenosť (čítaním senzorov otáčania motora) a rozhodol sa, či je to „rovný“alebo pravý otočiť. Nemyslel som si, že táto komplikácia stojí za to urobiť na účely demonštrácie konceptu AI v tomto projekte.
  3. Výhodou farebného senzora je, že rozlišuje hnedú farbu steny a červenú bariéru, ktorú som použil pri východe, a umožňuje robotovi ľahký spôsob, ako sa rozhodnúť, kedy dokončil bludisko.

Krok 3: Hlavný program

Hlavný program
Hlavný program

LEGO Mindstorms EV3 má veľmi výhodnú metódu programovania založenú na ikonách. Bloky sú zobrazené v spodnej časti obrazovky počítača a je možné ich zostavením presunúť myšou do programovacieho okna. EV3 Brick je možné k počítaču pripojiť buď káblom USB, Wi-Fi alebo Bluetooth, a potom je možné program stiahnuť z počítača do tehly.

Program pozostáva z hlavného programu a niekoľkých „mojich blokov“, ktoré sú podprogramami. Odovzdaný súbor obsahuje celý program, ktorý je tu:

Kroky v hlavnom programe sú nasledujúce:

  1. Definujte a inicializujte premennú na počítanie odbočiek a pole.
  2. Počkajte 5 sekúnd a povedzte „Choď“.
  3. Začnite slučku.
  4. Prejdite sa bludiskom. Keď sa dosiahne východ, slučka sa opustí.
  5. Zobrazte na tehlovej obrazovke doposiaľ nájdené križovatky v bludisku.
  6. Skontrolujte, či sa má cesta skrátiť.
  7. Zobrazte križovatky v skrátenej ceste.
  8. Zopakujte krok 4.
  9. Po slučke choďte po priamej ceste.

Snímka obrazovky zobrazuje tento hlavný program.

Krok 4: Moje bloky (podprogramy)

Moje bloky (podprogramy)
Moje bloky (podprogramy)

Zobrazí sa Navigate My Block, ktorý riadi, ako sa robot pohybuje v bludisku. Tlač je veľmi malá a nemusí byť čitateľná. Je to však dobrý príklad toho, aké všestranné a výkonné sú príkazy if (nazývané prepínače v systéme LEGO EV3).

  1. Šípka č. 1 ukazuje na prepínač, ktorý kontroluje, či infračervený senzor vidí predmet viac ako na konkrétnu vzdialenosť. Ak je to tak, vykoná sa najvyššia séria blokov. Ak nie, potom je kontrola odovzdaná veľkej spodnej skupine blokov, kde sa nachádza šípka č. 2.
  2. Šípka č. 2 ukazuje na prepínač, ktorý kontroluje, akú farbu farebný senzor vidí. Existujú 3 prípady: hore žiadna farba, v strede červená a dole hnedá.
  3. Dve šípky č. 3 ukazujú na prepínače, ktoré kontrolujú, či ultrazvukový senzor vidí predmet viac ako na konkrétnu vzdialenosť. Ak je to tak, vykoná sa najvyššia séria blokov. Ak nie, potom sa kontrola prenesie do spodnej série blokov.

Moje bloky na skrátenie cesty a riadenie priamej cesty sú komplikovanejšie a boli by úplne nečitateľné, a preto nie sú zahrnuté v tomto dokumente.

Krok 5: Začíname stavať robota: základňa

Začíname stavať robota: základňa
Začíname stavať robota: základňa
Začíname stavať robota: základňa
Začíname stavať robota: základňa

Ako už bolo spomenuté, LEGO Mindstorms EV3 nepripúšťa viac ako jeden z každého typu senzora pripojeného k jednej tehle. Použil som nasledujúce senzory (namiesto troch ultrazvukových senzorov): infračervený senzor, farebný senzor a ultrazvukový senzor.

Dvojice fotografií nižšie ukazujú, ako postaviť robota. Prvá fotografia každého páru zobrazuje potrebné diely a druhá fotografia ukazuje rovnaké časti spojené dohromady.

Prvým krokom je postaviť základňu robota pomocou zobrazených častí. Základňa robota je zobrazená hore nohami. Malá časť v tvare L v zadnej časti robota je oporou pre chrbát. Pri pohybe robota sa kĺže. To funguje v poriadku. Súprava EV3 nemá časť typu valivej gule.

Krok 6: Horná časť základne, 1

Horná časť základne, 1
Horná časť základne, 1
Horná časť základne, 1
Horná časť základne, 1

Tento krok a ďalšie 2 kroky sú pre hornú časť základne robota, farebný senzor a káble, všetko sú to káble 10 palcov (26 cm).

Krok 7: Horná časť základne, 2

Horná časť základne, 2
Horná časť základne, 2
Horná časť základne, 2
Horná časť základne, 2

Krok 8: Horná časť základne, 3

Horná časť základne, 3
Horná časť základne, 3
Horná časť základne, 3
Horná časť základne, 3

Krok 9: Infračervené a ultrazvukové snímače

Infračervené a ultrazvukové snímače
Infračervené a ultrazvukové snímače
Infračervené a ultrazvukové snímače
Infračervené a ultrazvukové snímače

Ďalej sú to infračervený senzor (na ľavej strane robota) a ultrazvukový senzor (napravo). Tiež 4 kolíky na pripevnenie tehly na vrch.

Infračervené a ultrazvukové senzory sú umiestnené vertikálne namiesto normálnej horizontálnej. To poskytuje lepšiu identifikáciu rohov alebo koncov stien.

Krok 10: Káble

Káble
Káble

Káble sa k tehle pripájajú nasledovne:

  • Port B: ľavý veľký motor.
  • Port C: pravý veľký motor.
  • Port 2: ultrazvukový senzor.
  • Port 3: snímač farieb.
  • Port 4: infračervený senzor.

Krok 11: Posledný krok pri stavbe robota: dekorácia

Posledný krok pri stavbe robota: dekorácia
Posledný krok pri stavbe robota: dekorácia
Posledný krok pri stavbe robota: dekorácia
Posledný krok pri stavbe robota: dekorácia

Krídla a plutvy sú len na ozdobu.

Krok 12: Vytvorte bludisko

Postavte bludisko
Postavte bludisko
Postavte bludisko
Postavte bludisko

Na bludisko by mali stačiť dva kartóny z vlnitej lepenky. Steny bludiska som vytvoril na výšku 5 palcov (12,5 cm), ale 4 palce (10 cm) by mali fungovať rovnako dobre, ak vám chýba vlnitá lepenka.

Najprv som rozrezal steny kartónov, 10 palcov (25 cm) od spodnej časti. Potom som orezal okolo stien 5 palcov odo dna. To poskytuje niekoľko 5-palcových stien. Tiež som rezal okolo dna kartónov a ponechal som asi 1 palec (2,5 cm) pripevnený k stenám kvôli stabilite.

Rôzne kúsky je možné rezať a lepiť alebo lepiť páskou, kedykoľvek je to potrebné na vytvorenie bludiska. Medzi každou stenou a slepou uličkou by mal byť medzi bočnými stenami priestor 11 alebo 12 palcov (30 cm). Dĺžka by nemala byť menšia ako 25 palcov (10 palcov). Tieto vzdialenosti sú potrebné na to, aby sa robot otočil.

Niektoré rohy bludiska môžu byť potrebné vystužené. Niektoré rovné steny je tiež potrebné zabrániť ohýbaniu, ak obsahujú narovnaný roh kartónu. Malé kúsky tenkej lepenky by mali byť na týchto miestach prilepené k spodnej časti, ako je znázornené.

Východ má červenú bariéru, ktorá sa skladá z polovice červenej obálky na blahoželanie a základne z 2 kusov tenkej lepenky, ako je znázornené.

Krok 13: Bludisko

Bludisko
Bludisko

Jedna opatrnosť je, že bludisko by nemalo byť veľké. Ak sú otáčky robota v miernom uhle od správneho uhla, nezrovnalosti sa po niekoľkých otáčkach sčítajú a robot môže vbehnúť do stien. Aby som sa úspešne dostal aj cez malé bludisko, ktoré som urobil, musel som sa niekoľkokrát pohrávať s nastaveniami otáčok v zákrutách.

Riešením tohto problému je zahrnúť rutinu na vyrovnanie cesty, ktorá by robota udržala v určitej vzdialenosti od ľavej steny. Toto som nezahrnul. Program je dostatočne komplikovaný a je dostatočný na demonštráciu konceptu AI v tomto projekte.

ZÁVEREČNÁ POZNÁMKA

Bol to zábavný projekt a veľká skúsenosť s učením. Dúfam, že vás to tiež bude zaujímať.

Odporúča: