Sisukord:

Tehisintellekt LEGO EV3 labürindis juhtimisrobotis: 13 sammu
Tehisintellekt LEGO EV3 labürindis juhtimisrobotis: 13 sammu

Video: Tehisintellekt LEGO EV3 labürindis juhtimisrobotis: 13 sammu

Video: Tehisintellekt LEGO EV3 labürindis juhtimisrobotis: 13 sammu
Video: Сборка Рубика кубика. Тренировка перед обучением искусственного интеллекта. #ai #shorts 2024, Juuli
Anonim
Image
Image
Kuidas labürint lahendatakse
Kuidas labürint lahendatakse

See on lihtne, autonoomne robot, millel on mõni tehisintellekt. See on mõeldud labürindi uurimiseks ja sissepääsu juurde tagasi paigutamisel väljumiseni sõitmiseks ja tupikteede vältimiseks. See on palju keerulisem kui minu eelmine projekt, mis lihtsalt labürindist läbi sõitis. Siin peab robot mäletama läbitud teed, eemaldama tupikteed, salvestama uue tee ja järgima uut rada.

Minu eelmist robotit kirjeldatakse siin:

Robot on ehitatud LEGO Mindstorms EV3 abil. Tarkvara EV3 töötab arvutis ja genereerib programmi, mis seejärel laaditakse alla mikrokontrollerile nimega EV3 Brick. Programmeerimismeetod on ikoonipõhine ja kõrgetasemeline. See on väga lihtne ja mitmekülgne.

Tarvikud

OSAD

  1. LEGO Mindstorms EV3 komplekt
  2. LEGO ultraheliandur Mindstorms EV3. See ei kuulu EV3 komplekti.
  3. Lainepapp labürindi jaoks. Kahest karbist peaks piisama.
  4. Väike tükk õhukest pappi, mis aitab stabiliseerida mõningaid nurki ja seinu.
  5. Liim ja lint papitükkide ühendamiseks.
  6. Punane õnnitluskaardi ümbrik labürindi väljapääsu tuvastamiseks.

TÖÖRIISTAD

  1. Kasulik nuga papi lõikamiseks.
  2. Terasest joonlaud lõikamisprotsessi hõlbustamiseks.

TARKVARA

Programm on siin:

Samm: kuidas labürint lahendatakse

MAZE-SÕIDU MEETOD

Labürindis navigeerimiseks on mitmeid meetodeid. Kui olete huvitatud nende uurimisest, kirjeldatakse neid väga hästi järgmises Vikipeedia artiklis:

Valisin vasakpoolse seina jälgimise meetodi. Idee on selles, et robot hoiab seina vasakul küljel, tehes labürindi läbimisel järgmised otsused:

  1. Kui on võimalik vasakule pöörata, tehke seda.
  2. Vastasel juhul minge võimaluse korral otse.
  3. Kui see ei saa minna vasakule või otse, pöörake võimaluse korral paremale.
  4. Kui ükski ülaltoodutest pole võimalik, peab see olema ummiktee. Pööra ümber.

Üks hoiatus on see, et meetod võib ebaõnnestuda, kui labürindis on silmus. Sõltuvalt silmuse paigutusest võib robot silmuse ümber ringi liikuda. Selle probleemi võimalik lahendus oleks see, kui robot lülitaks parema käe seinajälgimisreeglile, kui ta mõistaks, et see läheb silmusena. Ma ei lisanud seda täpsustust oma projekti.

MAZE LAHENDAMINE OTSELE TEELE

Labürindist sõites peab robot mäletama oma teekonda ja kõrvaldama tupikteed. See saavutab selle, salvestades iga pöörde ja ristmiku massiivi, kontrollides konkreetseid pöörete ja ristmike kombinatsioone ning asendades tupikteed sisaldavad kombinatsioonid. Pöörete ja ristmike lõplik nimekiri on otsetee labürindi kaudu.

Võimalikud pöörded on: vasak, parem, tagumine (tupikteel) ja sirge (mis on ristmik).

Kombinatsioonid asendatakse järgmiselt:

  • "Vasak, tagasi, vasak" muutub "Sirgeks".
  • "Vasak, tagasi, parem" muutub "Tagasi".
  • "Vasak, tagasi, sirge" muutub "õigeks".
  • "Paremale, tagasi, vasakule" muutub "Tagasi".
  • "Otse, tagasi, vasakule" muutub "õigeks".
  • "Otse, tagasi, otse" muutub "Tagasi".

