Od igre s kockicama do programera LEGO Mindstorms Autori: Aleksander Radovan, KING-ICT d.o.o. Tin Kramberger, Tehničko Veleučilište Zagreb Tomislav Gligora, Veleučilište Velika Gorica Sažetak Potražnja za kvalitetnim programerima na tržištu rada je već duže vrijeme aktualna i kontinuirano je u porastu. Radi toga je uključivanje djece u svijet programiranja potrebno ostvariti što je ranije moguće već u osnovnoj školi. Razvojni alati koji se koriste kod programiranja sve se više temelje na vizualnom slaganju logike i algoritama koji se koriste u programima, kako bi se fokus s tehničke strane implementacije usmjerio na što brže i kvalitetnije ostvarenje cilja koji je potrebno postići funkcionalnog programa. Mladim informatičarima je u svijet programiranja najlakše kročiti kroz igru, što tvori idealan temelj za spajanje dvaju interesnih područja: igru s kockicama i programiranje vlastitih robota. LEGO kockice i njihova mogućnost slaganja različitih objekata su oduvijek privlačile djecu različitih uzrasta i poticale njihovu maštu i kreativnost. Osim serija kockica za najmlađe uzraste, inženjeri LEGO-a su osmislili i setove koji omogućavaju izgradnju robota kojeg je moguće programirati na vrlo jednostavan način. Najnaprednija inačica takvih setova kockica naziva se LEGO Mindstorms. U ovom radu je opisano kako je LEGO Mindstorms EV3 set moguće iskoristiti za učenje programiranja vlastitog robota opremljenog sa senzorom za dodir, senzorom udaljenosti i senzorom za raspoznavanje boje, te mikroprocesorom i servomotorima koji omogućavaju kretanje robota. Korištenjem ekvivalentnih grafičkih simbola kojima je moguće postići funkcionalnost if-else naredbi, while petlji i postavljanje vrijednosti varijabli programiranje za najmlađe uzraste može postati vrlo zabavno i jednostavno, rezultati izvođenja programa su brzo vidljivi, a što je najvažnije, stvara se temeljno znanje za programiranje u velikom broju različitih programskih jezika. Ključne riječi: LEGO kockice, Mindstorms EV3, programiranje, podučavanje LEGO Mindstorms LEGO roboti već 15 godina igraju vrlo važnu ulogu u visokoškolskoj edukaciji tehničkih fakulteta [1][2]. LEGO Mindstorms set sadrži hardver i softver potreban za sastavljanje i programiranje različitih robota. Sama struktura robota se sastoji od standardnih kockica i programabilnog modula kroz koji se programira sam robot.
Programiranje se obavlja specijaliziranim softverom koji je potrebno instalirati na osobno računalo, te završen program prebaciti pomoću USB ili Bluetooth veze u memoriju programabilnog modula. Predviđen je da ga koriste djeca iznad 10 godina, međutim, zbog različitih mogućnosti koje pruža ga često koriste i stariji entuzijasti. Set LEGO Mindstorms EV3 sastoji se od senzora za dodir koji može detektirati kontakt s drugim tijelima ili dijelovima robota, te senzora za boju koji može detektirati osam različitih boja. U EV3 set je uključen i infracrveni senzor, te daljinski upravljač kojim je također moguće zadavati naredbe robotima. Interaktivni servomotori služe za preciznu kontrolu robota, pri čemu ugrađeni rotacijski senzori mogu mjeriti pomicanje servomotora u koracima od jednog stupnja. Programabilni EV3 modul omogućava spajanje sedam različitih komponenti kojima upravlja, pri čemu ima četiri ulazna porta (za senzore) i četiri izlazna porta za upravljanje servomotorima. Sadrži ARM9 procesor temeljen na Linux operacijskom sustavu, sa 64 MB RAM i 16 MB Flash memorije. Programabilni modul uključuje i matrični displej za upravljanje i pokretanje programa spremljenih u memoriju modula, mogućnost on brick programiranja bez korištenja programske podrške na računalu, mogućnost spajanja na računalo pomoću USB-a i Bluetootha, te zvučnik za generiranje zvukova. Programiranje LEGO Mindstormsa se temelji na drag and drop povezivanju intuitivnih blokova programa koju u obliku ikona omogućavaju jednostavno oblikovanje logike samog programa. Pritom je moguće precizno definirati grananje samog programa, konfiguriranje senzora, aktiviranje servomotora i slično. Postoji inačica EV3 seta za kućnu uporabu (namijenjenu djeci i hobistima), te set za edukaciju (namijenjen studentima i učiteljima) koji je proširen senzorom za udaljenost, žirosenzorom i dodatnim senzorom za detekciju kontakta. Osim toga se te dvije inačice razlikuju po tome što programska podrška za edukaciju nije besplatna, dok je ona za kućnu uporabu besplatna i može se preuzeti sa službenih stranica LEGO-a. Korištenje grafičkih simbola za modeliranje logike programa
U početnim lekcijama predmeta vezanih u programiranje u osnovnim i srednjim školama obrađuju se poglavlja vezana uz definiranje vrijednosti varijablama, crtanje dijagrama toka kojim se grafički prikazuje implementirati algoritam, te korištenje programskim petlji kojima se ponavlja određena logika programa dok se ne ispune zadani uvjeti. U nastavku poglavlja opisuju se tri često korištena konstrukta u programiranju i njihova izvedba pomoću Mindstorms grafičkih simbola: if naredbe, while petlje i implementacija funkcionalnosti brojača nekih događaja u programu. Navedeni primjeri ne uključuju pisanje programskog koda, već programiranje konfiguriranjem Mindstorms grafičkih simbola. Implementacija if naredbe Jedna od najčešćih naredbi u programiranju je vezana uz provjeru logičkog uvjeta: je li nešto ispunjeno (istinito) ili nije. Za to se koristi naredba if i ima pseudokod prikazan u nastavku (u programskom isječku 1). Nakon ključne riječi Ako potrebno je navesti logički uvjet (npr. je li neka vrijednost varijable pozitivna) o kojem ovisi izvođenje ostatka programa (logicki_uvjet). Ako je uvjet ispunjen, obavlja se jedna ili više naredbi označena s prvi_zadatak, a ako uvjet nije ispunjen, obavlja se jedna ili više naredbi označena s drugi_zadatak. Ekvivalentna implementacija if naredbe korištenjem Mindstorms blokova prikazana je na slici 1. U primjeru se ispituje logicki_uvjet koji se temelji na tome je li aktiviran senzor za dodir ili ne (simbol predstavlja senzor na dodir, a simbol označava slučaj kad je pritisnut). Gornja grana nakon logičkog uvjeta se izvodi u slučaju kad senzor za dodir detektira pritisak (što je predstavljeno simbolom servomotora ). U tom slučaju izvodi se kretanje servomotora priključenog na port D, korištenjem 50% snage, u trajanju od jedne rotacije motora, pri čemu odmah nakon rotacije motor zaustavlja (predočeno simbolima, respektivno).
Ako je logicki_uvjet ispunjen: Obavi prvi_zadatak; Inače: Obavi drugi_zadatak; Programski isječak 1. Pseudokod if naredbe Slika 1. Implementacija if naredbe pomoću Mindstorms blokova Donja grana se izvodi u slučaju kad senzor za dodir nije detektirao pritisak (što je predstavljeno simbolom zvučnika koji predstavlja reprodukciju zvuka). U tom slučaju pokreće se reprodukcija zadane zvučne datoteke, 100%-tne razine glasnoće zvuka do završetka njezinog trajanja, što je predstavljeno simbolima. Implementacija while petlje Za ponavljanje određene radnje unaprijed zadani broj puta, u programiranju je potrebno koristiti programsku petlju. Jedna od često korištenih petlji je while petlja koja u svakom koraku provjerava je li ispunjen uvjet da se petlja dalje izvodi. U pseudokodu navedenom u programskom isječku 2. napisana je petlja s jednostavnim uvjetom da se izvodi 10 puta. Ponavljaj 10 puta: Obavi zadatak; Programski isječak 2. Pseudokod for petlje
Slika 2. Implementacija for petlje pomoću Mindstorms blokova Implementacija while petlje korištenjem Mindstorms blokova prikazana je na slici 2. Unutar simbola petlje ( ) koja se izvodi zadani broj puta (10) nalazi se simbol koji označava kretnju dvaju motora ( ), koji su priključeni na portove B i C, sa 75%-tnom razinom snage ( ) u zadanom broju rotacija ( ) uz zaustavljanje kočenjem ( ). Implementacija brojača događaja Tijekom programiranja se koriste razni tipovi varijabli u koje se spremaju vrijednosti na kojima se temelji izvođenje ostatka programa. Vrlo često se koriste varijable koje predstavljaju brojače nekih događaja unutar programa (npr. detekcije dodira putem senzora). Pomoću tih brojača sprema se trenutna vrijednost ponavljanja događaja te njenim povećavanjem za konstantnu vrijednost i zapisivanjem ponovno u tu istu varijablu postiže se efekt brojanja. Programski isječak 3. prikazuje pseudokod kojim se postiže funkcionalnost brojača: KONSTANTA = 1; BROJAC = 0; Dok ne prođe 10 sekundi: Ako je pritisnut senzor za dodir: BROJAC = BROJAC + KONSTANTA; Programski isječak 3. Pseudokod implementacije brojača zvučnih signala
Slika 3. Implementacija brojača dodira pomoću Mindstorms blokova Mindstorms blokovi omogućavaju implementaciju brojača dodira na način koji je prikazan na slici 3. Na početku (na krajnjoj lijevoj strani) potrebno je nakon početnog bloka inicijalizirati vrijednost varijable BROJAC na 0 (korištenjem simbola i operacije zapisivanja vrijednosti pomoću simbola ). Nakon toga je potrebno konfigurirati petlju koja će se izvršavati 10 sekundi korištenjem simbola. Unutar te petlje potrebno je ubaciti if naredbu koja provjerava je li senzor detektirao dodir (simbol ). Ako je detektirao, potrebno je uvećati vrijednost brojača konstantnu vrijednost 1, a ako nije detektirao dodir, nije potrebno ništa obaviti (što je implementiranom donjom granom if naredbe). Vrijednost brojača je moguće dohvatiti tako da se iskoristi simbol koji predstavlja varijablu BROJAC i odabere operacija čitanja vrijednosti pomoću bloka. Korištenjem matematičnog bloka za zbrajanje potrebno je na ulaze (sa simbolima ) označene s i dovesti izlazne vrijednosti (sa simbolima ) varijable BROJAC i konstante vrijednosti 1 definirane simbolom. Rezultat operacije zbrajanja potrebno je pomoću simbola za dohvat izlazne vrijednosti računske
operacije ( ) spremiti u varijablu BROJAC koja se koristi u koracima programske petlje koji slijede. Prikladnost LEGO Mindstorms paketa za korištenje u edukacijskim ustanovama Kombiniranjem jednostavnih principa robotike i LEGO kockica učiteljima je omogućeno osmišljavanje zadataka za učenike koji uključuju područje znanosti, tehnologije, inženjerstva i matematike na vrlo zabavan, poučan način i uz konkretnu primjenu [3][4]. Učenici različitih uzrasta mogu učiti kako dizajnirati i programirati potpuno funkcionalne modele robota koji mogu izvršavati automatizirane zadatke, bez širokog znanja o dizajniranju strujnih krugova, programiranja u asemblerskim jezicima ili o umjetnoj inteligenciji [1]. Učenicima je omogućeno upoznavanje grana znanosti kroz istraživanje korištenja energije, različitih sila, brzine i snage, te upoznavanje efekta trenja. Kroz programiranje i upravljanje ulaznim i izlaznim uređajima, korištenjem bežične komunikacije, te istraživanje i dijeljenje informacija s drugim kolegama koji se na svijetu bave istom problematikom, učenicima omogućava korištenje različitih tehnologija i produbljuje njihovo razumijevanje o čemu je sve potrebno voditi računa kod sudjelovanja na takvim projektima. Razvojem inženjerskih sposobnosti kroz osmišljavanje i razvoj vlastitih rješenja, odabirom prikladnih komponenti i njihovo korištenje za izgradnju cjelovitog sustava, testiranjem i evaluacijom dobivenih rješenja učenici mogu otkriti interes, strast i talent za područje u kojem bi mogli nastaviti svoje školovanje na visokoškolskim ustanovama [3], ali i odabrali zanimanje u kojem će što lakše pronaći posao i bili konkurentniji na globalnom tržištu. Zabavan način korištenja matematike kroz mjerenja, korištenjem koordinatnog sustava i pretvorbu mjernih jedinica dodatno može učvrstiti i produbiti znanje te prirodne znanosti. Također, što je vrlo bitno, učenicima je omogućeno rješavanje istog problema na različite načine [1], što potiče kreativnost i inovativnost u rješavanju praktičnih problema, a to je ključna značajka dobrih programera.
LEGO je posebnu pažnju posvetio edukacijskim programima (engl. The Care for Education Programme) [5] kroz mogućnosti uvođenja različitih tema u kurikulume škola. Fokus kod edukacije je postavljen na eksperimentiranje djece sa svojom okolinom u obliku rješavanja problema, te na razvoj kreativnosti i kolaboracije, motivacije i usmjeravanje svojih interesa u razvoj ključnih sposobnosti za daljnje obrazovanje i napredovanje. Improvizacija i istraživanje korištenjem prikladnih alata poput LEGO Mindstorms EV3 seta omogućava razvoj mentalnih sposobnosti u fazi života kad je to od ključne važnosti. Nove tehnologije, računala, digitalne informacije i online komunikacija pomažu kod proširivanja i korištenja znanja, kao i unapređenje načina efektivnog podučavanja i stjecanja korisnih iskustava tijekom učenja. Zaključak Prema najnovijem istraživanju partnera europske inicijative eskills for Jobs 2014 proveli su u Hrvatskoj istraživanje o potrebama i mogućnostima zapošljavanja ICT stručnjaka. Najtraženiji će biti softverski razvojni inženjeri [6]. U suradnji s edukacijskim ustanovama i LEGO klubom Kockice pokrenuta je akcija u kojoj će 40 nastavnika u osnovnim školama biti educirano za korištenje edukacijskog kompleta LEGO Mindstorms EV3, što potvrđuje njegov veliki potencijal o podučavanju najmlađih uzrasta vještinama koje uključuju matematiku i logičko razmišljanje. Potreba za prilagođavanjem osnovnoškolskog obrazovnog programa u segmentima informatike je sve naglašenija, a tehnološke mogućnosti sve veće, što omogućava znatno lakše i zabavnije stjecanje potrebnih znanja učenicima kako bi u nastavku školovanja unapređivali svoje vještine i pripremali se tržište rada na kojem nedostaje kvalitetnih stručnjaka u području programiranja. Poticanjem timskog rada i kreativnosti, ali i kompetitivnih izazova na zabavan način [7], LEGO Mindstorms pruža mogućnost stjecanja znanja i iskustava koja su nužna u karijeri uspješnih i kvalitetnih programera i softverskih inženjera. Literatura 1. E. Danahy, E. Wang, J. Brockman, Adam Carberry, Ben Shapiro, C, B. Rogers: LEGO-based Robotics in Higher Education: 15 Years of Student Creativity, International Journal of Advanced Robotic Systems, siječanj 2014.
2. E.M. Jiménez Jojoa, E. Caicedo Bravo, E. B. Bacca Cortés: Tool for Experimenting With Concepts of Mobile Robotics as Applied to Children s Education, IEEE TRANSACTIONS ON EDUCATION, VOL. 53, NO. 1, veljača 2010. 3. U. Ihme, J. Fischer, T. Ihme: Using LEGO Mindstorms for teaching a Computer Language, EDULEARN 14, str. 6606-6615, ISBN 978-84-617-0557-3, srpanj 2014. 4. U. Ihme: Teaching Robotics and Programming with LEGO Mindstorms for Students in all ages, EDULEARN 13, str. 324-332, ISBN 978-84-616-3822-2, srpanj 2013. 5. LEGO education zajednica [online], dostupno na <http://education.lego.com/> 6. eskills for Jobs 2014, dostupno na <http://eskills.hr/> 7. S. Atmatzidou, I. Markelis, S. Demetriadis: The use of LEGO Mindstorms in elementary and secondary education: game as a way of triggering learning, Intl. Conf. on SIMULATION, MODELING and PROGRAMMING for AUTONOMOUS ROBOTS, studeni 2008., Venecija, ISBN 978-88-95872-01-8, str. 22-30