Tartalomjegyzék:

AI a LEGO EV3 labirintusvezető robotjában: 13 lépés
AI a LEGO EV3 labirintusvezető robotjában: 13 lépés

Videó: AI a LEGO EV3 labirintusvezető robotjában: 13 lépés

Videó: AI a LEGO EV3 labirintusvezető robotjában: 13 lépés
Videó: World's Best AI LEGO Robot! 2024, November
Anonim
Image
Image
Hogyan oldják meg a labirintust
Hogyan oldják meg a labirintust

Ez egy egyszerű, autonóm robot némi mesterséges intelligenciával. Úgy tervezték, hogy felfedezze a labirintust, és amikor visszahelyezik a bejárathoz, a kijáraton áthajtva elkerülje a zsákutcákat. Sokkal bonyolultabb, mint az előző projektem, amely egyszerűen áthajtott a labirintuson. Itt a robotnak emlékeznie kell a megtett útra, el kell távolítania a zsákutcákat, el kell tárolnia az új utat, majd követnie kell az új utat.

Az előző robotomat itt írják le:

A robot LEGO Mindstorms EV3 segítségével készült. Az EV3 szoftver számítógépen fut, és létrehoz egy programot, amelyet aztán letölt egy EV3 Brick nevű mikrokontrollerre. A programozási módszer ikon alapú és magas szintű. Nagyon könnyű és sokoldalú.

Kellékek

ALKATRÉSZEK

  1. LEGO Mindstorms EV3 készlet
  2. LEGO Mindstorms EV3 ultrahangos érzékelő. Nem tartalmazza az EV3 szettet.
  3. Hullámkarton a labirintushoz. Két kartondoboznak elegendőnek kell lennie.
  4. Egy kis darab vékony karton, amely segít stabilizálni néhány sarkot és falat.
  5. Ragasztó és szalag a kartondarabok összekapcsolásához.
  6. Piros üdvözlőlap boríték a labirintus kijáratának azonosítására.

ESZKÖZÖK

  1. Hasznos kés a karton vágásához.
  2. Acél vonalzó segíti a vágási folyamatot.

SZOFTVER

A program itt található:

1. lépés: Hogyan kell megoldani a labirintust?

VÁGÁSVEZETŐ MÓDSZER

A labirintusban való navigálásnak számos módja van. Ha érdekli a tanulmányozás, nagyon jól leírja őket a következő Wikipédia -cikk:

A bal oldali falkövetési módszert választottam. Az ötlet az, hogy a robot a bal oldalán egy falat tart, és a következő döntéseket hozza, amikor áthalad a labirintuson:

  1. Ha lehetséges balra fordulni, tegye meg.
  2. Ellenkező esetben menjen egyenesen, ha lehetséges.
  3. Ha nem tud balra vagy egyenesen menni, forduljon jobbra, ha lehetséges.
  4. Ha a fentiek egyike sem lehetséges, akkor ennek zsákutcának kell lennie. Fordulj meg.

Egy óvatosság az, hogy a módszer meghiúsulhat, ha a labirintusban van hurok. A hurok elhelyezésétől függően a robot folyamatosan körbejárhatja a hurkot. Egy lehetséges megoldás erre a problémára az lenne, ha a robot átállna a jobb oldali falkövető szabályra, ha rájönne, hogy hurokban megy. Ezt a finomítást nem vettem bele a projektembe.

AZ ÚTMUTATÓ MEGOLDÁSA KÖZVETLEN ÚTMUTATÓ KERESÉSÉHEZ

A labirintusban való haladás során a robotnak meg kell jegyeznie az útvonalat, és meg kell szüntetnie a zsákutcákat. Ezt úgy éri el, hogy minden kanyart és kereszteződést egy tömbben tárol, ellenőrzi a kanyarok és kereszteződések adott kombinációit menet közben, és lecseréli azokat a kombinációkat, amelyek zsákutcát tartalmaznak. A kanyarok és kereszteződések végső listája a labirintuson át vezető közvetlen út.

A lehetséges kanyarok a következők: Bal, Jobb, Vissza (zsákutcában) és Egyenes (ami egy kereszteződés).

A kombinációk helyébe a következő lép:

  • "Bal, hát, bal" lesz "Egyenes".
  • "Bal, hát, jobb" lesz "Vissza".
  • "Bal, hát, egyenes" lesz "jobb".
  • "Jobb, vissza, bal" lesz "Vissza".
  • "Egyenes, hát, bal" lesz "jobb".
  • "Egyenes, hát, egyenes" lesz "Vissza".

