Robottiohjelmoinnin harjoitustyö

582326
5
Software Systems
Intermediate studies
Year Semester Date Period Language In charge
2012 spring 20.01-24.02. 3-3 Finnish Joel Pyykkö

Exercise groups

Group: 1
Time Room Instructor Date Observe
Fri 12-16 C220 Joel Pyykkö 20.01.2012—24.02.2012

Information for international students

Robot programming project is an optional programming course where each attendee will design, build, program and document a Lego Mindstorms NXT robot. Each student will get an NXT set, batteries and charger for the duration of the course.

General

Opintojaksolla voi korvata Ohjelmoinnin harjoitustyö -opintojakson.

Robottiohjelmoinnin harjoitustyö on valinnainen ohjelmointityö, joka koostuu Lego Mindstorms -ohjelman kirjoittamisesta, ohjelmaa ajavan robotin rakentamisesta ja koodin dokumentoinnista Ohjelmoinnin harjoitustyön ohjeiden suuntaisesti. Osallistujille annetaan kurssin ajaksi käyttöön NXT-robottisarja, akut ja laturi.

Työn aihe on vapaavalintainen ja neuvotellaan ohjaajan kanssa. Valitusta aiheesta laaditaan tarvittavat dokumentit, toteutetaan ja dokumentoidaan koodi sekä rakennetaan robotti sitä suorittamaan. Harjoitustyö on hieman perinteistä Ohjelmoinnin harjoitustyötä työläämpi, mutta kenties myös hauskempi.

Completing the course

Kukin osallistuja tekee oman robottinsa. Ryhmätyö on mahdollista, jos aihepiiri sen sallii.

Kurssin suorittamiseen vaaditaan:

  • Ohjelman kirjoittaminen robotille
  • Ohjelmaa suorittavan robotin rakentaminen
  • Koodin sekä robotin rakenteen ja toiminnan dokumentointi
  • Robotin esittely muille osallistujille kahdesti (kurssin puoliväli ja loppu), tai korvaavasti oppimispäiväkirja joka selostaa puuttuvaan esitykseen liittyvät asiat.

Käytännön opetus tapahtuu kerran viikossa, jolloin keskustellaan robotin ohjelmoinnista ja rakentamisesta, ideoidaan, käsitellään esille tulevia haasteita ja pidetään kivaa. Kurssin oma IRC-kanava on #robo-tkt.

 

Aikataulu

1. viikko(20.1.): Jaetaan robotit, esitellään koodausympäristö rojbOS ja käydään läpi kuinka sitä käytetään.

2. viikko: Kotiläksyn esittely; asenna hello world NXT:lle (eli asenna rojbOS ja käytä valmista esimerkkiä). Kerätään alustavat aiheet. Esitellään Bluetoothin käyttöä sekä rojbOS:in työkaluja.

3. viikko: Kotiläksyn esittely; Lähetä aiheenkuvaus mailitse lyhyesti selitettynä: mitä havainnoi, miten reagoi, millaisia sensoreita/liikkumismenetelmiä käyttää jamitä tekee kokonaisuudessaan (jgpyykko-at-cs.helsinki.fi). Valitse aiheeseesi sopiva esimerkkiohjelma, ja muokkaa sitä hieman. Palauta koodi, ja esittele kuinka robotti toimii.

4. viikko: Kotiläksy; Lähetä muutaman rivin selitys maanantaiksi mailitse siitä mitä teet seuraavaksi. Tuo sitten robottisi perjantaina näytille, tai lähetä toinen maili kertoen siitä mitä teit. Katselemme muiden robotteja ja koodeja, sekä tutustumme computer visionin käyttöön.

5. viikko: Varaa henkilökohtaisen tapaamisen aika: http://www.cs.helsinki.fi/u/jgpyykko/ajat.pdf .Maili on jgpyykko-at-cs.helsinki.fi. Luennolla käydään läpi palautusta, sekä aiheita joita osallistujat haluavat nähdä.

6. viikko (viimeinen tapaaminen): Viimeinen esittely. Pakollinen läsnäolo. Jokainen tuo robotin näytille, missä vaiheessa onkin. Palautuksesta käydään läpi detaljeja, sekä ajat varataan robotin palautukselle (lisäaikaa voi saada tarvittaessa).

7. viikko (koeviikko): Varaa aika robotin palautukselle ja haastattelulle.

 Kiitos kaikille osallistuneille! Robotit oli cool.^^

Palautus:

Palautus tehdään kahdessa erässä:

- Koeviikolla tai 4. periodin ensimmäisellä viikolla varatulla ajalla palautetaan robotti, jolloin sen toiminta varmistetaan, mikäli jokin muuttui 6. viikon esityksestä. Ajanvarauslista: http://www.cs.helsinki.fi/u/jgpyykko/palautusajat.pdf

- Sunnuntaina 11.3. klo. 24:00 mennessä palautetaan ohjelman koodi ja dokumentit. Dokumentoinnista ja koodin tyyliasusta seuraavaa.

Koodi:

  • Robotin tulee käyttää vähintään yhtä sensoria ja yhtä moottoria, aiheen mukaisesti mielekkäällä tavalla.
  • Koodin tulee olla omaa ja ymmärrettyä. Mikäli muualta lainaa koodia, muistakaa laittaa lähde näkyville.
  • Koodissa tulee käyttää selkeästi luokkia, metodeja sekä kommentteja. Kommentit joka luokalle ja metodille. Jokainen kertoo mitä kyseinen osa tekee selkeästi.
  • Käyttäkää koodin formatointia ja indentaatiota (Ctrl+I, Ctrl+Shift+F).
  • Kommentit tehdään JavaDocille sopivasti, joka tulee generoida. (Alkaa /** )
  • Tiedostosta lukua/kirjoitusta tulee tehdä jollain tapaa. Tämä operaatio on myös hyvä eristää omaan luokkaansa.

Dokumentointi (voi käyttää pohjaa ohjelmoinnin harjoitustyö-kurssilta):

  • Perustiedot: Nimi, opiskelijanumero, sähköposti, aihe, päivämäärä.
  • Yleiskuva robotista: Mitä tekee, millä sensoreilla ja moottoreilla, mihin toiminta perustuu, millaisia menetelmiä käytetään koodissa. Aiheen mielekkyyden tulee tulla esille.
  • Kuvia robotista. Rakennusohje siinä määrin että se tukee kuvia, ja että olennaiset mitat koodin kannalta ovat selvät (esimerkiksi pyörien väli, mikäli tämä on määritelty koodissa).
  • Testaus: Aja robottisi useampaan kertaan (ainakin kolme), ja raportoi kuinka se toimi. Kerro tuliko ongelmia tai bugeja esille. Mieti jokaiselle kerralle erilainen testitapaus, jos mahdollista (eri labyrintin osa, eri kohteita ultraäänisensorille jne.).
  • Erikoiset ratkaisut joita käytit saadaksesi robotin toimimaan.
  • Tulostuksista: Kerro mitä robotti kirjoittaa LCD-näytölle tai tiedostoon.
  • Käyttöohje.

Esimerkkidokumentti ja -koodit:

http://www.cs.helsinki.fi/u/jgpyykko/esimerkkidokumentti.pdf

http://www.cs.helsinki.fi/u/jgpyykko/AutoRoboMat.java

http://www.cs.helsinki.fi/u/jgpyykko/Mathics.java

IO-luokka jätetään harjoitustehtäväksi. :3

 

Palauta dokumentti (mielellään pdf) ja joko koko projekti, kaikki yhdessä zipissä. Lähetä zip-tiedosto sähköpostitse: jgpyykko -at- cs.helsinki.fi .  Jos tulee ongelmia palautuksen suhteen, lähetä mailia.

Kurssi on ohi, kiitos kaikille osallistujille! Tarkistakaa arvosananne weboodista, että mahdolliset ongelmat huomataan: http://www.cs.helsinki.fi/u/jgpyykko/roboarvostelu.pdf

Kurssin loppunäytöksen kuvat saatavilla: www.cs.helsinki.fi/u/jgpyykko/robokuvat/

Literature and material

Toistaiseksi ohjeita ja muuta tietoa on saatavilla vanhojen kurssisivujen kautta.

rojbOS:in saa ladattua täältä: http://www.cs.helsinki.fi/u/strommer/rojbos/

rojbOS:in käyttö USB-tikulta: Lataa http://unetbootin.sourceforge.net/ , laita USB-tikku koneeseen (tyhjä, vähintään 2GB muistia), valitse levykuva ja etsi .iso tiedosto jonka latasit yllä, laita space used -kenttään vähintään 700Mt muistia (huom, purettuna rojbos.iso vie ~1,2Gt muistia!).

Bluetoothin asennus: Yksi ohje: http://www.cs.helsinki.fi/node/61471

Bluetooth ja pinin vaihto: https://trac.cc.jyu.fi/projects/legorobotti/wiki/bluetooth

Koura-design (3.2., thanks to Suski): http://www.flickr.com/photos/ihmis-suski/tags/robo