KUIDAS ROBOT MINU MAZET KÄSITLEB

  1. Kui robot hakkab sõitma, näeb ta tühikut paremal ja salvestab massiivi loendis sirge.
  2. Seejärel pöörab see vasakule ja lisab nimekirja vasakule. Loend sisaldab nüüd: Sirge, vasak.
  3. Tupikusse pöördudes pöörab see ümber ja lisab nimekirja Tagasi. Loend sisaldab nüüd: Sirge, Vasak, Tagasi.
  4. Sissepääsu juurest möödudes lisab see nimekirja Straight. Loend sisaldab nüüd: Sirge, Vasak, Tagasi, Sirge. See tuvastab kombinatsiooni ja muudab vasakule, seljale, otse paremale. Loend sisaldab nüüd sirge, õige.
  5. Tupikusse pöördudes pöörab see ümber ja lisab nimekirja Tagasi. Nimekiri sisaldab nüüd: Sirge, Parem, Tagasi.
  6. Pärast vasakpööret on loendis sirge, parem, tagumine, vasak. See tuvastab kombinatsiooni ja muudab paremale, tagasi, vasakult taha. Loend sisaldab nüüd sirget, tagumist.
  7. Pärast järgmist vasakpööret on loendis sirge, tagumine, vasak. See muudab selle kombinatsiooni paremaks. Loend sisaldab nüüd ainult õiget.
  8. See läbib tühiku ja lisab loendisse Sirge. Loend sisaldab nüüd paremat, sirget.
  9. Pärast parempööret loend sisaldab paremat, sirget, paremat, mis on otsene tee.

2. samm: kaalutlused roboti programmeerimisel

MIS MIKROKONTROLLERI KAALUTLUSED

Kui robot otsustab pöörduda, peaks ta kas tegema laia pöörde või minema enne pööramist lühikest vahemaad edasi ja pärast pööramist uuesti lühikest vahemaad ilma andurit kontrollimata. Esimese lühikese vahemaa põhjus on see, et robot ei tohiks pärast pööret seina põrgata ja teise lühikese vahemaa põhjus on see, et pärast roboti pöördumist näeks andur pikka ruumi, kust ta just tuli ja robot arvab, et peaks uuesti pöörama, mis pole õige asi.

Kui robot tunneb paremal ristmikku, kuid see ei ole parempööre, olen leidnud, et on hea lasta robotil umbes 10 tolli (25 cm) ettepoole sõita ilma andureid kontrollimata.

LEGO MINDSTORMS EV3

Kuigi LEGO Mindstorms EV3 on väga mitmekülgne, võimaldab see ühe tellisega ühendada mitte rohkem kui ühe igat tüüpi andurit. Kaks või enam tellist võiks olla aheldatud, kuid ma ei tahtnud teist tellist osta ja seetõttu kasutasin järgmisi andureid (kolme ultrahelisensori asemel): infrapuna-, värvisensorit ja ultraheliandurit. See õnnestus hästi.

Kuid värvisensor on väga lühikese vahemikuga, umbes 2 tolli (5 cm), mis toob kaasa mõned erilised kaalutlused, nagu allpool kirjeldatud:

  1. Kui värvisensor tuvastab ees oleva seina ja robot otsustab paremale või ümber pöörata, peaks ta kõigepealt varundama, et anda endale piisavalt ruumi, et pöörduda ilma seina põrutamata.
  2. Keeruline probleem ilmneb mõne sirge ristmiku korral. Värvianduri lühikese ulatuse tõttu ei suuda robot kindlaks teha, kas ta tunneb õiget ristmikku või paremale pööramist. Olen proovinud seda probleemi lahendada, seadistades programmi nii, et see salvestaks loendisse iga kord, kui robot seda tunneb, ja kustutaks seejärel loendist mitu järjestikku. See fikseerib olukorra, kus parempööre järgneb labürindis sirgele, kuid mitte olukorrale, kus parempööre toimub ilma sirguta. Proovisin ka programmi seadistada nii, et see välistaks „sirge”, kui see on vahetult enne „õiget”, kuid see ei toimi, kui paremale pööre järgneb „sirgele”. Ma ei ole suutnud leida lahendust, mis sobiks kõigile juhtumitele, kuigi ma arvan, et robotil oleks võimalik vaadata läbitud vahemaad (lugedes mootori pöörlemisandureid) ja otsustada, kas see on sirge või õige pööre. Ma ei arvanud, et seda tüsistust tasub selles projektis AI kontseptsiooni demonstreerimiseks teha.
  3. Värvianduri eeliseks on see, et see eristab seina pruuni ja tõkke punast, mida kasutasin väljapääsu juures, ning annab robotile lihtsa võimaluse otsustada, millal ta labürindi lõpetas.

