You are currently browsing the category archive for the 'Robotti' category.
StudRobotti otti aamulla muiden ryhmien tekeleistä mittaa. Tekijänoikeuksiin ja tietoturvallisuuteen vedoten robotin synnystä ja sielunelämästä voikin kirjoittaa vasta nyt.
Robottimme sai alkunsa 2.10. 4. OLO-tapaamisessa, jossa pohdittiin ryhmässä, millaiseilla algoritmeilla robotti saadaan selviytymään erilaisista labyrinteistä. Antti muisti lukeneensa Hampton Courtin palatsia ympäröivän puistolabyrintin ratkeavan oikeaa seinää seuraamalla. Itselleni ja muille tuli myös välittömästi mieleen kreikkalainen mytologia, jossa Ateenan Theseus pääsee takaisin ulos Kreetan kuninkaan Minoksen labyrintistä lankakerän avulla. Innostuttuamme oikeankädenmenetelmästä huomasimme, miten mainiosti sillä voidaan ensimmäiset labyrintit ratkaista. Viimeisessä tulikin vastaan ongelma. Maali ei sijainnut reunalla, eikä robotti osannut tutkailla ympärilleen. Pohdimme satunnaista suunnan valitsemista, mutta se onneksi hylättiin melko nopeasti tehottomana keinona löytää perille. Robotillemme tarvittiin siis lankakerän innoittamana muisti! Otimme oppimistavoitteeksemme suunnitella robotillemme jonkinlainen muistirakenne. Sovimme ekstratapaamisesta jo ennen seuraavaa OLO-sessiota.
Ekstratapaamisessa 8.10. olkkarilla puimme paikalle pääseiden Mariannen, Sannan, Moonan, Tiinan, Antin, Ollin, Sunin ja Oulan kanssa parin päivän aikana kehittyneet ideat muistin rakenteesta ja rakentamisesta. Fiksuimmaksi ratkaisuksi nousi avain-arvo-tyyppinen muisti. Senhetkisen Java-tehtävä 2:n innoittamana valitsimme Map:in toteuttavan HashMap:in StudRobottimme muistiksi. Pohdimme pitkään, millä avaimilla ja millä arvoilla muistia kannattaisi käyttää. Pläräilimme palaveria varten tulostettuja valmiita metodeita ja vinkkiluokkia ja löysimme mahtavan java.awt.Point-luokan. Päätimme, että robottimme tallentaa avaimella koordinaattipiste (x,y) kokonaisluvun, joka kertoo aikaisempien käyntikertojen lukumäärän kyseisissä ruuduissa. Sovimme seuraavaksi ensimmäisestä varsinaisesta ohjelmointitapaamisesta.
Paniikissa tietokoneiden tuulettimien hurinassa 12.10. ohjelmoimme koko joukolla valmiiksi 1. version robotistamme.
Siirtyessä uuteen ruutuun robotti tallensi muistiinsa joko uudelle pisteelle käyntikerroiksi 1 tai ennestään tutulle käyntikerrat + 1. Robotti tarkistaa kaikkien naapuriruutujen käyntikerrat ja tallentaa ne apumuuttujiin. Jos jossain suunnassa on seinä, tallennetaan kyseisen suunnan apumuuttujaksi megaiso luku. Robotti valitsee pienimmän apumuuttujan, ja etenee sen suuntaan. Tungimme StudRobotti ykkösen sekä Turnaus-ohjelman samaan zip-pakettiin, jonka siirsimme kaikkien ryhmäläisten saatavaksi IRC-kanavallamme julkaistuun internet-osoitteeseen. Sovimme, että kaikki miettii parannuksia ja vaihtoehtoja algoritmiin ja siirtää ne kaikkien saataville ennen versionvalinta deadlinea. Maanantaiaamusella
22.10. pidimme Sunin kanssa karsinnan parhaille kandidaateille. Ehdotuksista kokosimme lopullisen version 7.0, joka osallistui varsinaiseen turnaukseen. Parannuksina ensimmäiseen versioon nähden 7.0 etenee käyntikertojen tasapelin sattuessa aina oikealle. Lisäksi 7.0 merkkaa käytyjen umpikujaruutujen käyntikerroiksi 1000, eikä näin siis enää eksy niihin. Juttelimme muiden jäsenten kanssa IRC:n, SMS:n ja puhelimen välityksellä ja päätimme lähettää 7.0:n Villen pissatestiin.
P.S. Koitimme ottaa oppia tästä.
Julistan täten, että robottimme on alustavasti valmis ja toimiva!
Hyvän suunnittelun jälkeen ei tarvittu kuin pieni yhteinen koodailusessio Paniikissa, ja robo oli kunnossa alta aikayksikön.
Robo siis toimii ja löytää maaliin labyrintissa kuin labyrintissa, mutta pientä hiomista se vielä vaatii, että saadaan tyhmimmät reittiratkaisut kitkettyä pois. Irkistä löytyy ohjeet robon koodin saamiseen, joten jokainen voi myös tehdä omia innovaatioita robotin suhteen, mikäli siltä tuntuu.
Eeeexcellent
Puheenjohtaja myhäilee tyytyväisenä. Extra-OLOn tulos oli voittoisa. Sotasuunnitelmat ovat luotu. Mikään kompleksi, sokkelo tai arkkitehdin tyyliratkaisu ei kykene pidättelemään robottiamme. (Siis sitten kun se on valmis.) Enää ei voi muuta kuin odottaa aikaa iskeä… Ilahduttavaa oli, että lähes kaikki olivat päässeet paikalle. Yllättävää oli, että niinkin moni löysi paikalle. Huomenna uudestaan!
Puheenjohtajan ärähdys
Ensimmäinen raapustukseni (laiska?) käsittelee neljännen OLO-tapaamisen aiheita, eli pureutuu labyrinttia navigoivaan robottiin. Viime viikon maailmanpalasista piti rakentaa sokkelo, jonka sisään ujutettiin aarretta metsästävä robo. Henkilökohtaisia preferenssejäni hiveli, kun tehtävän puzzlemaisuus naamioi javan tyystin taka-alalle. Tällainen älypulma motivoi utilisoimaan pienet harmaat aivosoluni huomattavasti terävämmin kuin raaka koodaus.
Alussa oli hiljaista, suorastaan väsynyttä – mistä lie johtuikaan
. Sitten, oikealle raiteelle päädyttyämme tehtävä oli yllättävän helposti lähestyttävissä. Maailma hahmottui nopeasti ruudukoksi, jonka jokaisessa ruudussa oli neljä mahdollista kulkureittiä: eteen, taakse, oikealle ja vasemmalle. Robolla oli siis edessä valintojen, no ainakin neljän, maailma.
Onneksemme joku pikku koodari oli väsännyt robotille valmiiksi hyödyllisiä, suuntaa-antavia metodeja. Pohjaa rakensi myös pyrkimys sokkeloiden navigoimiseen robotin omaa muistia tarvitsematta. Yksinkertainen, mutta systemaattinen oikean polun taktiikka osoittautui voitokkaaksi ainakin kahdessä ensimmäisessä esimerkkilabyrintissa ja selvisi se myös tuutorimme Petrin asettamista haasteista. Tiinan sommittelemien Post-it -lappujen kuvaama algoritmi näytti myös erittäin selkeältä ja loogiselta. Tämän pohjalta oli hyvä lähteä soveltamaan uusia algoritmeja.
Havaitsimme, että seinänvierustaa kulkemisessa on ongelmansa. Minua ainakin säälittäisi tiputtaa robottimme keskelle peltoa ja katsoa, kun se pyörii onnettomasti ympyrää, vaikka maali saattaisi olla ruudun tai kahden päässä. Jos vieläkään ei haluta käyttää robotin omaa muistia, voisi koettaa jonkinlaista alueen haravointitaktiikkaa. Tätä voisi verrata vaikka jalkapallokentän nurmen leikkaamiseen; eteneminen on edelleen systemaattista.
Varsinaisia oppimistavotteita ei täsmennetty, mutta totesimme algoritmien vaativan lisäpohdiskelua ja sulattelua, joten päätimme järjestää ylimääräisen OLO-tapaamisen, joka sovittiin maanantaille 8.10 alkaen klo 14, siis ohjelmointiharkkojen jälkeen. Eli: mietintämyssy päähän ja maanantaina tavataan!
The Gist
-
hauskaa oli
-
hyvin meni
-
vielä on hommaa
-
tapaaminen ma 8.10 klo 14
