Siirry sisältöön
Digitaalisuus
Robottiohjelmoimalla helposti koodauksen maailmaan!

Luotaan tässä artikkelissa robottien vallankumousta ja uusia mahdollisuuksia. Perehdyn alan nykytilaan keskittyen ohjelmoinnin opetukseen robottien avulla.

Kirjoittajat:

Jukka Juslin

lehtori
Haaga-Helia ammattikorkeakoulu

Julkaistu : 15.12.2017

Länsimaissa yhä useammin ratkaiseva ja rahallisesti keskeisin lenkki on ohjelmointi. Siinä on erittäin tärkeää säilyttää ainakin osa Linus Torvaldsin motosta ”just for fun”. Tulokset ovat usein niin suuren työn takana, ettei ohjelmointia jaksa ilman kiihkoa ja intohimoa tehdä. Tuotekeskeisellä ja innostuneella ajattelulla on suuri potentiaali, toisin kuin pelkkiin voittoihin keskittymisellä.

Lego Mindstorm -roboteilla oli takavuosina erittäin vahva asema lasten ja aikuistenkin robottiohjelmoinnissa. Ne ovat helppoudessaan kiehtova ohjelmointilaji; robotin liikkeet voi kirjaimellisesti havaita. Sittemmin tulivat avoimet Arduino-pohjaiset ratkaisut ja nykyään ohjelmointia voi opetella jo Raspberryllakin. Näiden lisäksi on vielä erinäisiä suljettuja ohjelmointiratkaisuja.

Luotaan tässä artikkelissa robottien vallankumousta ja uusia mahdollisuuksia. Perehdyn alan nykytilaan keskittyen ohjelmoinnin opetukseen robottien avulla. Pääosa aineistosta on kerätty joulukuussa 2017 järjestetystä Slush-tapahtumasta, jossa robottipohjainen ohjelmoinnin opetus oli startupien kautta vahvasti esillä. Esittelen muutamia esimerkkejä ja käymme läpi niiden hyviä ja huonoja puolia. Lisäksi kerron kahdesta DIY (do-it-yourself) -robotista ja siitä, miten niiden avulla ohjelmointia voidaan opettaa. Ohjelmoinnin oppimisen taktiikat on tärkeä aihe, joten kohdistan artikkelissa erityistä huomiota siihen.

Liikkuvia kasvoja ja tarttuvia robottikäsiä

Ensimmäisenä esittelyssä on brittiläisen teknologia-alan yrityksen Creoqoden tuotteet. Yritys on jo tuottanut pelikonsolin, ja tulossa on myös joukkorahoituksen kautta tuotettavat robottikasvot. Tuotteet on esitelty kuvassa 1.

Kuva 1. Brittiläinen Creoqode tuottaa erittäin mielenkiintoisia robottisarjoja, joista uusimpana ovat robottikasvot ja vanhempana pelikonsoli. Robotin toisessa silmässä on kamera ja toisessa ultraäänisensori, kasvot liikkuvat eteen- ja taaksepäin.

Creoqoden laitteita ohjelmoidaan Arduinon tekstieditorilla. Yhtiön periaatteena on välttää graafisia ohjelmointikieliä, ja he ovat suorastaan rajanneet ne pois. Arduinon tekstieditori ei ole kovin anteeksiantava tai auttava, mutta toisaalta opettava ja muistuttaa ohjelmoinnin todellista luonnetta.

Yhtiön pelikonsoliin tehty koodi sisältää todella paljon isoja matriiseja ja niiden alustuksia. Tämmöisen taulukon käsittely ei-graafisessa mielessä on hieman vaikeaa. Koodin tuottaminen on hiukan työlästä ja sitä voidaan jopa pitää hiukan ruman näköisenä. Silti, tuotteelle valitut välineet, tekniikka ja uusi kasvosovellus ovat erittäin hyviä, koska muilla ei ole vastaavaa tarjolla. Lisäksi niiden ohjelmointiympäristö muistuttaa aitoa työympäristöä.

Creoqodella on ollut suhteellisen onnistuneita kampanjoita luovien projektien joukkorahoituspalvelu Kickstarterissa. Sivuillaan he väittävät tuotteiden sisältävän trendikkäästi tekoälyä, mutta pelikonsolin ja robottikasvojen lähdekoodiin tutustuttaessa viitteitä sellaisesta ei ole. Tekoälyksi luokittelu edellyttäisi esimerkiksi tekoälyalgoritmien käyttöä.

Toinen esiteltävä on suomalainen – mutta osittain myös venäläisillä taidoilla kehittävä – Robbo, joka tuottaa kuvan 2 mukaisia tuotteita.

Kuva 2. Suomalainen Robbo tarjoilee modulaarisia Arduino-pohjaisia ohjelmoinnin opetussarjoja, joissa käytetään Scratch-ohjelmointikieltä. Roboteista on sekä liikkuva että muuta toiminnallisuutta sisältävä versio. Robbon tuotteisiin on helppo lisäillä komponentteja ja irrottaa niitä.

Robbo-ohjelmointi tuotetaan lapsille ja nuorille tarkoitetulla Scratch-ohjelmointikielellä, jolla on pystytty tekemään hämmästyttävän monimutkaisiakin ohjelmia. Ohjelmakokonaisuuden hahmottaminen pitää kuitenkin tehdä melko eri tavalla kuin oikeassa tekstipohjaisessa kehitysympäristössä. MIT:n (Massachusetts Institute of Technology) kehittämä Scratch voi olla varmasti toimiva tekniikka silloin, kun apua ei ole saatavilla ja ohjelmointia pitäisi tehdä täysin yksin ilman minkäänlaista hyvää opiskelumateriaalia. Scratchissa kuitenkin esimerkiksi silmukkarakenteet pitää graafisesti hahmottaa hieman eri tavalla kuin tekstuaalisessa ohjelmointimuodossa. Siinä ohjelmointi perustuu graafisten elementtien raahaamiseen näytöllä oikeille kohdilleen. Tästä syystä hyppäys oikeaan, tekstuaaliseen ohjelmointiin, voi olla liian suuri.

Kuva 3. Laajennuselementti, joka pystyy tarttumaan ja poimimaan esineitä.

Robbolta on tulossa markkinoille uusi mielenkiintoinen laajennuselementti, joka kykenee tarttumaan ja poimimaan esineitä. ABB on toteuttanut vastaavanlaisen robotin, joka tarjoilee kahvia ja glögiä. Kuvassa 3 on esitelty erittäin edullinen – lähtöhinnaltaan noin viisi euroa – tarttuja.

Tulevaisuudessa on siis nähtävissä erinäisten ihmisten suorittamien toimintojen automatisointia. Esimerkiksi juomaravintolassa hyvin mekaaninen toimenpide kuten olutkolpakkojen täyttäminen on automatisoitavissa, jolloin aikaa jää ruuhkahuippuna enemmän asiakaspalveluun ja maksun varmistamiseen – jopa käteisellä. Optimi olisikin tämäntyyppinen fyysinen robotisaatio, jossa säilytetään ihmisen kohtaamisen palveluarvo, mutta voidaan välttää toistuvia liikkeitä.

Käsistään kätevä rakentaa robotin itse

Omatekoinen robotti voi olla hyvä ratkaisu, jos tarvittavat osat ovat olemassa ja tekijä on saanut ohjausta, jotta hankitut osat varmasti toimivat. Jos rahaa on käytettävissä 100 euroa, omatekoisen robotin saisi kätevästi kasaan esimerkiksi amerikkalaisen Adafruitin tuotteilla. Sen tuotteita voi hankkia yrityksen oman sivuston sekä niin kotimaisten kuin ulkomaistenkin verkkokauppojen kautta ja jopa joistakin kivijalkakaupoista.

Kuva 4. Duke 1 -robotin on valmistanut Jukka Juslin ohjelmoinnin oppimista varten. Robotti toimi kehittyneemmän Duke 2 -robotin innoittajana. Duke 1:ssä on kaksi jatkuvasti pyörivää servoa (engl. continuous rotation) ja vetämätön pyörä. Robotin osat ovat lennokista.

Kuvassa 4 esiteltävän itse kehittämäni Duke 1 -robotin filosofiana oli sopivan monimutkainen koodi – ei liian vaikea, mutta ei myöskään liian helppo. Alan yliopistoissa on usein käytetty PID-pohjaista (A proportional-integral-derivative controller) harjoitusta, joka on sinänsä nerokas, mutta aloittelijalle sen matematiikkaan pohjautuva ydin voi olla vaikea ymmärtää. Lisäksi hyvän tuotoksen tekemiseen menee paljon aikaa, jos robotti pitää itse kasata. Duke 1 -robotin renkaat on valmistettu jo lähinnä eläkkeelle siirtyneistä lennokeista.

Duke-robotit on suunniteltu labyrinttiä varten, jossa ohjelmoinnin haasteet keskittyvät lähinnä esteitä määrittävän ultraäänisensorin tekemien oikeiden raja-arvojen löytämiseen ja keskeytyksiä skannaavaan ultraäänisensoriin. Labyrintistä, kuten lattiaan teipatusta PID-ajoradastakin, on helppo mitata aika, joka robotilta kuluu ratkaisun saavuttamiseen. Labyrintissä korostuvat yllättävän paljon järkevä ohjelman rakenne ja sen sopiva monimutkaisuus. Lisäksi tietynlainen kilpailuhenkisyys auttaa toki myös jonkin verran labyrintin selvittämisessä.

Kuvassa 5 esiteltävän Duke 2 -robotin ultraäänisensori eroaa ensimmäisestä siinä, että se saa robotin niin sanotusti näkemään 180-asteisesti.

Kuva 5. Duke 2 -robotin runko on Tuukka Uosukaisen 3D-printterillä tulostama. Liikkumissysteemi on samankaltainen kuin Duke 1:ssä. Duke 1 toimi inspiraationa uudemmalle sivuillensa näkevälle Duke 2:lle.

Liikkuvien robottien kanssa ei juuri mikään ole rajana – mahdollisuutena on edetä jopa tekoälyyn asti. Tällainen voisi olla esimerkiksi robotti, joka piirtää itselleen kartan ympäristöstään.

Viimeisenä esittelen legoista rakennetun, hieman Lego MindStorm -henkisen, Robo-donen, jota sitäkin ohjelmoidaan graafisella kielellä. Legot toimivat helppoina rakennusaineksina erilaisille kokonaisuuksille. Kuvassa 6 näkyy graafista ohjelmointikieltä ja japanilaisten rakentama legorobotti.

Kuva 6. Japanilainen Robo-done tarjoaa franchise-tyyppisesti ”Robot Programming School” -aktiviteettejaan. Robotit ovat legon tapaisia ja niitä ohjelmoidaan Scratch-tyyppisellä graafisella kielellä.

Robotit ovat mainio tapa opetella ohjelmointia

Robotit ovat erittäin suositeltava tapa aloittaa ohjelmoinnin opettelu. Sen haittapuolina ovat kuitenkin korkea hinta, rikkoutuvuus, tekniset ongelmat ja luokkatilanteen organisoinnin haasteet. Ohjelmoinnin tulee myös olla tavoitteellista ja hyvälaatuista.

Graafisella kielellä ohjelmoitaessa saatetaan olla niin kaukana oikean ohjelmointikielen todellisuudesta, ettei graafisesta ohjelmointiosaamisesta ole juurikaan hyötyä. Ohjelmoinnin haasteiden tulisi olla kohtuullisia; esimerkiksi keskenään taistelevien Arduino-robottien koodi on yllättävän monimutkainen.

Kaikissa edellä esitellyissä robottiohjelmissa on hyvät ja huonot puolensa. Vaikka elämmekin 2010-luvulla, ihmisten fyysiset yhteisöt olisivat valtava voimavara ohjelmoinnin opettelemisessa. Se sisältää omat riskinsä ja haasteensa, että aiheeseen tutustuu pelkästään verkossa; välillä asiat on selostettu hankalammin kuin, mitä ne todellisuudessa ovat ja oleellisen tiedon löytäminen ei ole aina helppoa. Hacklab-liike on vienyt eteenpäin tuloksekasta yhteisöllisyyttä – tästä esimerkkinä kotimainen ruuvi.com-tuote. Näyttäisi siltä, että tältä pohjalta saattaa syntyä tärkeitä innovaatioita.

Yhteisöllisyys on hieno voimavara robottien avulla opiskeltavassa ohjelmoinnissa, kuten monessa muussakin asiassa. Myös keskinäinen kilpailu voi sosiaalisten suhteiden lisäksi luoda lisäimua oppimiselle.

Ohjelmoinnin voi toki edelleen aloittaa komentorivi-, www- tai mobiilipohjaisesti – yleensä myös siinä on kuitenkin hyvä pitäytyä suhteellisen yksinkertaisessa ympäristössä.

Kirjoittaja on Haaga-Helian tietojenkäsittelyn lehtori Jukka Juslin.

Kuvat: Jukka Juslin