Kazalo:
- Zaloge
- 1. korak: Kako se rešuje labirint
- 2. korak: Upoštevajte pri programiranju robota
- 3. korak: Glavni program
- 4. korak: Moji bloki (podprogrami)
- 5. korak: Začetek gradnje robota: baza
- 6. korak: Vrh osnove, 1
- 7. korak: Vrh osnove, 2
- 8. korak: Vrh osnove, 3
- 9. korak: Infrardeči in ultrazvočni senzorji
- 10. korak: Kabli
- 11. korak: Zadnji korak pri izdelavi robota: dekoracija
- 12. korak: Zgradite labirint
- 13. korak: Labirint
Video: AI v robotu za vožnjo z labirintom LEGO EV3: 13 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:02
To je preprost, avtonomen robot z nekaj umetne inteligence. Zasnovan je za raziskovanje labirinta in, ko je postavljen nazaj na vhod, za vožnjo skozi izhod in izogibanje slepih ulic. Je veliko bolj zapleteno kot moj prejšnji projekt, ki je preprosto peljal skozi labirint. Tu si mora robot zapomniti prehojeno pot, odstraniti slepe ulice, shraniti novo pot in nato slediti novi poti.
Moj prejšnji robot je opisan tukaj:
Robot je izdelan z uporabo LEGO Mindstorms EV3. Programska oprema EV3 deluje v računalniku in ustvari program, ki se nato prenese v mikrokrmilnik, imenovan EV3 Brick. Način programiranja temelji na ikonah in je na visoki ravni. Je zelo enostaven in vsestranski.
Zaloge
DELI
- Komplet LEGO Mindstorms EV3
- LEGO ultrazvočni senzor Mindstorms EV3. Ni vključen v komplet EV3.
- Valovit karton za labirint. Zadostujeta dve škatli.
- Majhen kos tankega kartona za stabilizacijo nekaterih vogalov in sten.
- Lepilo in trak za povezovanje kartonskih kosov skupaj.
- Rdeča ovojnica z voščilnico za prepoznavanje izhoda iz labirinta.
ORODJA
- Nož za rezanje kartona.
- Jekleno ravnilo za pomoč pri rezanju.
PROGRAMSKA OPREMA
Program je tukaj:
1. korak: Kako se rešuje labirint
METODA VOŽNJE Z LABOROM
Obstaja več načinov krmarjenja po labirintu. Če jih želite preučiti, so zelo dobro opisani v naslednjem članku Wikipedije:
Izbral sem metodo sledenja levi steni. Ideja je, da bo robot obdržal steno na levi strani, tako da bo sprejel naslednje odločitve, ko gre skozi labirint:
- Če je mogoče zaviti levo, to storite.
- V nasprotnem primeru pojdite naravnost, če je mogoče.
- Če ne more levo ali naravnost, po možnosti zavijte desno.
- Če nič od naštetega ni mogoče, mora biti to slepa ulica. Obrni se.
Eno opozorilo je, da lahko metoda ne uspe, če ima labirint zanko. Odvisno od namestitve zanke bi lahko robot še naprej hodil okoli zanke. Možna rešitev za to težavo bi bila, če bi robot prešel na pravilo sledilnika desne stene, če bi spoznal, da gre v zanko. Te izboljšave nisem vključil v svoj projekt.
REŠITEV LABORITKA ZA NAJDENJE PREKO POTI
Robot si mora med vožnjo skozi labirint zapomniti pot, ki jo prevozi, in odpraviti slepe ulice. To doseže tako, da vsak zavoj in križišče shrani v matriko, preveri, ali obstajajo posebne kombinacije ovinkov in križišč, in zamenja kombinacije, ki vključujejo slepo ulico. Končni seznam ovinkov in križišč je neposredna pot skozi labirint.
Možni zavoji so: levo, desno, nazaj (v slepi ulici) in naravnost (ki je križišče).
Kombinacije se zamenjajo na naslednji način:
- "Levo, nazaj, levo" postane "naravnost".
- "Levo, Nazaj, Desno" postane "Nazaj".
- "Levo, nazaj, naravnost" postane "desno".
- "Desno, nazaj, levo" postane "Nazaj".
- "Ravno, nazaj, levo" postane "desno".
- "Naravnost, nazaj, naravnost" postane "nazaj".
KAKO ROBOT ROČA MOJ LABORITET
- Ko začne robot voziti, na desni vidi prostor in shrani Straight na seznam v matriki.
- Nato zavije levo in na seznam doda Left. Seznam zdaj vsebuje: naravnost, levo.
- Z slepo ulico se obrne in doda nazaj na seznam. Seznam zdaj vsebuje: naravnost, levo, nazaj.
- Mimo pasu, ki ga je uporabljal od vhoda, na seznam doda Straight. Seznam zdaj vsebuje: naravnost, levo, nazaj, naravnost. Prepozna kombinacijo in spremeni levo, nazaj, naravnost v desno. Seznam zdaj vsebuje naravnost, desno.
- Z slepo ulico se obrne in doda nazaj na seznam. Seznam zdaj vsebuje: naravnost, desno, nazaj.
- Po zavoju levo seznam vsebuje naravnost, desno, nazaj, levo. Prepozna kombinacijo in spremeni desno, nazaj, levo proti hrbtu. Seznam zdaj vsebuje naravnost, nazaj.
- Po naslednjem zavoju v levo seznam vsebuje naravnost, nazaj, levo. To kombinacijo spremeni v desno. Seznam zdaj vsebuje samo desno.
- Prenese presledek in na seznam doda naravnost. Seznam zdaj vsebuje desno, naravnost.
- Za desnim zavojem seznam vsebuje Desno, Ravno, Desno, ki je neposredna pot.
2. korak: Upoštevajte pri programiranju robota
MISLITVE O KAKRŠNEM MIKROKONTROLORJU
Ko se robot odloči zavijati, naj naredi širok zavoj ali pa gre pred vrtenjem na kratko razdaljo naprej, po zavoju pa spet na kratko, ne da bi preveril senzor. Razlog za prvo kratko razdaljo je, da se robot po zavoju ne bi zaletel v steno, razlog za drugo kratko razdaljo pa je, da bi po tem, ko se je robot obrnil, senzor videl dolg prostor, iz katerega je pravkar prišel, in robot bi mislil, da bi se moral spet obrniti, kar ni pravilno.
Ko robot zazna križišče na desni strani, vendar to ni desni ovinek, sem ugotovil, da je dobro, da se robot pripelje približno 10 centimetrov (25 cm) naprej, ne da bi preveril svoje senzorje.
MERITVE, POSEBNE ZA LEGO MINDSTORMS EV3
Čeprav je LEGO Mindstorms EV3 zelo vsestranski, ne omogoča več kot enega od vsakega tipa senzorja, povezanega z eno opeko. Dve ali več opek bi lahko bile vezane z marjeticami, vendar nisem hotel kupiti druge opeke, zato sem uporabil naslednje senzorje (namesto treh ultrazvočnih senzorjev): infrardeči senzor, barvni senzor in ultrazvočni senzor. To se je dobro izšlo.
Toda barvni senzor ima zelo kratek razpon, približno 2 cm (5 cm), kar vodi do nekaj posebnih premislekov, opisanih spodaj:
- Ko barvni senzor zazna steno spredaj in se robot odloči zaviti desno ali se obrniti, se mora najprej vrniti nazaj, da bi si dal dovolj prostora za obračanje, ne da bi se zaletel v steno.
- Zapletena težava se pojavi pri nekaterih križiščih »naravnost«. Zaradi kratkega dosega barvnega senzorja robot ne more ugotoviti, ali zazna pravilno križišče »Ravno« ali vodi v desno. To težavo sem poskušal odpraviti tako, da sem nastavil program, da shrani "Straight" na seznam vsakič, ko ga robot zazna, nato pa na seznamu odstrani več kot "Straight". To odpravlja situacijo, ko zavijanje desno sledi "naravnost" v labirintu, ne pa situacije, ko je zavoj desno brez "naravnost" pred njim. Poskusil sem tudi nastaviti program tako, da odpravi "naravnost", če je tik pred "desno", vendar to ne deluje, če zavijanje desno sledi "naravnost". Nisem mogel najti rešitve, ki bi ustrezala vsem primerom, čeprav predvidevam, da bi lahko robot pogledal na prehojeno razdaljo (z branjem senzorjev vrtenja motorja) in se odločil, ali gre za "naravnost" ali desno obrat. Nisem si mislil, da je ta zaplet vredno narediti za prikaz koncepta AI v tem projektu.
- Prednost barvnega senzorja je, da razlikuje med rjavo steno in rdečo bariero, ki sem jo uporabil na izhodu, in robotu omogoča enostaven način odločitve, kdaj je končal labirint.
3. korak: Glavni program
LEGO Mindstorms EV3 ima zelo priročen način programiranja, ki temelji na ikonah. Bloki so prikazani na dnu zaslona v računalniku in jih lahko povlečete in spustite v okno za programiranje, da sestavite program. EV3 Brick je lahko povezan z računalnikom prek kabla USB, Wi-Fi ali Bluetooth, program pa lahko nato prenesete iz računalnika v Brick.
Program je sestavljen iz glavnega programa in več »mojih blokov«, ki so podprogrami. Naložena datoteka vsebuje celoten program, ki je tukaj:
Koraki v glavnem programu so naslednji:
- Določite in inicializirajte spremenljivko štetja obratov in matriko.
- Počakajte 5 sekund in recite »Pojdi«.
- Začni zanko.
- Vozite skozi labirint. Ko je izhod dosežen, se zanka zapre.
- Na Brick -jevem zaslonu prikažite presečišča, ki ste jih doslej našli v labirintu.
- Preverite, ali je treba pot skrajšati.
- Prikažite križišča na skrajšani poti.
- Vrnite se na korak 4.
- Po zanki zapeljite po neposredni poti.
Posnetek zaslona prikazuje ta glavni program.
4. korak: Moji bloki (podprogrami)
Prikazan je Navigate My Block, ki nadzoruje, kako robot vozi skozi labirint. Tisk je zelo majhen in morda ni berljiv. Je pa dober primer, kako vsestranski in močni so stavki if (imenovani stikala v sistemu LEGO EV3).
- Puščica #1 kaže na stikalo, ki preveri, ali infrardeči senzor vidi predmet, ki je oddaljen več kot le določeno razdaljo. Če je tako, se izvede zgornja serija blokov. Če ne, se nadzor prenese na veliko, spodnjo serijo blokov, kjer se nahaja puščica #2.
- Puščica #2 kaže na stikalo, ki preveri, kakšno barvo vidi barvni senzor. Obstajajo 3 primeri: brez barve na vrhu, rdeča na sredini in rjava na dnu.
- Dve puščici št. 3 kažeta na stikala, ki preverjata, ali ultrazvočni senzor vidi predmet več kot na določeni razdalji. Če je tako, se izvede zgornja serija blokov. V nasprotnem primeru se nadzor prenese na spodnjo serijo blokov.
Moji bloki za skrajšanje poti in vožnjo po neposredni poti so bolj zapleteni in bi bili popolnoma nečitljivi, zato niso vključeni v ta dokument.
5. korak: Začetek gradnje robota: baza
Kot smo že omenili, LEGO Mindstorms EV3 ne omogoča več kot enega od vsakega tipa senzorja, povezanega z eno opeko. Uporabil sem naslednje senzorje (namesto treh ultrazvočnih senzorjev): infrardeči senzor, barvni senzor in ultrazvočni senzor.
Spodnji pari fotografij prikazujeta, kako sestaviti robota. Prva fotografija vsakega para prikazuje potrebne dele, druga fotografija pa enake dele, povezane skupaj.
Prvi korak je izdelava podlage robota s pomočjo prikazanih delov. Podstavek robota je prikazan na glavo. Majhen del v obliki črke L na zadnji strani robota je opora za hrbet. Drsi, ko se robot premika. To deluje v redu. Komplet EV3 nima dela tipa valjanja.
6. korak: Vrh osnove, 1
Ta korak in naslednja 2 koraka sta za vrh podnožja robota, barvno tipalo in kable, ki so vsi 10 -palčni (26 cm) kabli.
7. korak: Vrh osnove, 2
8. korak: Vrh osnove, 3
9. korak: Infrardeči in ultrazvočni senzorji
Nato sta infrardeči senzor (na levi strani robota) in ultrazvočni senzor (na desni). Tudi 4 zatiči za pritrditev opeke na vrh.
Infrardeči in ultrazvočni senzorji so nameščeni navpično namesto običajne vodoravne. To omogoča boljšo prepoznavo vogalov ali koncev sten.
10. korak: Kabli
Kabli so povezani z opeko na naslednji način:
- Vrata B: levi velik motor.
- Vrata C: desni velik motor.
- Vrata 2: ultrazvočni senzor.
- Vrata 3: barvni senzor.
- Vrata 4: infrardeči senzor.
11. korak: Zadnji korak pri izdelavi robota: dekoracija
Krila in plavuti so samo za dekoracijo.
12. korak: Zgradite labirint
Za labirint bi morali zadostovati dve škatli iz valovitega kartona. Stene labirinta sem naredil visoke 5,5 cm (12,5 cm), vendar bi morale 4 cm (10 cm) delovati prav tako, če vam primanjkuje valovitega kartona.
Najprej sem prerezal stene kartonov, 10 cm (25 cm) od dna. Nato sem prerezal stene 5 centimetrov od dna. To zagotavlja več 5-palčnih sten. Prav tako sem prerezal spodnji del škatel, pri čemer sem za stabilnost pritrdil približno 1 cm (2,5 cm) na stene.
Različne kose je mogoče razrezati in lepiti ali lepiti, kjer koli je potrebno za oblikovanje labirinta. Med stranskimi stenami na kateri koli poti z slepo ulico mora biti prostor 11 ali 12 palcev (30 cm). Dolžina ne sme biti manjša od 10 cm (25 cm). Te razdalje so potrebne, da se robot obrne.
Nekatere vogale labirinta bo morda treba okrepiti. Nekatere ravne stene je treba upogniti, če vključujejo poravnan vogal iz kartona. Majhne koščke tankega kartona je treba na ta mesta prilepiti na dno, kot je prikazano.
Izhod ima rdečo pregrado, sestavljeno iz polovice rdeče ovojnice z voščilnico in podlage iz dveh kosov tankega kartona, kot je prikazano.
13. korak: Labirint
Eno opozorilo je, da labirint ne sme biti velik. Če so zavoji robota pod rahlim kotom od pravega, se odstopanja po nekaj zavojih seštevajo in bi lahko robot naletel na stene. Večkrat sem se moral poigravati z nastavitvami vrtenja zavojev, da sem uspel skozi celo majhen labirint, ki sem ga naredil.
Rešitev tega problema je vključiti rutino poravnave poti, ki bi robota držala na določeni razdalji od leve stene. Tega nisem vključil. Program je dovolj zapleten in zadostuje za prikaz koncepta AI v tem projektu.
Sklepna opomba
To je bil zabaven projekt in odlična učna izkušnja. Upam, da se vam bo zdelo tudi zanimivo.
Priporočena:
GoBabyGo: Naredite vožnjo z igralno palico: 10 korakov (s slikami)
GoBabyGo: Naredite vožnjo z igralno palico: GoBabyGo je svetovna pobuda, ki je laikom pokazala, kako spremeniti igrače z avtomobili, tako da jih lahko uporabljajo majhni otroci z omejeno mobilnostjo. Projekt, ki vključuje zamenjavo nožnega pedala za
DIY GPS zapisovalnik podatkov za vašo naslednjo vožnjo/pohodniško pot: 11 korakov (s slikami)
DIY GPS zapisovalnik podatkov za vas Naslednja vožnja/pohodniška pot: To je zapisovalnik podatkov GPS, ki ga lahko uporabljate za več namenov, če želite prijaviti svojo dolgo vožnjo, ki ste jo vzeli konec tedna, da si ogledate jesenske barve. ali pa imate vsako leto jeseni najljubšo pot, ki jo obiščete
Avtomobil Arduino s samodejno vožnjo in krmiljenjem PS2: 6 korakov
Avtomobil Arduino z lastno vožnjo in krmiljenjem s PS2 igralnimi palicami: Živjo, ime mi je Joaquín in sem ljubitelj Arduina. Lansko leto sem bil obseden z Arduinom in pravkar sem začel delati vse mogoče stvari in ta avtomatski avtomobil s krmilno palčko je eden izmed njih. Če želite narediti kaj podobnega,
Robot z navodili za mini vožnjo: 8 korakov
Robot Mini Driving Instructables: Danes vam bom pokazal, kako narediti mini robota Instructables, ki vozi sam. To je res preprost projekt, v katerem boste uživali vi in vaša družina. Po izdelavi robota se boste počutili, kot da imate svojega robotskega hišnega ljubljenčka vedno ob sebi (
Odvračilni ukrep proti vlomu 'Sam doma'/ Uporabite Attiny13 za vožnjo z motorjem s koračnimi motorji in servo motorjem: 5 korakov
Odvračilni ukrep proti vlomilcem „Sam doma“/ Uporabite Attiny13 za vožnjo s koračnim motorjem in servo motorjem: To je morda eden mojih najbolj čudnih projektov doslej :-) Toda tudi če vas ne zanima, da bi vlomilce zadržali stran, lahko ta projekt uporabite za vse, kar želite potrebujete pogon koračnega motorja ali servo motorja ali celo več enosmernih motorjev z Attiny13. Mo