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ä.

6 comments
Comments feed for this article
lokakuu 24, 2007 klo 3:17 ip
Sofi
Ou gsus mitkä ilmeet kuvassa.
Mut siis joo. Toi robotti luonnistui suhtkoht helposti, harmi vain että tuli kirvelevä hopea sija kisassa. Mutta hopea ei ole häpeä tjs…:)
lokakuu 24, 2007 klo 9:45 ip
Suni
Tuli kyllä karvas tappio tänään. Ei tällä kertaa paras robotti voittanutkaan.
Olisi sittenkin pitänyt ostaa eilen se skumppapullo valmiiksi voitonjuhlia varten niin eiköhän se olisi saanut vähän enemään liikettä Stud-robottiimme. Tällä tasolla kun voitto riippuu henkimaailman asioista.
lokakuu 24, 2007 klo 10:49 ip
Suni
Olen positiivisesti yllättynyt ryhmämme kiinnostuksesta robottiamme kohtaan. Vaikka robotin suunnittelu ja ohjelmoiminen menivätkin omalle ajalle niin silti saimme aina suurimman osan ryhmämme jäsenistä mobilisoitua yhteisen hyvän vuoksi. Ja olihan se jälkikin sen mukaista: yksinkertainen, mutta silti niin pirun toimiva robotti ja kakkossija turnauksessa. (yksikin lisäkierros ja me olisimme saattanut voittaa!)
Hyvä me!
lokakuu 26, 2007 klo 12:34 ip
Svante
Tiimityöskentely meni kyllä yllättävän jees. Jos jotain olisi halunnut parantaa, niin kyseinen projekti olisi voitu puheenjohtauttaa ja tapaamiset aikatauluttaa selkeästi. Aikataulutus tietty todella kinkkistä kun projekti tosiaan pyöri kaiken muun matikan, tutan, ohjelmointitehtävien ja esseiden ohella. Olen kuitenkin varsin tyytyväinen työskentelytapoihin ja lopputulokseen.
lokakuu 30, 2007 klo 3:31 ip
Antti
Minun mielestäni ryhmätyöskentely oli hämmästyttävän toimivaa. Puheenjohtauttamista ei tarvittu, vaikka ei se haittaakaan olisi tehnyt. Huolimatta siitä, ettei palttiarallaa kymmenen hengen ryhmämme aina pystynyt tapaamaan koko jäsenistönsä voimin, robotti valmistui vaivatta ja aikataulussa, jopa sen edellä. Tulos oli koherentti, laadukas ja selkeästi toteutettu: jopa minä ymmärrän, miten robottimme toimii.
Kaikki pyrkivät innokkaasti osallistumaan kykyjensä ja omien aikataulujensa mukaan, ja joka tapaamiseen riitti työvoimaa. Yhteispeli toimi niin joustavasti ja sujuvasti ja tehokkaasti, että, huolimatta viime keskiviikon vääryyksistä, tunnen edelleen kuuluvani voittajaryhmään (huh, oliko liian kornia?
)
tammikuu 20, 2008 klo 8:53 ip
sanna
Ei ollut kornia, Antti. Robottimme oli loistava ja mielestäni Oikeasta linjasta ei voi sakottaa.
Ryhmätyöskentely sujui tosiaan mallikkaasti ja oli hienoa havaita, miten yksinkertaisesta asiasta robotissa lopulta on kyse. On se java jännä kieli.