Sisällysluettelo:

Tekoäly LEGO EV3: n sokkeloa ajavassa robotissa: 13 vaihetta
Tekoäly LEGO EV3: n sokkeloa ajavassa robotissa: 13 vaihetta

Video: Tekoäly LEGO EV3: n sokkeloa ajavassa robotissa: 13 vaihetta

Video: Tekoäly LEGO EV3: n sokkeloa ajavassa robotissa: 13 vaihetta
Video: Как охотиться на людей ► 1 Прохождение Manhunt (PS2) 2024, Heinäkuu
Anonim
Image
Image
Kuinka sokkelo ratkaistaan
Kuinka sokkelo ratkaistaan

Tämä on yksinkertainen, itsenäinen robotti, jolla on jonkin verran tekoälyä. Se on suunniteltu tutkimaan sokkeloa ja kun se asetetaan takaisin sisäänkäynnille, ajamaan uloskäynnin läpi ja välttämään umpikujia. Se on paljon monimutkaisempi kuin edellinen projektini, joka yksinkertaisesti ajoi sokkelon läpi. Tässä robotin on muistettava kulkemansa polku, poistettava umpikujat, tallennettava uusi polku ja seurattava sitten uutta polkua.

Edellinen robotti on kuvattu täällä:

Robotti on rakennettu LEGO Mindstorms EV3: n avulla. EV3 -ohjelmisto toimii tietokoneella ja luo ohjelman, joka ladataan sitten EV3 Brick -nimiseen mikrokontrolleriin. Ohjelmointimenetelmä on kuvakepohjainen ja korkeatasoinen. Se on erittäin helppoa ja monipuolista.

Tarvikkeet

OSAT

  1. LEGO Mindstorms EV3 setti
  2. LEGO Mindstorms EV3 ultraäänianturi. Se ei sisälly EV3 -sarjaan.
  3. Aaltopahvi sokkeloon. Kahden laatikon pitäisi riittää.
  4. Pieni pala ohutta pahvia joidenkin kulmien ja seinien vakauttamiseksi.
  5. Liimaa ja teippiä pahvikappaleiden yhdistämiseen.
  6. Punainen tervehdyskortin kirjekuori sokkelon poistumisen tunnistamiseksi.

TYÖKALUT

  1. Hyödyllinen veitsi pahvin leikkaamiseen.
  2. Teräsviivain leikkausprosessin helpottamiseksi.

OHJELMISTO

Ohjelma on täällä:

Vaihe 1: Kuinka sokkelo ratkaistaan

MAZE-AJOMENETELMÄ

On olemassa useita tapoja navigoida sokkelossa. Jos olet kiinnostunut tutkimaan niitä, ne on kuvattu erittäin hyvin seuraavassa Wikipedia -artikkelissa:

Valitsin vasemman seinän seurantamenetelmän. Ajatuksena on, että robotti pitää seinän vasemmalla puolella tekemällä seuraavat päätökset sokkelon läpi:

  1. Jos on mahdollista kääntyä vasemmalle, tee se.
  2. Muussa tapauksessa mene suoraan, jos mahdollista.
  3. Jos se ei voi mennä vasemmalle tai suoraan, käänny oikealle, jos mahdollista.
  4. Jos mikään edellä mainituista ei ole mahdollista, tämän on oltava umpikuja. Käänny ympäri.

Yksi varoitus on, että menetelmä voi epäonnistua, jos sokkelossa on silmukka. Silmukan sijainnista riippuen robotti voi jatkaa kiertoa silmukan ympäri ja sen ympäri. Mahdollinen ratkaisu tähän ongelmaan olisi se, että robotti siirtyisi oikeanpuoleiseen seinänseurantaan, jos se ymmärtäisi kulkevansa silmukassa. En sisällyttänyt tätä tarkennusta projektiini.

SOKEAN RATKAISEMINEN ETSIMÄÄN SUORA POLKU