3. samm: põhiprogramm

Põhiprogramm
Põhiprogramm

LEGO Mindstorms EV3-l on väga mugav ikoonipõhine programmeerimismeetod. Plokid kuvatakse arvuti kuvaekraani allosas ja neid saab programmi loomiseks lohistada programmeerimisaknasse. EV3 tellise võib arvutiga ühendada kas USB-kaabli, Wi-Fi või Bluetoothi kaudu ning seejärel võib programmi arvutist tellisesse alla laadida.

Programm koosneb põhiprogrammist ja mitmest alamprogrammist “Minu plokid”. Üleslaaditud fail sisaldab kogu programmi, mis asub siin:

Põhiprogrammi sammud on järgmised:

  1. Määrake ja vormindage pöörde loendamise muutuja ja massiiv.
  2. Oodake 5 sekundit ja öelge "Mine".
  3. Alustage tsüklit.
  4. Sõida labürindist läbi. Kui väljapääs on saavutatud, väljutakse tsüklist.
  5. Kuvage tellise ekraanil seni labürindis leitud ristmikud.
  6. Kontrollige, kas teed tuleks lühendada.
  7. Kuva ristmikud lühendatud teel.
  8. Pöörake tagasi sammu 4 juurde.
  9. Pärast silmust sõitke otseteed.

Ekraanipilt näitab seda põhiprogrammi.

4. samm: minu plokid (alamprogrammid)

Minu plokid (alamprogrammid)
Minu plokid (alamprogrammid)

Kuvatakse Navigeeri minu plokk, mis juhib seda, kuidas robot labürindist läbi sõidab. Trükis on väga väike ja ei pruugi olla loetav. Kuid see on hea näide sellest, kui mitmekülgsed ja võimsad on if-avaldused (LEGO EV3 süsteemis nimetatakse lülititeks).

  1. Nool nr 1 osutab lülitile, mis kontrollib, kas infrapunaandur näeb objekti rohkem kui teatud kaugusel. Kui jah, siis täidetakse ülemine plokkide seeria. Kui ei, siis antakse juhtimine üle suurele alumisele plokkide seeriale, kus asub nool nr 2.
  2. Nool nr 2 osutab lülitile, mis kontrollib, millist värvi värvisensor näeb. Juhte on 3: ülaosas ei ole värvi, keskel on punane ja all on pruun.
  3. Kaks noolt #3 osutavad lülititele, mis kontrollivad, kas ultrahelisensor näeb objekti kaugemal kui teatud kaugus. Kui jah, siis täidetakse ülemine plokkide seeria. Kui ei, siis antakse juhtimine üle plokkide alumisele reale.

Minu plokid tee lühendamiseks ja otsetee läbimiseks on keerukamad ja oleksid täiesti loetamatud ning seetõttu ei ole need selles dokumendis lisatud.

Samm: roboti ehitamise alustamine: baas

Roboti ehitamise alustamine: baas
Roboti ehitamise alustamine: baas
Roboti ehitamise alustamine: baas
Roboti ehitamise alustamine: baas

Nagu varem mainitud, lubab LEGO Mindstorms EV3 ühe tellisega ühendada mitte rohkem kui ühe igat tüüpi andurit. Kasutasin järgmisi andureid (kolme ultrahelisensori asemel): infrapuna-, värvisensorit ja ultraheliandurit.

Allpool olevad fotopaarid näitavad, kuidas robot üles ehitada. Iga paari esimene foto näitab vajalikke osi ja teine foto samu osi, mis on omavahel ühendatud.

Esimene samm on roboti aluse ehitamine, kasutades näidatud osi. Robotibaas on näidatud tagurpidi. Väike L-kujuline osa roboti tagaosas on toeks seljale. See libiseb, kui robot liigub. See töötab hästi. EV3 komplektis ei ole veerepallitüüpi osa.

6. samm: aluse ülaosa, 1

Aluse ülaosa, 1
Aluse ülaosa, 1
Aluse ülaosa, 1
Aluse ülaosa, 1

See samm ja järgmised kaks sammu on mõeldud roboti aluse ülaosa, värvisensori ja kaablite jaoks, mis on kõik 10 -tollised (26 cm) kaablid.

Samm: aluse ülaosa, 2

Aluse ülaosa, 2
Aluse ülaosa, 2
Aluse ülaosa, 2
Aluse ülaosa, 2

8. samm: aluse ülaosa, 3

Aluse ülaosa, 3
Aluse ülaosa, 3
Aluse ülaosa, 3
Aluse ülaosa, 3

Samm: infrapuna- ja ultraheliandurid

Infrapuna- ja ultraheliandurid
Infrapuna- ja ultraheliandurid
Infrapuna- ja ultraheliandurid
Infrapuna- ja ultraheliandurid

Järgmisena on infrapunaandur (roboti vasakul küljel) ja ultraheliandur (paremal). Samuti 4 tihvti tellise kinnitamiseks peal.

Infrapuna- ja ultrahelisensorid asuvad tavalise horisontaali asemel vertikaalselt. See võimaldab paremini tuvastada seinte nurki või otsi.

Samm: kaablid

Kaablid
Kaablid

Kaablid ühendatakse tellisega järgmiselt:

  • Port B: vasakpoolne suur mootor.
  • Port C: parem suur mootor.
  • Port 2: ultraheli andur.
  • Port 3: värvisensor.
  • Port 4: infrapunaandur.

11. samm: viimane samm roboti ehitamisel: kaunistamine

Roboti ehitamise viimane etapp: kaunistamine
Roboti ehitamise viimane etapp: kaunistamine
Roboti ehitamise viimane etapp: kaunistamine
Roboti ehitamise viimane etapp: kaunistamine

Tiivad ja uimed on ainult kaunistamiseks.

12. samm: ehitage labürint

Ehita labürint
Ehita labürint
Ehita labürint
Ehita labürint

Labürindist peaks piisama kahest lainepapist karbist. Tegin labürindi seinad 5 tolli (12,5 cm) kõrguseks, kuid 10 tolli (4 tolli) peaks sama hästi toimima, kui lainepapist napib.

Esiteks lõikasin karbi seinte ümber, 25 cm (10 tolli) alt. Siis lõikasin seinte ümber 5 tolli alt. See annab mitu 5-tollist seina. Samuti lõikasin ümber karpide põhja, jättes stabiilsuse tagamiseks umbes 1 tolli (2,5 cm) seinte külge.

Erinevaid tükke saab lõigata ja liimida või kleepida kõikjal, kus see labürindi moodustamiseks vajalik on. Iga ummistunud tee kõrvalseinte vahel peaks olema 30 cm (11 või 12 tolli) ruumi. Pikkus ei tohiks olla väiksem kui 10 tolli (25 cm). Neid vahemaid on vaja, et robot saaks ümber pöörata.

Mõned labürindi nurgad võivad vajada tugevdamist. Samuti tuleb mõned sirged seinad painutada, kui need sisaldavad sirgendatud pappnurka. Nendes kohtades tuleks põhjale liimida väikesed õhukese papi tükid, nagu näidatud.

Väljapääsul on punane tõke, mis koosneb poolest punasest õnnitluskaardi ümbrikust ja alusest, mis on valmistatud kahest õhukesest papist, nagu näidatud.

13. samm: labürint

Labürint
Labürint

Üks hoiatus on see, et labürint ei tohiks olla suur. Kui roboti pöörded on õige nurga all, suurenevad lahknevused mõne pöörde järel ja robot võib joosta seintesse. Pidin mitu korda pöörete pöörete seadistustega nokitsema, et isegi minu tehtud väikesest labürindist edukalt läbi sõita.

Selle probleemi lahendamiseks on vaja lisada tee sirgendamise rutiin, mis hoiaks robotil teatud kauguse vasakust seinast. Ma ei lisanud seda. Programm on piisavalt keeruline ja see on piisav AI kontseptsiooni demonstreerimiseks selles projektis.

KOKKUVÕTTEV MÄRKUS

See oli lõbus projekt ja suurepärane õppimiskogemus. Loodan, et ka teile tundub see huvitav.

Soovitan: