Viivaa seuraava robotti

Viivaa seuraava robotti

Viivaa seuraava robotti

  • Sopii: 5-6 luokkalaiset ja vanhemmat oppilaat
  • Tarvikkeet:
    • Lego Mindstorms NXT tai EV3 -robotiikkasarja (tai vastaava)
    • Tietokone ja ohjelmointiympäristö
    • Mustaa teippiä
  • Kesto: 90 minuuttia

Tässä tehtävässä rakennetaan ja ohjelmoidaan lattialla kulkeva, mutkittelevaa viivaa seuraava robotti Lego Mindstorms EV3 -sarjan avulla. Samaa ohjetta voi soveltaa hyvin myös muille robottisarjoille mikäli sopiva sensori viivan seuraamiseen on saatavilla!

Tehtävässä robotti seuraa mustaa viiva joka kaartua jompaan kumpaan suuntaan loivasti, mutta siinä voi olla myös jopa 90 asteen kulmia. Sensorina voi olla joko EV3-pakkauksen mukana tullut värisensori, jonka avulla pystytään värien lisäksi myös tunnistamaan valon määrää tai vastaavasti Lego Mindstormsin edellisestä sukupolvesta – NXT-sarjasta – tuttu valosensori. Viivaa seuraavan robotin ohjelmoiminen edellyttää ohjelmoijalta perustietoja silmukoista sekä ehtolauseista.

Viivaa seuraavan robotin rakentaminen

Viivaa seuraavan robotin rakentamista varten tarvitaan joko valo- tai värisensori. Yksinkertaisimmillaan robottiin kiinnitetään vain yksi sensori. Sensorin tulisi olla mieluiten robotin etuosassa, ja sen tulee osoittaa suoraan maata päin noin 1 cm etäisyydeltä. Robotin liikkumiseen tarvitaan kahta moottoria, ja moottorit voivat pyörittää joko renkaita tai vastaavasti telaketjuja, jotka löytyvät EV3-pakkauksesta. On kuitenkin olennaista, että EV3-älypalikkaan robotin ajamiseksi on kiinnitetty kaksi erillistä isoa moottoria.

Viivaa seuraavan robotin ohjelmoiminen

Robotti seuraa viivaa siksak-liikkeellä

Robotti seuraa viivaa siksak-liikkeellä

Robotin ohjelmoimisessa tarvitaan silmukkaa, ehtolausetta sekä moottoreita käänteleviä ohjelmapalikoita. Tällä kertaa emme kuitenkaan käytä Move Steering -palikoita, joilla voidaan ohjata molempia moottoreita yhtaikaa, vaan sen sijaan käytämme Large Motor -palikkaa, joka ohjaa vain yhtä moottoria kerrallaan. Ideana robotin ohjelmoimisessa on se, että kun sensori saa arvoja viivalta, käännytään viivasta pois päin ajamalla vain toista moottoria, ja kun sensori saa arvoja lattiasta, käännytään viivaan päin ajamalla taas vain toista moottoria. Robotti seuraa tällä tavoin viivaa tekemällä jatkuvasti pientä siksak-liikettä.

Haasteet ja hyödyt

Viivaa seuraavan robotin ohjelmoiminen voi olla haastavaa joissain olosuhteissa. Jos viiva lattiassa on kovin samanvärinen kuin lattia, saa käytetty sensori samankaltaisia arvoja sekä viivalta että lattiasta. Tämän vuoksi olisi hyvä valita viivalle paikka, jossa ei ole kovin suuria valon vaihteluita (varjoja yms.) ja viivan väriksi teippi (tai muu vastaava), joka eroaa paljon lattian väristä. Yleensä ohjelmoijan on hyvä testata etukäteen millaisia arvoja sensori lukee sekä lattiasta että viivasta, siten että ohjelman suoritusta ohjaavan Switch-palikan raja-arvo saadaan asetettua oikein. Jos viivan paikkaa muutetaan tai valaistusolosuhteet muuttuvat, raja-arvon voi joutua alustamaan ohjelmaan uudelleen. Raja-arvon selvittäminen tapahtuu EV3-älypalikasta valitsemalla päävalikosta kolmas välilehti, josta valitaan Port View. Port Viewistä valitaan se portti, mihin sensori on kiinnitetty jolloin sensorin lukema arvo tulee näkyviin näytölle ja muuttuu reaaliaikaisesti. Sensoria liikutellaan nyt sekä viivan että lattian päällä, jolloin tiedetään, millaisia arvoja sensori oikeasti lukee.

Hyötyinä viivaa seuraaavan robotin ohjelmoimisesta voidaan mainita tutustuminen ehtolauseisiin sekä silmukkarakenteisiin. Myös ohjelman debuggaaminen tulee usein tutuksi silloin, kun joudutaan tutkimaan sensorin arvoja Port Viewistä.

Viivaa seuraavan robotin esimerkkikoodi

Viivaa seuraavan robotin esimerkkikoodi

Myös viivaa seuraavassa robotissa tulee ohjelmoijan laittaa Large Motor-palikan suorituksen kestoksi on. Large Motor -palikan lisäksi tulee toinen moottoreista pysäyttää. Tähän tarkoitukseen käytetään Large Motorin off-vaihtoehtoa.

ijormanainen

View my other posts

Leave a Reply

Your email address will not be published. Required fields are marked *