Labyrintin läpi ajaessaan robotin on muistettava kulkeva polku ja poistettava umpikujat. Se saavuttaa tämän tallentamalla jokaisen käännöksen ja risteyksen matriisiin, tarkistamalla kulmien ja risteysten yhdistelmät kulloinkin ja korvaamalla umpikujan sisältävät yhdistelmät. Lopullinen luettelo käännöistä ja risteyksistä on suora polku sokkelon läpi.

Mahdolliset käännökset ovat: Vasen, Oikea, Takaisin (umpikujassa) ja Suora (joka on risteys).

Yhdistelmät korvataan seuraavasti:

  • "Vasemmalle, taakse, vasemmalle" tulee "suora".
  • "Vasemmalle, taakse, oikealle" tulee "takaisin".
  • "Vasen, selkä, suora" muuttuu "oikeaksi".
  • "Oikea, Takaisin, Vasen" muuttuu "Takaisin".
  • "Suora, selkä, vasen" muuttuu "oikeaksi".
  • "Suora, Selkä, Suora" tulee "Takaisin".

MITEN ROBOTTI KÄSITTELE MAZEITASI

  1. Kun robotti aloittaa ajamisen, se näkee välilyönnin oikealla puolella ja tallentaa Straightin taulukon luetteloon.
  2. Sitten se kääntyy vasemmalle ja lisää vasemmalle luetteloon. Luettelo sisältää nyt: Suora, vasen.
  3. Umpikujalla se kääntyy ympäri ja lisää Takaisin luetteloon. Luettelo sisältää nyt: Suora, Vasen, Takaisin.
  4. Se ohittaa kaistan, jota se käytti sisäänkäynnistä, lisää Straightin luetteloon. Luettelo sisältää nyt: Suora, Vasen, Selkä, Suora. Se tunnistaa yhdistelmän ja muuttaa vasemmalle, taakse, suoraan oikealle. Luettelo sisältää nyt Suora, oikea.
  5. Umpikujalla se kääntyy ympäri ja lisää Takaisin luetteloon. Luettelo sisältää nyt: Suora, Oikea, Takaisin.
  6. Vasemman käännöksen jälkeen luettelo sisältää Suora, Oikea, Takaisin, Vasen. Se tunnistaa yhdistelmän ja vaihtaa oikealle, taakse, vasemmalta taakse. Luettelo sisältää nyt Suora, Takaisin.
  7. Seuraavan vasemman käännöksen jälkeen luettelo sisältää Suora, Takaisin, Vasen. Se muuttaa yhdistelmän oikeaksi. Luettelossa on nyt vain Oikea.
  8. Se ohittaa välilyönnin ja lisää Suoraan luetteloon. Luettelo sisältää nyt Oikea, Suora.
  9. Oikean käännöksen jälkeen luettelo sisältää oikean, suoran, oikean, joka on suora polku.

Vaihe 2: Huomioita robotin ohjelmoinnissa

MITÄ MIKROKONTROLLIERIA KOSKEVAT HUOMAUTUKSET

Kun robotti päättää kääntyä, sen on joko käännettävä leveästi tai siirryttävä eteenpäin lyhyen matkan ennen kääntymistä ja käännöksen jälkeen jälleen lyhyen matkan eteenpäin tarkistamatta anturia. Ensimmäisen lyhyen matkan syy on se, että robotin ei pitäisi törmätä seinään käännöksen jälkeen, ja toisen lyhyen matkan syy on se, että kun robotti on kääntynyt, anturi näkee pitkän tilan, josta se juuri tuli, ja robotin mielestä sen pitäisi kääntyä uudelleen, mikä ei ole asianmukaista.

Kun robotti havaitsee risteyksen oikealla puolella, mutta se ei ole oikea käänne, olen huomannut, että on hyvä saada robotti ajamaan eteenpäin noin 25 cm (10 tuumaa) tarkistamatta sen antureita.

LEGO MINDSTORMS EV3: N ERITYISET NÄKÖKOHDAT

Vaikka LEGO Mindstorms EV3 on erittäin monipuolinen, se sallii enintään yhden kustakin tunnistintyypistä, jotka on liitetty yhteen tiiliin. Kaksi tai useampi tiili voisi olla ketjutettu, mutta en halunnut ostaa toista tiiliä, joten käytin seuraavia antureita (kolmen ultraäänianturin sijasta): infrapuna-anturi, värianturi ja ultraääni-anturi. Tämä toimi hyvin.

Värianturin kantama on kuitenkin hyvin lyhyt, noin 5 cm (2 tuumaa), mikä johtaa muutamiin alla kuvattuihin erityisominaisuuksiin:

  1. Kun värisensori havaitsee edessä olevan seinän ja robotti päättää kääntyä oikealle tai kääntyä ympäri, sen on ensin peruutettava, jotta se saa tarpeeksi tilaa kääntyä törmäämättä seinään.
  2. Joissakin "suorissa" risteyksissä esiintyy monimutkainen ongelma. Värianturin lyhyen kantaman vuoksi robotti ei voi määrittää tunnistaako se oikean "suoran" risteyksen vai johdon oikealle käännökseen. Olen yrittänyt korjata tämän ongelman asettamalla ohjelman tallentamaan "suoran" luetteloon joka kerta, kun robotti havaitsee yhden, ja poistamaan sitten useamman "suoran" peräkkäin luettelosta. Tämä korjaa tilanteen, jossa oikea käänne seuraa "suoraa" sokkelossa, mutta ei tilannetta, jossa on oikea käännös ilman "suoraa" ennen sitä. Yritin myös asettaa ohjelman poistamaan "suoran", jos se on juuri ennen "oikeaa", mutta tämä ei toimi, jos oikea käännös seuraa "suoraa". En ole löytänyt ratkaisua, joka sopii kaikkiin tapauksiin, vaikka luulen, että robotin olisi mahdollista tarkastella ajettua matkaa (lukemalla moottorin pyörimisanturit) ja päättää, onko se "suora" vai oikea vuoro. En usko, että tämä komplikaatio olisi kannattanut tehdä AI -konseptin demonstroimiseksi tässä projektissa.
  3. Värianturin etuna on se, että se erottaa seinän ruskean ja uloskäynnillä käyttämäni esteen punaisen ja tarjoaa robotille helpon tavan päättää, milloin se on suorittanut sokkelon.

Vaihe 3: Pääohjelma

Pääohjelma
Pääohjelma

LEGO Mindstorms EV3: ssa on erittäin kätevä kuvakepohjainen ohjelmointimenetelmä. Lohkot näkyvät tietokoneen näytön alareunassa, ja ne voidaan vetää ja pudottaa ohjelmointi-ikkunaan ohjelman luomiseksi. EV3 Brick voidaan liittää tietokoneeseen joko USB-kaapelilla, Wi-Fi-yhteydellä tai Bluetoothilla, ja ohjelma voidaan sitten ladata tietokoneelta Brickille.

Ohjelma koostuu pääohjelmasta ja useista "My Blocks" -aliohjelmista. Ladattu tiedosto sisältää koko ohjelman, joka on täällä:

Pääohjelman vaiheet ovat seuraavat:

  1. Määritä ja alusta vuoronlaskentamuuttuja ja matriisi.
  2. Odota 5 sekuntia ja sano "Mene".
  3. Aloita silmukka.
  4. Aja labyrintin läpi. Kun ulostulo saavutetaan, silmukka poistuu.
  5. Näytä Brickin näytöllä, sokkelossa tähän mennessä löydetyt risteykset.
  6. Tarkista, onko polkua lyhennettävä.
  7. Näytä leikatun polun risteykset.
  8. Palauta vaiheeseen 4.
  9. Aja silmukan jälkeen suora polku.

Näyttökuva näyttää tämän pääohjelman.

Vaihe 4: Omat lohkot (aliohjelmat)

Omat lohkot (aliohjelmat)
Omat lohkot (aliohjelmat)

Navigate My Block, joka ohjaa sitä, miten robotti ajaa labyrintin läpi, näytetään. Painatus on hyvin pieni eikä välttämättä ole luettavissa. Mutta se on hyvä esimerkki siitä, kuinka monipuolisia ja tehokkaita if-lauseet ovat (LEGO EV3 -järjestelmän kytkimet).

  1. Nuoli #1 osoittaa kytkimeen, joka tarkistaa, näkeekö infrapuna -anturi kohteen kauemmaksi kuin tietyn matkan päässä. Jos näin on, suoritetaan ykköslohkojen sarja. Jos ei, ohjaus siirretään suurelle alimmalle lohkosarjalle, jossa nuoli #2 sijaitsee.
  2. Nuoli #2 osoittaa kytkimeen, joka tarkistaa, minkä värin värianturi näkee. On kolme tapausta: ei väriä ylhäällä, punainen keskellä ja ruskea alhaalla.
  3. Kaksi nuolta #3 osoittavat kytkimiä, jotka tarkistavat, näkeekö ultraäänianturi kohteen kauemmin kuin tietyn matkan päässä. Jos näin on, suoritetaan ykköslohkojen sarja. Jos ei, ohjaus siirretään alimpaan lohkosarjaan.

Omat lohkot polun lyhentämiseksi ja suoran polun ajamiseksi ovat monimutkaisempia ja olisivat täysin lukukelvottomia, joten niitä ei sisällytetä tähän asiakirjaan.

Vaihe 5: Robotin rakentamisen aloittaminen: tukikohta

Robotin rakentamisen aloittaminen: tukikohta
Robotin rakentamisen aloittaminen: tukikohta
Robotin rakentamisen aloittaminen: tukikohta
Robotin rakentamisen aloittaminen: tukikohta

Kuten aiemmin mainittiin, LEGO Mindstorms EV3 sallii enintään yhden kustakin tunnistintyypistä, jotka on liitetty yhteen tiiliin. Käytin seuraavia antureita (kolmen ultraäänianturin sijasta): infrapuna -anturi, värianturi ja ultraääni -anturi.

Alla olevat valokuvaparit näyttävät kuinka rakentaa robotti. Kunkin parin ensimmäinen valokuva näyttää tarvittavat osat ja toinen kuva samoja osia, jotka on kytketty yhteen.

Ensimmäinen vaihe on rakentaa robotin pohja käyttäen esitettyjä osia. Robottipohja on esitetty ylösalaisin. Pieni L-muotoinen osa robotin takana on tuki selälle. Se liukuu robotin liikkuessa. Tämä toimii hyvin. EV3-sarjassa ei ole vierityspallo-tyyppistä osaa.

Vaihe 6: Pohjan yläosa, 1

Pohjan yläosa, 1
Pohjan yläosa, 1
Pohjan yläosa, 1
Pohjan yläosa, 1

Tämä vaihe ja seuraavat kaksi vaihetta koskevat robotin pohjan yläosaa, värianturia ja kaapeleita, jotka kaikki ovat 10 tuuman (26 cm) kaapeleita.

Vaihe 7: Pohjan yläosa, 2

Pohjan yläosa, 2
Pohjan yläosa, 2
Pohjan yläosa, 2
Pohjan yläosa, 2

Vaihe 8: Pohjan yläosa, 3

Pohjan yläosa, 3
Pohjan yläosa, 3
Pohjan yläosa, 3
Pohjan yläosa, 3

Vaihe 9: Infrapuna- ja ultraääni -anturit

Infrapuna- ja ultraääni -anturit
Infrapuna- ja ultraääni -anturit
Infrapuna- ja ultraääni -anturit
Infrapuna- ja ultraääni -anturit

Seuraavaksi ovat infrapuna -anturi (robotin vasemmalla puolella) ja ultraääni -anturi (oikealla). Lisäksi 4 nastaa tiilen kiinnittämiseksi päälle.

Infrapuna- ja ultraäänianturit sijaitsevat pystysuunnassa normaalin vaakasuoran sijasta. Tämä helpottaa seinien kulmien tai päiden tunnistamista.

Vaihe 10: Kaapelit

Kaapelit
Kaapelit

Kaapelit liitetään tiiliin seuraavasti:

  • Portti B: vasen suuri moottori.
  • Portti C: oikea suuri moottori.
  • Portti 2: ultraäänianturi.
  • Portti 3: värianturi.
  • Portti 4: infrapuna -anturi.

Vaihe 11: Viimeinen vaihe robotin rakentamisessa: koristelu

Viimeinen vaihe robotin rakentamisessa: koristelu
Viimeinen vaihe robotin rakentamisessa: koristelu
Viimeinen vaihe robotin rakentamisessa: koristelu
Viimeinen vaihe robotin rakentamisessa: koristelu

Siivet ja evät ovat vain koristeluun.

Vaihe 12: Rakenna sokkelo

Rakenna sokkelo
Rakenna sokkelo
Rakenna sokkelo
Rakenna sokkelo

Kahden aaltopahvipakkauksen pitäisi riittää sokkeloon. Tein sokkelon seinät 5 tuumaa (12,5 cm) korkeiksi, mutta 10 tuuman (4 tuumaa) pitäisi toimia yhtä hyvin, jos sinulla on aaltopahvia.

Leikkasin ensin laatikoiden seinien ympärille, 25 tuumaa (10 tuumaa) pohjasta. Sitten leikkasin seinien ympärille 5 tuumaa pohjasta. Tämä tarjoaa useita 5 tuuman seiniä. Leikkasin myös laatikoiden pohjat ympäri, jättäen noin 2,5 cm seiniin kiinnitettynä vakauden vuoksi.

Erilaiset palaset voidaan leikata ja liimata tai teipata missä tahansa sokkelon muodostamiseksi. Jokaisen umpikujan polun sivuseinien väliin tulee jäädä 30 cm (11 tai 12 tuumaa) tilaa. Pituuden tulee olla vähintään 10 tuumaa (25 cm). Nämä etäisyydet ovat tarpeen, jotta robotti voi kääntyä ympäri.

Joitakin sokkelon kulmia on ehkä vahvistettava. Jotkut suorat seinät on myös pidettävä taittumattomina, jos ne sisältävät suoristetun kartonkikulman. Pieniä ohuita pahvipaloja tulee liimata pohjaan näissä paikoissa, kuten kuvassa.

Uloskäynnissä on punainen este, joka koostuu puolikkaasta punaisesta tervehdyskortin kirjekuoresta ja pohjasta, joka on valmistettu kahdesta ohuesta pahvista, kuten kuvassa.

Vaihe 13: Sokkelo

Sokkelo
Sokkelo

Yksi varoitus on, että sokkelo ei saa olla suuri. Jos robotin käännökset ovat hieman kulmassa oikeaan nähden, eroavaisuudet kasvavat muutaman kierroksen jälkeen ja robotti voi juosta seiniin. Minun piti vaipua useita kertoja kierrosten asetuksiin saadakseni onnistuneen ajamisen pienen sokkelon läpi.

Yksi tapa kiertää tämä ongelma on sisällyttää polun suoristusrutiini, joka pitää robotin tietyn etäisyyden vasemmasta seinästä. En sisällyttänyt tätä. Ohjelma on tarpeeksi monimutkainen sellaisenaan, ja se riittää osoittamaan tekoälykonseptin tässä projektissa.

PÄÄTELMÄ HUOMAUTUS

Tämä oli hauska projekti ja hieno oppimiskokemus. Toivon, että pidät sitä myös mielenkiintoisena.

Suositeltava: