Näytetään tekstit, joissa on tunniste Lietsun Koodauskerho. Näytä kaikki tekstit
Näytetään tekstit, joissa on tunniste Lietsun Koodauskerho. Näytä kaikki tekstit

lauantai 20. toukokuuta 2017

Lietsun koodauskerho Innokas-robottikisoissa Oulussa

Taas oli se aika vuodesta, että kerholaiset kuljetettiin bussilla Innokas-robottikisoihin esittelemään osaamistaan ja oppimaan uutta. Tällä kertaa reissuun lähti 5 kerholaista vaikka kerhossa on vuoden aikana käynyt enemmänkin porukkaa. Keskiviikkoaamuna 17.5. klo 8.45 bussi suuntasi kohti Oulun yliopistoa.

Lähtötilanne oli jälleen melko tuskainen: XSumo-robottimme oli sinänsä valmis mutta sen koodi ei toiminut, Freestyle-robotilla ei ollut kuoria, koska 3D-tulostin ei suostunut niitä tulostaamaan (ei Lielahdessa eikä Pohjois-Hervannassa), Pelastaja 1:llä ei ollut kouran toimintaan koodia ja Pelastaja 2 oli viikkoa ennen kisaa jouduttu purkamaan, koska alkuperäiset telaketjut luistivat mäessä liikaa. Onneksi meillä oli edes sponsorimme Eatech Oy:n hommaamat kisapaidat nostattamassa kisafiilistä...

Kisarobotteja koodattiin ja rakennettiin vielä majoituskoululla
Majapaikassamme Rajakylän koululla ensimmäinen ilta meni siis koodin debuggaamisen ja pahviaskartelun parissa. Nukkumaanmenoaikaan klo 23 kisarobotit olivat kuitenkin jo sellaisessa kunnossa, että niitä kehtasi muillekin esitellä.

Kisat alkoivat vauhdikkaasti XSumo-otteluilla. Niitä sitten riittikin 16 kappaletta! Ninjabanskujen Viima-robotti aloitti kisat hienosti voittamalla ensimmäiset ottelunsa vaikka robotti ei ollutkaan kovin nopea lähtörampilla. Sitten päätuomari Erkki totesi, että robotin etukiila oli sentin liian korkea ja määräsi sen poistettavaksi, ja seuraavat ottelut eivät menneetkään sitten enää niin hyvin. Kiila saatiin lopulta laskettua alemmas ja Ninjabanskut saivat taas muutaman voiton mutta jäivät oman sarjansa 8. sijalle mikä ei riittänyt jatkopaikkaan. Viiman rakentamiseen osallistui kerhossa myös Lenni.

Ninjabanskut Niko ja Pinja Viima-robotin kera


Pelastussarjassa ensimmäisenä päivänä oli joukkueiden haastattelu, jossa katsastettiin robotin rakenne ja tutkittiin koodia. Haastattelussa joukkueet saivat myös ohjeita robotin jatkokehittämiseen. Lietsun pelastajat 1 ja 2 suorittivat ensimmäisen päivän pelastusradan pistein 290 ja 280, ollen lopulta sijoilla 3 ja 4 ensimmäisen päivän jälkeen. Ei ollenkaan huonosti!

Ensimmäisen päivän pelastus 2 sarjan osallistujat Oliwer ja Ulrika
Lietsun pelastaja 1:n kompastuskivi ensimmäisenä päivänä oli valkoiset speedbumpit, joiden kohdalla robotti karkasi radalta. Myöskään pelastettavan tölkin poistaminen kentältä ei mennyt aivan suunnitelmien mukaan vaan robotti vein sen mukanaan.


Lietsun pelastaja 2:n suurin ongelma oli ylämäessä, josta se ei selviytynyt. Myös speedbumpien kanssakin oli pientä ongelmaa ja lopussa sekin karkasi pelastettavan kanssa omille teilleen.


Panssarivaunu Freestyle-joukkueemme sai aamupäivän aikana valmiiksi robottinsa pahvikuoret sekä työnsä esittelyvideon. Kaikki oli siis valmista kun tuomarit vierailivat pöydän luona iltapäivällä. Huomattavaa työssä oli se, että Panssarivaunun soittama musiikki on myös itse ohjelmoitu. Panssarivaunuprojektin rakentamiseen ja koodaamiseen osallistui myös Verneri.

Panssarivaunu -tiimin työtä esitteli Samppa


Ensimmäinen kisapäivä huipentui iltaohjelmaan, joka tälläkertaa oli vierailu Oulun Superparkissa.

Lietsun koodauskerho rentoutumassa Superparkissa
Toisena päivänä kisat jatkuivat pelastuksen osalta erittäin jännittävissä merkeissä. Lietsun pelastaja 1:n koodia oli paranneltu edellisenä iltana sekä koko aamupäivä, ja Oliwer sai kuin saikin kouran toimimaan oikealla tavalla juuri ennen kisaa. Kisasuorituksessa pelastettava ei kuitenkaan osunut kouran kohdalle ja edellisen päivän pisteet jäivät voimaan. Huono tuuri kertakaikkiaan!


Lietsun pelastaja 2:n koodi ja robotti olivat aivan samat kuin ensimmäisenäkin päivänä mutta robotti toimi kakkospäivän radalla paremmin. Pisteitä tuli kasaan huimat 305 ja niillä yllettiin 4. sijalle. Ei ollenkaan huono suoritus! Hyvä Ulrika!


Ensivuonna ehkä kannattaisi yhdistää parhaat puolet näitä kahdesta robotista niin koossa olisi jo aika kovatasoinen kisakone.
Lietsun pelastajat 1 ja 2 olivat hyvin samankaltaisia
Kisalajien välissä oli mahdollisuus tutustua myös muiden kisailijoiden robotteihin. Tässä parhaita paloja Freestyle - sarjasta.

Bilesauna, Robotti Niinistö ja Robottitar Haukio, Lottokone ja kameran avulla näkevä robottiauto
Kaikenkaikkiaan huippuhienot kisat jälleen kerran. Opimme paljon uusia asioita robotiikasta ja ohjelmoinnista sekä yhteistyön tärkeydestä ja siitä, että kisaprojektit kannattaa aloittaa hyvissä ajoin. Lietsun koodauskerho kiittää myös sponsoriamme Eatech Oy:tä, joka kustansi ruokailumme sekä hienot kisapaidat.
Lietsun koodauskerho kiittää hyvistä kisoista

sunnuntai 22. toukokuuta 2016

Lietsun koodauskerho RobocupJunior - kisoissa Helsingissä 19.-21.5.2016

Lietsun koodauskerho osallistui tänäkin vuonna RobocupJunior - kilpailuihin, jotka pidettiin Kaapelitehtaalla Helsingissä. Joukkueemme koostui 9 oppilasta, yhdestä huoltajasta ja yhdestä opettajasta. Osallistuimme XSumo-, Alkeispelastus- sekä Freestyle-kilpailuihin.

XSumo

XSumo on alakoululaisille tarkoitettu yleisöystävällinen kisalaji. Siinä kaksi robottia taistelevat sumoareenalla. Se joka jää viimeisenä taistelukentälle voittaa. Tänä vuonna kisaa oli vaikeutettu niin, että sumoareenalle päästäkseen robotin oli seurattava mustaa viivaa, jonka poikki kulki kolme kirkasta teippiä.

XSumo:n kisakenttä - Joona
Meillä oli tähän kilpailuun kaksi XSumo-robottia. Robotit saatiin valmiiksi jo Tampereella viikkoa ennen kilpailuja. Molemmissa oli toimiva värisensoreiden kalibrointiohjelma ja sumolaudalle pääsy oli huolella testattu joten olimme hyvässä iskussa, kun itse kilpailut alkoivat perjantaiaamuna.

Lietsun Xsumo - robotti
Palapelitehdas - robotti
Molemmat robotit pärjäsivät kilpailuissa todella hyvin. Lietsun Xsumo oli oman lohkonsa toinen ja pääsi ensimmäisen päivän jälkeen jatkoon. Palapelitehdas oli oman lohkonsa 4, ja oli siis myös hyvin lähellä päästä jatkoon, kun lohkon 3 parasta pääsivät kilpailemaan voitosta. Lietsun Xsumo ei päässyt semifinaaleihin mutta taisteli hyvin kahdella moottorilla ja kahdella renkaalla,  kun vastustajilla saattoi olla neljäkin moottoria ja 8 rengasta!!!

Jatkokilpailuissa vastustajat olivat enimmäkseen laatikkomallisia - Oliwer
Rakentelualueella sai tuunata robotteja - Verneri ja Lenni

Muutosten jälkeen Palapelitehtaan robotti kävi uusintakatsastuksessa
Lietsun Xsumon "lumikola" osoittautui tehokkaaksi tavaksi kammeta raskaampikin vastustaja kentältä. Myös Palapelitehdas rakensi omaan robottiinsa vastaavan mekanismin toisen päivän kilpailuihin, joten robotit myös kehittyivät hienosti kisan aikana.



Alkeispelastus

Alkeispelastuksessa meillä oli sama tiimi kuin viime vuonnakin: Lauri ja Ulrika. Tällä kertaa sekä robotti, että ohjelmisto olivat valmiina viikkoa ennen kilpailua (viime vuoden pelastajarobotti ei osannut seurata viivaa vielä Tampereelta lähdettäessä). Myös pelastusryhmä oli ottanut värisensorin kalibroinnin haltuun jo ennen kilpailuja.

Lietsun Pelastajat - robotti
Alkeispelastuksessa on kaksi yritystä suorittaa pelastusrata, jossa seurataan mustaa teippiä, joka kulkee useamman "huoneen" läpi. Reitillä on ramppi, oviaukkoja, esteitä, hidasteita, katkoksia seurattavassa viivassa, 90-asteen kulmia sekä kirkkaalla teipillä merkittyjä pelastettavia, joiden kohdalla on pysähdyttävä vilkuttamaan valoja tai annettava äänimerkki. Tehtävä on haastava, koska valaistusolosuhteet ovat hyvin erilaiset talon "alakerrassa" ja "yläkerrassa", samoin molemmat radat ovat erilaiset ja niiden keskinäinen valaistus on myös erilainen. Tällä kertaa ei ollut mahdollisuutta harjoitella harjoitusradalla, mikä vaikeutti entisestään kilpailua. Onneksi torstaina sai harjoitella hieman itse kisaradoilla, ja siinä selvisi se että robotti ei pääse mäkeä ylös ilman telaketjuja ja tämä muutos ehdittiin tehdä ennen kilpailujen alkamista.

Lietsun pelastajat - Lauri ja Ulrika
Ensimmäinen pelastusyritys lähti hyvin käyntiin, robotti selvisi ensimmäisestä huoneesta mutta sitten tapahtui jotain käsittämätöntä, robotti sekosi täysin eikä pystynyt jakamaan. Syytä sekoamiseen etsittiin ja lopulta selvisi, että moottorin johto oli irronnut mystisesti kesken kisasuorituksen. Onneksi joukkue ei tästä masentunut vaan jatkoi robotin kehittelyä, lisäsi siihen kolmannen värisensorin uhrin tunnistusta helpottamaan ja ohjelmoi paremman algoritmin viivan löytämiseksi uhrin tunnistuksen jälkeen. Nämä muutokset ja johtojen tiukentaminen siivittivät robotin kolmanneksi parhaaseen suoritukseen toisena kisapäivänä (78 pistettä). Tämä ei valitettavasti riittänyt aivan mitaleille asti mutta neljäs sija oli hieno tulos tässä kovassa kisassa, jossa voitto irtosi 91 pisteellä.

Freestyle

Viime vuoden Ultracar - joukkue jatkoi tänäkin vuonna valitsemallaan uralla legoautoteknologian kehittelyssä. Heidän kilpailutyönsä oli GyroEMT, eli kahden gyrosensorin avulla kauko-ohjautuva ralliauto. Työnjako toimi tässä tiimissä kuten viimevuonnakin: Onni rakensi auton, Kassu koodasi ja Joel teki videon. Tosin Tampereelta lähdettäessä valmiina oli vain auton ja kaukosäätimen mekaniikka, ohjelma ei toiminut eikä videota oltu kuvattu...

Gyro EMT : Joel, Onni ja Kasperi
Pojat joutuivatkin melko koville kisapäivinä. Torstai-ilta koodattiin ja yritettiin saada bluetooth yhteys toimimaan kaukosäätimen ja auton välillä. Ongelma ei selvinnyt ja autoon kovakoodattiin pieni ohjelma, että saatiin pieni videonpätkä seuraavan päivän Freestyle esittelyä varten. Yön yli nukkumisen jälkeen ongelmat alkoivat pikkuhiljaa ratketa (molempiin blokkeihin päivitettiin mm. firmware), ja lopulta kauko-ohjaus lähti toimimaan iltapäivällä vain hajotakseen jälleen.... Kassu teki koko ohjelman alusta alkaen uudelleen ja perjantai-iltana sitä debugattiin kahden läppärin (ja välillä kahden opettajankin) avulla majoituskoululla. Lopulta kun koko koodi ja kaikki bluetooth asetukset oli tarkistettu, kauko-ohjaus lähti toimimaan ja videota päästiin viimein kuvaamaan oikeasti. Video valmistui 23:30 viimeisenä kisailtana. Oli siis melkoinen suoritus, että tuomarit pääsivät katsomaan toimivaa tuotetta, josta oli myös esittelyvideo!


Työ ei kovasta ponnistelusta huolimatta voittanut mitalisijoja, ja jälkikäteen ajateltuna homma taisi tällä tiimillä jäädä vähän viimetippaan, joten loppusilaus jäi tekemättä. Silti hieno suoritus!!! Tässä nähdään robotin testailua Kaapelitehtaalla.



Kaiken kaikkiaan oli hieno huomata, että kerhomme oli kehittynyt kisalajeissa ja annoimme hyvän vastuksen jokaisessa lajissa. Ensivuonna voisi olla aika ottaa ohjelmistoon uusiakin lajeja. Alkeispelastusryhmämme olisi jo valmis siirtymään varsinaiseen palastussarjaan ja Freestyle - jengi voisi kokeilla alkeisjalkapalloa, kun tuo robotin kauko-ohjaaminenkin on jo tullut tutuksi :-) Erityiskiitos mukanamme olleelle huoltaja-Niinalle! Ensivuonna sitten Ouluun!

Lietsun koodauskerho korkeasaaressa jäätelöllä

torstai 17. joulukuuta 2015

Lietsun koodauskerhon syksy 2015

Tänä syksynä kerhon aloitti huimat 21 kerholaista (luokilta 5 - 8). Joulukuussa mukana oli vielä 13 innokasta koodaria. Syksyn aikana kerholaiset ovat saaneet valita erilaisia projekteja oman kiinnostuksensa mukaan. Tässä niistä muutamia.

Lego-robotit

Kerhossamme on rakennettu ja koodattu syksyn aikana mm. kolmea sumo-robottia, yhtä koirarobottia, kahta viivan seuraajaa, yhtä musiikkia soittavaa robottia sekä yhtä "fantasia-ajoneuvoa". Viivan seuraajat eivät vielä seuraa viivaa, mutta yritys on kova. Tässä pieni pätkä toisen viivan seuraajan koodia:

EV3:n ohjelmointi ympäristö on graafinen
Tässä sumorobotit ottavat toisistaan mittaa:


Ja tässä robottikoira yrittää kävellä (tosin vähän hassusti käy):

Racket - koodaus

Racket:llä syntyi syksyn aikana nämä hienot kuvat (osa vaati jopa rekursiivisen funktiokutsun ja listojen käyttämisen!). Myös yksi Packman animaatio/peli on hyvässä vauhdissa.

Death Pack Crystal

Death Pack Ellipse

Juuson talo


Death Star 2.0


Crazy Pixel
3D - mallinnus

Kaksi kerholaista teki 3D - malleja, sekä Blenderillä että SketchUp:illa. Myös ensimmäinen kerhossa mallinnettu esine tulostettiin 3D - tulostimella (lentokone).

Tässä kerhossa tehtyjä SketchUp - malleja:

Ilves - logo

Näsinneula

Laurin talo
Arduino - koodaus

Tänä syksynä kokeilimme ensimmäisen kerran ohjelmoida Arduinoa ja saimme ledit vilkkumaan. Teimme sen DrRacket - ohjelmalla käyttämäll ASIP - protokollaa:


Keväällä jatkuu

Keväällä onkin edessä sitten osallistuminen Tampereen Innokas kick-off:in näytöslajeihin sekä toimiminen tutoreina opettajien työpajoissa. Toukokuussa osallistumme myös Helsingissä järjestettävään Robocup Junior SM - kisoihin. Jännittävää!

perjantai 27. marraskuuta 2015

Programming Arduino UNO with Racket

Some weeks ago I found out about this Arduino-RaspberryPi robot that you can program using Racket language and DrRacket. I contacted the creators and got some Arduino boards and accessories to play with.

Normally you would program Arduino using C/C++ and their own development environment. Since I have chosen to use Racket for teaching programming in my math class and other computer science classes, to make it easier to me and my students I would prefer to use Racket also in my physics class. And thanks to Mr Raimondi and Mr Margolis now I can!

In addition to DrRacket installation you need to install Arduino UNO USB driver to your laptop. It comes with the Arduino IDE. Arduino UNO needs to have the ASIP firmware installed, also you need to include one Racket - file "AsipMain.rkt" and you are good to go.

Here are our first two working demos:

First one blinks two leds:



(require "AsipMain.rkt")
(define LED 13)
(define LED2 12)

(open-asip)

(set-pin-mode! LED OUTPUT_MODE)
(set-pin-mode! LED2 OUTPUT_MODE)

(define (my-program)
  (begin
    (digital-write LED HIGH)
    (sleep 0.2)
    (digital-write LED LOW)
    (digital-write LED2 HIGH)
    (sleep 0.2)
    (digital-write LED2 LOW)
    (my-program)))

(my-program) 


And in the second one the led is controlled from the laptop's keyboard (spacebar):



(require "AsipMain.rkt")
(require 2htdp/universe)
(require 2htdp/image)


(define LED 13)
(open-asip)
(set-pin-mode! LED OUTPUT_MODE)

(define (draw-image y)
  empty-image)

(define (key1 y n)
  (if (key=? n " ")

      (begin (digital-write LED HIGH)
             #t)
      y))      

(define (key2 y n)
  (if (key=? n " ")

      (begin (digital-write LED LOW)
             #f)         
      y))

(big-bang #f
          (on-key key1)
          (on-release key2)
          (to-draw draw-image))


One of my students, 13 year old Lauri wrote a big part of this code and connected the wires for the demo. Thanks! We will develop this further in the coming weeks. I'm planning to use this to teach physics and programming this spring.

lauantai 2. toukokuuta 2015

Lietsun koodauskerhon kevät

Lietsun koodauskerho jatkoi monipuolista ohjelmointiin tutustumista myös kevätkaudella. Syksyllä aloittaneista kerholaisista vain 4 innokkainta jatkoi keväällä mutta onneksi saimme kaksi uutta 7. luokkalaista täydentämään tiimiä.

Tammikuussa syntyi pari Racket-peliä Bootstrap-projektin ohjeiden mukaan. Sitten kerholaiset tutustuivat Lego-robotteihin rakentamalla robotteja netistä löytyvien valmiiden ohjeiden pohjalta. Varsinainen RoboCupJunior-kilpailuihin valmistautuminen lähti liikkeelle sumorobotin rakentamisella.

Hiihtoloman jälkeen saimme viimein lisää Lego-robotteja ja samoihin aikoihin syntyi poikien päässä idea huippunopeasta UltraCar:ista. Aivan viime metreillä päätimme koota vielä yhden alkeispelastus-robotinkin. Näiden kolmen robottin rakentelun sekä ohjelmoinnin parissa vierähtikin sitten koko loppukevät.

Sumo-Lietsu
Sumo-Lietsu posteri
Sumo-Lietsun rakensi ja ohjelmoi 6. luokkalainen Lauri Pahkala. Hän suunnitteli, rakensi, ohjelmoi ja testasi väsymättä robottiaan koko kevään. Sumo-Lietsu osallistui RoboCupJunior kisoissa Innokas-robottisumoon.

Aivan ilman kommelluksia ei Sumo-Lietsukaan selvinnyt kisoissa: se ei päässyt läpi ensimmäisestä katsastuksesta pituutensa takia. Painon kanssa ei onneksi ollut ongelmia (700g).

Sumo-Lietsu ei mennyt ensimmäisestä katsastuksesta läpi
Sumo-Lietsu taisteli älykkyytensä avulla hienosti jopa itseään paljon isompia vastustajia vastaan.

The Saviour

Kerhomme alkeispelastusrobotti ei osannut Tampereelta lähtiessä seurata mustaa viivaa. Robottiin oli kiinnetty ensin yksi, sitten kaksi valosensoria ja ohjelmointi-ideoita oli haettu katselemalla useampikin youtube-video mutta siitä huolimatta robotti ei selvinnyt edes siitä ensimmäisestäkään mutkasta.

Onneksi menomatkalla Joensuuhun pelastustiimimme ohjelmoijat (Ulrika Kaara ja Lauri Pahkala) saivat Pohjois-Hervannan koulun robottiguruilta arvokkaita vinkkejä. Vinkki nro 1 oli käyttää värisensoria "reflected light"-asetuksella (ei "color").

Kisapaikalla tiimimme keksi Vinkki nro 2:n seuraamalla muiden kilpailijoiden robottien toimintaa: valosensoreita ei kannattanut laittaa aivan kiinni toisiinsa! Tämän oivalluksen jälkeen robotti korjattiin ja ohjelmoitiin uudelleen ja kuin ihmeen kaupalla se alkoi seurata viivaa torstai-iltana!

The Saviouriin tehdään tärkeitä muutoksia kisapaikan rakentelupisteessä
Tässä The Saviour seuraa ensimmäisen kerran mustaa viivaa! Voi sitä riemua!


Lopulta The Saviour:ia testattiin, korjattiin ja koodattiin tiiviisti koko kilpailun ajan. Sen renkaat vaihdettiin telaketjuihin ja sen koodiin tehtiin lisää tarkennuksia. Erityisesti palastusradalla oleva ylämäki osoittautui vaikeaksi päästä ylös samoin 90-asteen mutkat tuottivat ongelmia. Lopulta koodi oli niin herkkä, että jos sen sääti toimimaan hyvin ylämäessä niin tiukat käännökset eivät enää toimineetkaan. Myös kisapaikan valaistusolosuhteet olivat hankalat: testiradalla ja kisaradalla valaistus oli erilainen, joten vaikka robotti suoritti testiradan hyvin, itse kilpailussa se ei enää onnistunutkaan. Pitänee harjoitella valosensorin kalibrointi ensivuoden kisoja silmällä pitäen... 

Lauri ja Ulrika tekivät kisan jälkeen vielä esittelyvideon, josta näkyy mitä kaikkea The Saviour lopulta osasi tehdä (ja miltä se lopulta näytti):


UltraCar

Team UltraCar:in tavoitteena oli tehdä mahdollisimman nopea auto. Pojat rakensivatkin auton, jossa jokaisella renkaalla oli kaksi moottoria sekä nopeutta lisäävä vaihteisto. Moottoreita ohjasi kaksi NXT-yksikköä, jotka keskustelivat toistensa kanssa BT-yhteyden avulla.

UltraCar osallistui Innokkaan Freestyle-kisaan. Kilpailusuoritukseen kuului robotin esittely SciFest-messuilla, posterin tekeminen sekä mainosvideon teko.

Team UltraCar:in muodostivat kolme 7.luokkalaista: Onni Pakka, Joel Ålander sekä Kasperi Kirijatshenko.
UltraCar posteri
Team UltraCar sai kisoissa Kunniamaininnan

 Tässä vielä videokooste kerhomme kisasuorituksista ja vähän muidenkin.


Kerhon vetäjän näkökulmasta nämä Lego-projektit olivat todella onnistuneita monestakin syystä.  Ensinnäkin kerholaisia ei ollut vaikea motivoida tekemään robotteja, koska heillä oli tavoite selvänä: kisareissu odottaisi kaikkia, jotka saisivat robotin kisakuntoon. Toinen erittäin tärkeä aspekti oli  tiimien muodostuminen ja toisten auttaminen. Erityisesti Freestyle-robotin tekemisessä tiimin jäseniltä vaadittiin monenlaista osaamista: ideointi, rakentaminen, ohjelmointi, valokuvaaminen, videokuvaaminen, editointi, messuilla esittely jne. Myös alkeispelastus osoittautui mielenkiintoiseksi ja sangen haastavaksi lajiksi, ei vähiten sen takia, että kerhon vetäjä ei ollut koskaan itse tehnyt, saati nähnyt toimivaa viivanseuraajarobottia. Ja ilman näitä kisoja viivanseuraajan tekeminen olisi saattanut jäädäkin vain haaveeksi. Onneksi kisoissa oli vallalla auttamismentaliteetti ja muiden joukkueiden vinkkien ja vihjeiden avulla robottimme ja ohjelmoijamme kehittyivät huimasti!

Kiitos Innokas-verkosto ja RCJ-Finland hienoista kisoista! Ensivuonna uudelleen!

keskiviikko 4. helmikuuta 2015

Koodauskerho robottien kimpussa

Kevät on lähtenyt liikkeelle vauhdikkaasti koodauskerhossa. Blender 3D-mallinnuksen ja Racket-koodauksen lisäksi kerhossa on rakennettu ja ohjelmoitu Lego NXT ja EV3 robotteja. Ensimmäisenä kerhossa valmistui perusrobotti, joka ohjelmoitiin ajamaan kuusikulmion muotoista reittiä. Keksimme laittaa sille kynän kiinni "takapuoleen" ja saimme hienon "robottitaideteoksen" luokan seinälle.
Kerhomme ensimmäinen robotti
Toinen robotti syntyi EV3:n ohjeilla ja sille ohjelmoitiin "tutka"-toiminto, ettei se törmäilisi esteisiin.

EV3 - robotti
Tässä kuvaa "tutka-ajosta":


Tällä viikolla saimme käyttöömme myös sumo-pelilaudan ja tottakai sitä piti päästä heti testaamaan. Tässä kerhomme ensimmäinen sumorobotti kokeili pelilaudalla pysymistä, ja hyvinhän se siinä pysyi!


Kolmantena robottina valmistui Joulupukki ja poro näillä ohjeilla.

maanantai 29. joulukuuta 2014

Lielahden koodauskerhon syksy 2014

Vedin tänä syksynä ensimmäistä kertaa elämässäni koodauskerhoa. Kerho kokoontui keskiviikkoisin (2h) ja siellä kävi säännöllisesti noin kymmenen 5.-7.-luokkalaista. Kerholaisista vain kaksi oli ohjelmoinut aikaisemmin, toinen CoolBasic:llä ja toinen Scratch:llä, joten pääsimme lähtemään liikkeelle lähes tyhjältä pöydältä.

Aloitimme ohjelmointiin tutustumisen pelaamalla code.org:in ohjelmointipelejä. Kerholaiset jaksoivat pelata näitä pelijä 1-2 tuntia, mutta sitten kiinnostus lopahti. Seuraavalla kerhokerralla siirryimme tekemään peliä Scratch:llä. Tein koko ryhmälle yhteiset tunnukset Scratch - sivustolle ja jokainen sai ryhtyä suunnittelemaan omaa peliänsä. Näytin aluksi miten Scratch-kissan saa liikkumaan ja kääntymään ja sen miten hahmot lähettävät toisilleen viestejä. Näytin myös miten uusia hahmoja ja taustoja piirretään. Kävimme läpi myös miten hahmon liikkeitä voi animoida vaihtamalla asusteita ja miten huomataan törmääminen esim. jonkin värin kanssa. Kävimme yhdessä läpi myös muuttujien käytön, koska useampi kerholainen halusi tehdä hyppäävän hahmon, jonka hypyn korkeus määräytyi siitä montako kertaa välilyöntiä oli painanut. Myös taustan (tason) vaihtuminen käytiin yhdessä läpi. Näitä asioita opetin useammalla kerhokerralla sitä mukaan, kun niitä peleissä tarvittiin.

Scratch-peleissä vaikeinta taisi olla oman peli-idean löytäminen ja siinä pysyminen. Osa kerholaisista vaihtoi peli-ideaansa useammankin kerran eikä sitten lopulta saanut mitään valmiiksi. Myös toisten tekemiin Scratch-peleihin tutustuminen netissä (=pelaaminen) kiinnosti välillä enemmän kuin oman pelin tekeminen. Parilla kerholaisella ongelmia tuotti myös itse ohjelmointi: haluttiin tehdä heti ensimmäisessä pelissä suhteellisen monimutkaista pelilogiikkaa. En aina itsekään osannut heti neuvoa oppilaita kun ruudulla tapahtui jotain outoa: hahmot putosivat maanpinnan läpi tai  hyppylaskuri kasvoi holtittomasti jne. Huomasin myös, että osalla työ ei edennyt koska hahmojen tarkkaan piirtämiseen käytettiin paljon aikaa jolloin varsinainen ohjelmointi jäi sivuseikaksi.

Tässä erään kerholaisen tekemän Scratch - pelin kaksi tasoa sekä pelihahmot
Lopulta vain 2 oppilasta sai oman Scratch - pelinsä valmiiksi, lopuilla into lopahti joko siksi, että en osannut aina neuvoa heti kun ongelma ilmeni tai pelin loppuun saattaminen olisi vain ollut liian hidasta. Ehkä peli-ideat olivat lopultakin liian vaativia tai lopputuloksen suhteen oltiin liian kriittisiä? Tässä kuitenkin yksi valmistuneista peleistä: bomb boy.

Bomb boy:ssä on monta level:iä
Kun huomasin että Scratch - projekti ei oikein edennyt, ehdotin parille 7. luokkalaiselle ohjelmointia Racket:llä. Annoin heille linkin opettajille pitämäni Racket - pajan materiaaliin ja kävimme sen avulla läpi Racketin piirtofunktioita. Pienen harjoittelun jälkeen he koodasivat autot ja funktion käsitteen selittettyäni myös "maalaa-auto"-funktiot. Lopuksi he pääsivät kokeilemaan myös autolla "ajelua". Autolla ajelu ja mm. auton nopeuden säätö olivat pojista hauskaa mutta toisaalta harjoitusta tehdessämme huomasin, että funktion käsite oli melkoisen vaikea vielä 7.-luokkalaisille. Tältä autolla ajelu "Racket-autolla" näyttää:


Yhdellä kerhokerralla emme päässeet kirjautumaan ollenkaan Scratch - sivustolle, joten koodasimme koko ryhmä Racket:llä. Ihmeekseni myös 5.luokkalaiset ymmärsivät miten lippuja ohjelmoidaan ja kahden tunnin aikana syntyi monen eri maan lippuja! Racket kokeilun jälkeen moni hylkäsi Scratch - projektinsa kokonaan ja jatkoi Racketin kanssa piirtelyä. Osa jatkoi omatoimista koodailua, ja näiden kokeilujen tuloksena syntyi mm. mielikuvitusmaan lippu ja kolmiulotteisuutta mallintavan "Death Star".

Tässä 6.luokkalaisten Racket - koodausnäytteitä: "Death Star" ja lippuja
Osa kerholaisista jatkoi Racketin kanssa, joko maalaa-auto-funktioiden parissa tai ryhtyi opiskelemaan ufon laskeutumislogiikkaa näiden ohjeiden pohjalta. Yksi oppilas pääsi ufonsa kanssa jopa siihen pisteeseen, että hän pystyi ohjailemaan ufon laskeutumista nuolinäppäilillä oikealle ja vasemmalle! Vaikka saimmekin ufon laskeutumaan, huomasin että ohjeet eivät olleet riittävän tarkat jotta kerholaiset olisivat itsenäisesti voineet niitä seurata... Ja tältä ufon laskeutuminen näyttää valmiina:


Marraskuussa kerhomme osallistui myös Majava - kilpailuun. Kilpailu oli itselleni uusi tuttavuus mutta se toimi hienosti ja sopi hyvin toteutettavaksi yhdellä kerhokerralla. Tähän osallistumme myös ensivuonna!

Joulukuuhun mennessä 2D-hommat oli osan mielestä "jo niin nähty", että he halusivat että asennutan koulun koneille 3D-mallinnusohjelman (Blender). Varoittelin kerholaisia etukäteen siitä, että en osaa itse käyttää ko. ohjelmaa (vaikka olen kurssin käynytkin) mutta siitä huolimatta he saivat aikaan 3D - malleja, jopa animoituja sellaisia! Yksi oppilas kokeili myös ohjelmoida Blenderin pelilogiikka-moduulilla. Tässä yhden kerholaisen tekemä Blender-3D-animaatio:


Aivan kaikki eivät Blenderistä innostuneet vaan jatkoivat Racketillä koodaamista. Ennen joulua valmistui vielä pari koodattua joulukorttiakin:


Keväällä jatkamme koodailua ja uutena juttuna aloitamme Lego-robottien rakentamisen ja ohjelmoinnin. Jos saamme jotain valmista aikaan, voisimme yrittää osallistua myös keväällä järjestettävään  RoboCupJunior - kisaan. 

Kerhon vetäminen on ollut mukavaa mutta myös opettavaista. Olen saanut opetella olemaan vähemmän "opettaja" ja enemmän "ohjaaja". Jokainen kerholainen on saanut itse valita mitä tekee, ja olen opetellut ohjaamaan montaa eri juttua yhtäaikaa. Tästä johtuen en ole voinut suunnitella kerhokertoja juurikaan etukäteen. Toisaalta minulla on pitänyt olla takataskussa tasaisin väliajoin joitain "uutta kivaa". Silti kerholaiset yllättivät minut tekemällä sellaisia juttuja Blenderillä, joita en itse osaisi edes tehdä. Sain siis huomata, että vaikka kerhonvetäjän omat taidot ovat toki tärkeitä, kaikkein tärkeintä ovat kerholaisten omat ideat sekä motivaatio ja halu saada jotain toimivaa aikaiseksi. Mistä se motivaatio sitten syntyy, ja miten se pidetään hengissä? Ehkä sekin vielä selviää...