Rauma OKL koodaa

Lego Mindstorms
EV3 -ohjelmointi

Markku Leino

Viitasaari & Lounais-Suomen LUMA-keskus

www.luntti.net/RaumaOKL15

Sisällysluettelo

  • Legorobotit
  • Perusohjelmointi
  • Tehtäviä
  • Viivanseuranta
  • Sokkelo
  • Muuta ohjelmoitavaa
  • Kilpailut
  • Lisämateriaalia

Legorobotit

Ev3 on uudempi, mutta jos varastosta löytyy Nxt2, sitä kannattaa ehdottomasti yhä käyttää.

Ev3:n ohjelmointiympäristö on mukavampi käyttää, mutta Nxt2 toimii uudella Ev3-G:llä. Katso ohjeet ultraäänisensorin ja valosensorin käyttöön Luntista.

Miksi legoja

Legot ovat tuttu ja turvallinen oppimisympäristö ainakin nuoremmille (ja vanhemmille) oppijoille. Oppimispolku menee

  • Rakenteet ja arkkitehtuuri
  • Liikkuvat esineet ja mekaniikka
  • Käytökseen vastaavat oliot eli robotit.

Alakouluissa, lukioissa ja korkeakouluissa legot soveltuvat erittäin hyvin opetukseen. Yläkouluissa olen havainnut ongelmia — liian lapsellisia? Ota yhteyttä hyvistä yläkoulun käytänteistä. Niitä riittää, esimerkiksi teknologiakursseilta.

Perusohjelmointi: lohkot

silmukka

odota

valinta (switch)

etäisyysanturi

datan loggaus tiedostoon

datan loggaus näytölle

Tehtäviä

Perustehtäviä legoroboteille

Mäen nousu

Helppo koodata; suoraan mäkeä ylös. Lisää myös alastulo joko siltamaisella rakenteella tai kääntämällö robotti ylhäällä.

Optimaalinen geometria ylöspäin ja alaspäin on erilainen.

Sumo

Sumo on mielenkiintoinen, mutta mukava kaksintaistelu. Robotit eivät yleensä hajoa, mutta oppilaat innostuvat. Peruskoodaus sumoon on helppo;

Sumo on Suomessa kisalaji.

Viivanseuranta

Viivanseurannassa oikeasti seurataan viivan toista reunaa. Tässä riittää mielenkiintoa pidemmäksikin ajaksi.

Yksinkertaisin on kaksitasoinen viivanseuranta. Sen oppilaat osaavat tehdä yksin. Tasoja voi lisätä, vaikka kolmi- tai viisitasoiseksi.

Kolmitasoisessa robotti kulkee suoraan, jos anturin arvot ovat sopivat.

Rahalla voit lisätä toisen valosensorin; hevosella saa myös valmiita viivanseurantasensoreita.

Verrannollinen viivanseuranta (P)

Verrannollissa viivanseurannassa on äärettömän monta tasoa.

Miksi tyytyä muutamaan, kun meillä on suora (verrannollisuuskerroin) käytettävissä?

Muistava viivanseuraaja (PI)

Lisätään viivanseuraajarobottiin termi, mikä muistelee, kuinka paljon virhettä (eli kuinka paljon on käännytty) tähän mennessä.

Muisti parantaa hieman robotin suorituskykyä, mutta vaikeuttaa parametrien arvailua. Mahdollisesti robotti korjaa liikaa.

Ennustava viivanseuraaja (PID)

Viivan käyryyttä voidaan ennustaa edellisen valoanturin lukeman perusteella. Otetaan se huomioon käännössä, ja johan robotti kulkee hienosti ja nopeaan.

PID-robotti kannattaa näyttää oppilaille, innostuvat usein. Joku ymmärtää tai saa idean, mutta itse koodaus voi olla vaikeaa.

★Nörtti-varoitus

Move steering ja Move tank -blokeissa on sisäänrakennettu PID robotin suorassa kulkemiselle. Se on tehty moottoreille B ja C, joita siis kannattaa aina käyttää kulkemismoottoreihin. Käytä moottoreita A ja D käsiin ja muihin työkaluihin.

Sokkelo

Sokkeloalgoritmi löytyy vaikka Umberto Econ Ruusun nimestä. Robotit tykkäävät siitä.

Ohessa pätkä Pekka Piholan lokakuun alussa julkaistavasta legorobotti-kirjasta ja sen sokkelo-osuudesta.

★Muuta ohjelmoitavaa

Ev-G on monipuolinen softa, ja ev3 on nopea (800 MHz, ARM) prosessori. Se antaa mahdollisuuden ohjelmoida graafisesti lähes mitä vain.

Matematiikka

Kielestä löytyy pyöristysblokki ja matemaattiset peruslaskutoimitukset ja perusfunktiot, esimerksi mod, sin, cos. Myös satunnaislukugeneraattori ja pyöristys.

Muuttuja, vakiot ja taulukot

Sijoitetaan muuttujaan Integraali uusi arvo; ensin lasketaan, sitten kirjoitetaan ja viimeinen blokki lukee arvon jotta sitä voidaan käyttää muuhun.

Taulukoiden käyttö on suotavaa.

Logiikka ja totuusarvot

Range-blokki antaa 0/1. Selkeät Venn-diagmmitkuvat.

★Omat blokit

Käytä niitä. Jos teet oman blokin yhdellä sisäänmenolla, mutta tarvitset toisen, aloita alusta. Jos teet oman blokin kahdella sisäänmenolla, mutta tarvitset vain yhden, aloita alusta tai jätä toinen huomiotta.

★Rinnakkaistus

Rinnakkaiset blokit voidaan synkronoida.

★Käänteinen heiluri (Segway)

Ev3-palikan teho riittää Segwayn tekoon.

★Bluetooth-viestittely

LEGOLAND Hackathon 2015 -tapahtumassa rakennettiin mm. bluetoothilla toimiva liikennejärjestelmä autoineen ja valoineen.

★Rubikin kuutio

Valmis algorimi, Mindcub3r. Mutta, kaikki tykkäävät tästä.

★Muita kieliä

Muutkin kielet onnistuvat, esimerkiksi Enchanting, C#, BricxCC, NBC, NXC, Robolab, RobotC, NXTGCC, leJOS NXJ, nxtOSEK, ICON, Matlab, Simulink, Lua, Ada, URBI, FLL NXT, ruby-nxt, Robotics.nxt, LibNXT, PyNXC jne.

Kilpailut

Innokas järjestää Suomessa Robocuppia, missä kisataan useassa eri lajissa

tanssi, jalkapallo, pelastus, sumo ja freestyle.

RoboCupJr:n lisäksi Suomesta löytyy maailman suurin robottikisa, First Lego League. SM-kisat järjestetään keväällä RoboCup:n yhteydessä, mutta aiemmin pääsee jo kisaamaan. Ota yhteyttä Markkuun.

FLL

FLL on iloinen festivaalityylinen kilpailu, missä toisten kunnioittaminen, uuden löytäminen ja hauskanpito on erittäin oleellisia.

FLL:ssä kisataan rakentamalla autonominen robotti, joka ratkoo ennalta annettuja tehtäviä. Tehtävät ovat yleensä haasteellisia, ja mielestäni soveltuvat hyvin yläkouluun.

Robottiohjelmoinnin lisäksi FLL:ssä tuotetaan tieteellinen työ, esitellään tuloksia sekä verkostoidutaan.

Uudet tehtävät julkaistaan vuosittain, ja ne liittyvät johonkin teemaan. Esimerkiksi

  • vanhusten hoito
  • nanoteknologia
  • ruuan tuotanto
  • luonnonkatastrofit

Tehtäviä on parisenkymmentä pelilaudalla joka pysyy samana vuodesta toiseen. Laudalla oleva matto ja siihen kiinnitetyt tehtävät saa vuosittain.

Lisämateriaalia

  • Innokas järjestää kaikkea kivaa
  • FLL Finlandin sivut
  • Pekka Pihola kirjoittaa suomalaista kirjaa legoroboteista.
  • Markkuun (t@MarkkuOpe, Markku.o.LeinoⒶgmail.com) saa ottaa yhteyttä.

Kiitos

Viitasaaren kunta.