HOGYAN KEZELI A ROBOT AZ ELTÖRTÉNYEMET?

  1. Amikor a robot elkezd vezetni, lát egy teret a jobb oldalon, és tárolja az Egyeneset a tömb listájában.
  2. Ezután balra fordul, és hozzáadja a bal oldalt a listához. A lista most a következőket tartalmazza: Egyenes, Bal.
  3. Zsákutcában megfordul, és Vissza a listához. A lista most tartalmazza: Egyenes, Bal, Vissza.
  4. A bejárat elől haladva a használt sávot egyenesen hozzáadja a listához. A lista most tartalmazza: Egyenes, Bal, Hát, Egyenes. Felismer egy kombinációt, és balra, hátra, egyenesen jobbra változik. A lista most tartalmazza a Straight, Right -ot.
  5. Zsákutcában megfordul, és Vissza a listához. A lista most a következőket tartalmazza: Egyenes, Jobb, Vissza.
  6. A bal kanyar után a lista tartalmazza az Egyenes, Jobb, Vissza, Bal oldalt. Felismer egy kombinációt, és jobbra, hátra, balról hátra változik. A lista most tartalmazza az Egyenes, Vissza gombot.
  7. A következő bal kanyar után a lista tartalmazza az Egyenes, a Vissza, a Bal oldalt. Ezt a kombinációt jobbra változtatja. A lista most csak a Right -ot tartalmazza.
  8. Átmegy egy szóközön, és hozzáadja az egyenest a listához. A lista most tartalmazza a Right, Straight -t.
  9. A jobb kanyar után a lista tartalmazza a Jobb, Egyenes, Jobb utat, amely a közvetlen út.

2. lépés: Figyelem a robot programozásakor

SZEMPONTOK MINDEN MIKROKONTROLLERRE

Amikor a robot úgy dönt, hogy megfordul, vagy széles fordulatot kell tennie, vagy forduljon előre egy rövid távolságot a kanyarodás előtt, majd fordulás után ismét rövid távolságra előre, anélkül, hogy ellenőrizné az érzékelőt. Az első rövid távolság oka az, hogy a robotnak nem szabad ütköznie a falnak a kanyar után, a második rövid távnak pedig az az oka, hogy miután a robot megfordult, az érzékelő látná a hosszú teret, ahonnan éppen jött, és a robot azt gondolná, hogy újra meg kell fordulnia, ami nem a megfelelő.

Amikor a robot észlel egy kereszteződést a jobb oldalon, de nem jobbra kanyarodik, azt tapasztaltam, hogy jó, ha a robot 25 cm -rel előrehajt, anélkül, hogy ellenőrizné az érzékelőit.

LEGO MINDSTORMS EV3

Bár a LEGO Mindstorms EV3 nagyon sokoldalú, minden egyes típusú érzékelőből legfeljebb egyet engedélyez egy téglához. Két vagy több tégla láncba köthető, de nem akartam másik téglát vásárolni, ezért a következő érzékelőket használtam (három ultrahangos érzékelő helyett): infravörös, színérzékelő és ultrahangos érzékelő. Ez jól sikerült.

De a színérzékelő hatótávolsága nagyon rövid, körülbelül 5 cm (2 hüvelyk), ami néhány különleges megfontoláshoz vezet az alábbiakban leírtak szerint:

  1. Amikor a színérzékelő falat észlel elöl, és a robot úgy dönt, hogy jobbra fordul vagy megfordul, először hátrálnia kell, hogy elegendő helyet biztosítson magának ahhoz, hogy a falba ütközzön.
  2. Bonyolult probléma merül fel néhány „egyenes” kereszteződésnél. A színérzékelő rövid hatótávolsága miatt a robot nem tudja meghatározni, hogy megfelelő „egyenes” kereszteződést érzékel-e, vagy a jobbra kanyarodást. Megpróbáltam kijavítani ezt a problémát úgy, hogy a programot úgy állítottam be, hogy minden egyes alkalommal, amikor a robot érzékel egyet, tároljon egy „Egyenes” -t a listában, majd egy sornál több „Egyeneset” töröljön a listából. Ez rögzíti azt a helyzetet, amikor egy jobb kanyar követi az „egyenest” a labirintusban, de nem azt, amikor jobb kanyar van „egyenes” nélkül. Azt is megpróbáltam beállítani, hogy a program kiküszöbölje az „Egyenes” -t, ha éppen a „Jobb” előtt van, de ez nem működik, ha egy jobb kanyar követi az „Egyeneset”. Nem találtam minden esetre megfelelő megoldást, bár feltételezem, hogy a robot megnézheti a megtett távolságot (a motor forgásérzékelőinek olvasásával), és eldöntheti, hogy „egyenes” vagy jobb fordulat. Nem gondoltam, hogy ezt a komplikációt érdemes megtenni az AI koncepció bemutatása céljából ebben a projektben.
  3. A színérzékelő előnye, hogy megkülönbözteti a fal barna és a korlát vörösét, amelyeket a kijáratnál használtam, és egyszerű módja annak, hogy a robot eldöntse, mikor fejezte be a labirintust.

3. lépés: A fő program

A fő program
A fő program

A LEGO Mindstorms EV3 nagyon kényelmes ikon-alapú programozási módszerrel rendelkezik. A blokkok a számítógép képernyőjének alján jelennek meg, és a program létrehozásához áthúzhatók a programozási ablakba. Az EV3 Brick USB-kábellel, Wi-Fi-n vagy Bluetooth-on keresztül csatlakoztatható a számítógéphez, majd a program letölthető a számítógépről a Brick-re.

A program egy fő programból és több „Saját blokkból” áll, amelyek alprogramok. A feltöltött fájl tartalmazza a teljes programot, amely itt található:

A fő program lépései a következők:

  1. Határozza meg és inicializálja a fordulatszámláló változót és a tömböt.
  2. Várjon 5 másodpercet, és mondja: „Menj”.
  3. Indítsa el a ciklust.
  4. Hajt a labirintuson. A kilépéskor a hurok kilép.
  5. Jelenítse meg a Tégla képernyőjén, az útvesztőben eddig talált kereszteződéseket.
  6. Ellenőrizze, hogy az utat le kell -e rövidíteni.
  7. Jelenítse meg a metszéspontokat a rövidített útvonalon.
  8. Lépjen vissza a 4. lépéshez.
  9. A ciklus után vezesse a közvetlen utat.

A képernyőkép ezt a fő programot mutatja.

4. lépés: A blokkjaim (alprogramok)

A blokkjaim (szubrutinok)
A blokkjaim (szubrutinok)

Megjelenik a Navigálás a blokkomban, amely szabályozza, hogyan hajtja át a robot a labirintust. A nyomat nagyon kicsi, és lehet, hogy nem olvasható. De ez egy jó példa arra, hogy mennyire sokoldalúak és erőteljesek az if-utasítások (a LEGO EV3 rendszer kapcsolóinak nevezik őket).

  1. Az 1. nyíl egy kapcsolóra mutat, amely ellenőrzi, hogy az infravörös érzékelő lát -e egy tárgyat egy bizonyos távolságnál távolabb. Ha igen, akkor a blokkok felső sorozata kerül végrehajtásra. Ha nem, akkor a vezérlés átadásra kerül a nagy, alsó blokk -sorozatnak, ahol a #2 nyíl található.
  2. A 2. nyíl egy kapcsolóra mutat, amely ellenőrzi, hogy a színérzékelő milyen színt lát. Három eset van: felül nincs szín, középen piros és alul barna.
  3. Két #3 nyíl mutat a kapcsolókra, amelyek ellenőrzik, hogy az ultrahangos érzékelő lát -e egy tárgyat egy bizonyos távolságnál távolabb. Ha igen, akkor a blokkok felső sorozata kerül végrehajtásra. Ha nem, akkor az irányítást a blokkok alsó sorozata adja át.

A Saját blokkok az út lerövidítésére és a közvetlen út vezetésére bonyolultabbak és teljesen olvashatatlanok lennének, ezért nem szerepelnek ebben a dokumentumban.

5. lépés: A robot építésének megkezdése: az alap

A robot építésének megkezdése: az alap
A robot építésének megkezdése: az alap
A robot építésének megkezdése: az alap
A robot építésének megkezdése: az alap

Amint azt korábban említettük, a LEGO Mindstorms EV3 legfeljebb egy -egy téglához csatlakoztatott minden típusú érzékelőt engedélyez. A következő érzékelőket használtam (három ultrahangos érzékelő helyett): infravörös érzékelő, színérzékelő és ultrahangos érzékelő.

Az alábbi fotópárok bemutatják a robot építését. Minden pár első fotója a szükséges alkatrészeket mutatja, a második pedig ugyanazokat az alkatrészeket.

Az első lépés a robot alapjának felépítése a bemutatott alkatrészek felhasználásával. A robot alapja fejjel lefelé látható. A robot hátsó részén található kis L alakú rész támaszt a hátnak. Csúszik, ahogy a robot mozog. Ez rendben működik. Az EV3 készletnek nincs gördülőgolyós része.

6. lépés: Az alap teteje, 1

Az alap teteje, 1
Az alap teteje, 1
Az alap teteje, 1
Az alap teteje, 1

Ez a lépés és a következő 2 lépés a robot alapjának tetejére, a színérzékelőre és a kábelekre vonatkozik, amelyek mind 10 hüvelykes (26 cm) kábelek.

7. lépés: Az alap teteje, 2

Az alap teteje, 2
Az alap teteje, 2
Az alap teteje, 2
Az alap teteje, 2

8. lépés: Az alap teteje, 3

Az alap teteje, 3
Az alap teteje, 3
Az alap teteje, 3
Az alap teteje, 3

9. lépés: Infravörös és ultrahangos érzékelők

Infravörös és ultrahangos érzékelők
Infravörös és ultrahangos érzékelők
Infravörös és ultrahangos érzékelők
Infravörös és ultrahangos érzékelők

Ezután az infravörös érzékelő (a robot bal oldalán) és az ultrahangos érzékelő (a jobb oldalon). Ezenkívül a 4 csap a tégla tetejére való rögzítéséhez.

Az infravörös és ultrahangos érzékelők a normál vízszintes helyett függőlegesen helyezkednek el. Ez lehetővé teszi a falak sarkainak vagy végeinek jobb azonosítását.

10. lépés: Kábelek

Kábelek
Kábelek

A kábelek a következőképpen csatlakoznak a téglához:

  • B port: bal nagy motor.
  • C port: jobb nagy motor.
  • 2. port: ultrahangos érzékelő.
  • 3. port: színérzékelő.
  • 4. port: infravörös érzékelő.

11. lépés: A robot építésének utolsó lépése: dekoráció

A robot építésének utolsó lépése: dekoráció
A robot építésének utolsó lépése: dekoráció
A robot építésének utolsó lépése: dekoráció
A robot építésének utolsó lépése: dekoráció

A szárnyak és az uszonyok csak dekorációra szolgálnak.

12. lépés: Építsen labirintust

Építs labirintust
Építs labirintust
Építs labirintust
Építs labirintust

Két hullámkarton kartonnak elegendőnek kell lennie az útvesztőhöz. A labirintus falait 12,5 cm magasra tettem, de 10 cm -nek ugyanolyan jól kell működnie, ha hiányzik a hullámkarton.

Először körbevágtam a kartondobozok falait, 25 cm -re az aljától. Aztán a falakat körbevágtam 5 centiméterre az aljától. Ez több 5 hüvelykes falat biztosít. Továbbá körbevágtam a kartondobozok alját, és körülbelül 2,5 cm -t hagytam a falakon a stabilitás érdekében.

A különböző darabok vághatók, ragaszthatók vagy ragaszthatók, ahol szükséges a labirintus kialakításához. Az oldalsó falak között 30 cm -es távolságnak kell lennie minden zsákutcás úton. A hossza nem lehet kevesebb, mint 10 hüvelyk (25 cm). Ezek a távolságok szükségesek ahhoz, hogy a robot megfordulhasson.

Előfordulhat, hogy a labirintus néhány sarkát meg kell erősíteni, és bizonyos egyenes falakat meg kell akadályozni a hajlítástól, ha tartalmaznak kiegyenesített karton sarkot. Kis vékony kartondarabokat kell ragasztani az aljára ezeken a helyeken, az ábrán látható módon.

A kijáraton piros sorompó található, amely fél piros üdvözlőlap borítékból és 2 darab vékony kartonból készült alapból áll, az ábrán látható módon.

13. lépés: A labirintus

Az útvesztő
Az útvesztő

Egy óvatosság az, hogy a labirintus ne legyen nagy. Ha a robot fordulatai kissé szögben vannak a megfelelőtől, néhány eltérés után az eltérések összeadódnak, és a robot befuthat a falakba. Többször kellett hegedülnöm a kanyarok Rotations beállításaival annak érdekében, hogy még az általam készített kis labirintusban is sikeres legyen a hajtás.

A probléma kiküszöbölésének módja egy olyan útvonal-kiegyenesítési rutin beiktatása, amely a robotot meghatározott távolságban tartja a bal faltól. Ezt nem vettem bele. A program elég bonyolult úgy, ahogy van, és elegendő az AI -koncepció bemutatásához ebben a projektben.

ZÁRÓ MEGJEGYZÉS

Ez egy szórakoztató projekt és nagyszerű tanulási élmény volt. Remélem, te is érdekesnek találod.

Ajánlott: