Projektisuunnitelma Projektin tavoitteet Projektin tarkoituksena on tunnistaa erilaisia esineitä Kinect-kameran avulla. Kinect-kamera on kytkettynä tietokoneeseen, johon projektissa tehdään tunnistuksen tekevä tietokoneohjelma. Kamera syöttää ohjelmalle ns. RGB-D -dataa eli värin lisäksi etäisyyden kamerasta jokaiseen pikseliin. Ohjelma antaa tulosteena tunnistetut esineet. Käyttökohde tällaiselle tunnistusohjelmalle olisi esimerkiksi robottimanipulaattori, jonka tehtävä on poimia tiettyjä esineitä pöydältä tai liukuhihnalta. Voidaan olettaa, että kaikista tunnistettavista kohteista löytyy skannattu referenssimalli tietokannasta. Projektissa tehtävän ohjelman tulee olla arkkitehtuuriltaan modulaarinen. Ohjelmassa tulee olemaan kolme itsenäistä, eriytettävää osa-aluetta (Kuva 1): 1. pistepilven lukeminen Kinect-kamerasta 2. esineen mallin muodostaminen pistepilvistä 3. mallin etsiminen pistepilvestä Ohjelma-arkkitehtuurin tulee olla löyhästi kytkeytynyt siten, että esimerkiksi Kinect-kameraa lukevan osa-alueen voi myöhemmin vaihtaa vastaamaan toista kameratyyppiä. Kuva 1. Projektin toteutuksen kolme eri osa-aluetta.
Projektia tekee Eero Laukkanen (4 op, 107 h) ja Tommi Tikkanen (3 op, 80 h). Projektiin voidaan kuluttaa aikaa yhteensä 187 tuntia. Projektin rakenne Projekti on jaettu seuraaviin työpaketteihin. Työpaketti #1: Projektin suunnittelu 1. Määritellä, mitä projektissa tehdään. 2. Määritellä, miten projekti tehdään. Ei ole 25 tuntia Projektisuunnitelma Määritellä muodostettavan ohjelman kokonaisarkkitehtuuri, jotta eri osa-alueita voidaan kehittää toisistaan erillään. Työpaketti #1: Projektin suunnittelu 10 tuntia Ohjelman kokonaisarkkitehtuuri Ohjelman moduulien rajapintamäärittelyt Työpaketti #3: Testidatan keruu Kinectillä 1. Tehdä moduuli, mikä lukee pistepilviä Kinectillä. 2. Tehdä/löytää ohjelma, jolla Kinectillä voi kerätä testidataa. 3. Kerätä Kinectillä testidataa, mitä voidaan käyttää esineiden mallien luomiseen ja luotujen mallien tunnistamiseen.
30 tuntia Pistepilviä Kinectiltä lukeva ohjelmamoduuli Testidataa muiden moduulien ohjelmointia varten Työpaketti #4: Esineiden mallien luominen 1. Tehdä moduuli, joka tekee kamerasta saatavista pistepilvistä esineen mallin eli esineen muodon ja värityksen. 2. Tehdä moduulille käyttöliittymä, jonka avulla esineen mallin voi luoda avustetusti. Työpaketti #3: Testidatan keruu Kinectillä 50 tuntia Ohjelmamoduuli ja käyttöliittymä esineiden mallien luomiseen Työpaketti #5: Esineiden tunnistus 1. Tehdä moduuli, joka kertoo, löytyykö kamerasta saatavista pistepilvistä tiettyä mallia. 2. Tehdä moduulille käyttöliittymä, jonka avulla tunnistamista voi seurata visuaalisesti. Työpaketti #3: Testidatan keruu Kinectillä Työpaketti #4: Esineiden mallien luominen 70 tuntia Ohjelmamoduuli ja käyttöliittymä esineiden tunnistukseen Työpaketti #6: Raportointi Raportoida projektin eteneminen projektin puolivälissä ja lopussa. Ei ole
10 tuntia Harjoiteltu esitys molempiin esitystilaisuuksiin Aikataulutus ja tiimityöskentely Aikataulutus Projektin kehitys tehdään iteratiivisesti. Koko projekti jaetaan kahteen iteraatioon, jotka ovat viikoilla 37-42 ja 43-48. Lisäksi iteraatiot jaetaan kahden viikon sprintteihin. Iteraatioilla on seuraavat tavoitteet: 1. Ensimmäisessä iteraatiossa saadaan projekti käyntiin. Kinectistä saadaan luettua tietoa ja esineistä on saatu muodostettua malleja. 2. Toisen iteraation loppuun mennessä on saatu tehtyä esineiden tunnistusalgoritmi lopulliseen muotoonsa. Iteraatioiden välissä raportoidaan ensimmäisen iteraation tulokset kurssin Intermediate Reports -tilaisuudessa. Lisäksi päivitetään seuraavan iteraation suunnitelma. Muuten iteraatioiden aikana on tarkoitus edetä tavalla, mikä on päätetty iteraation alussa. Sprintit koostuvat edellisen sprintin lopetuspalaverista ja seuraavan sprintin aloituspalaverista. Tällöin katsastetaan mitä edellisessä sprintissä saatiin valmiiksi ja päätetään, mitä seuraavassa sprintissä tehdään. Edellisen sprintin aikana nousseet ongelmat ja ratkaisut käsitellään samalla. Sprinttipalaverit järjestetään pääsääntöisesti tiistaiaamuisin. Palaverin lopuksi projektin ohjaajalle lähetetään tiivistelmä palaverin sisällöstä. Projektiin käytettävät tunnit on aikataulutettu kullekin projektin jäsenelle sekä työpaketittain (Kuva 2). Tarkoituksena on tehdä mahdollisimman aikaisessa vaiheessa moduulien rajapintamäärittelyt, sekä muodostaa testidataa eri moduulien käyttöön. Näin eri moduuleja pystytään työstämään rinnakkain, lähes toisistaan riippumatta. Kommunikaatio Kuva 2. Projektin aikataulu. (E = estimaatti, T = toteuma)
Projektin ohjaajalle kommunikoidaan pääsääntöisesti sprinttipalavereiden tiivistelmien kautta sähköpostilla. Lisäksi ohjaajalla on vapaa pääsy ryhmän tietojärjestelmiin, mitä kautta ohjaaja voi seurata ryhmän sisäistä toimintaa vapaasti. Ryhmän sisäiseen kommunikaatioon on otettu käyttöön Flowdock[1]-palvelu. Palvelun avulla ryhmä voi keskustella pikaviestinten tapaan. Flowdock vastaanottaa myös viestejä projektiin liittyen eri järjestelmistä, kuten: sähköposti versionhallintajärjestelmä (Github) projektinhallintajärjestelmä (Planbox) Eri järjestelmistä tulleita viestejä pystyy kommentoimaan Flowdockissa, ja niin kaikki ryhmän kommunikointi tapahtuu vain yhdessä paikassa. Ulkoiset palvelut Tässä kappaleessa esitellään projektissa käytettävät palvelut lyhyesti. Flowdock Flowdock[1] on ryhmän kommunikointiin tarkoitettu informaatiota keskittävä palvelu. Github Github[2] on ohjelmakoodin versionhallintaan tarkoitettu palvelu. Projektissa tehtävä ohjelmakoodi jaetaan Githubissa vapaasti muiden käyttöön. Google Drive Google Driveä[3] käytetään projektin dokumenttien tekemiseen. Etuna wiki-tyyppiseen järjestelmään on yhtäaikainen kirjoitusmahdollisuus. Planbox Planbox[4] on projektinhallintaa helpottava palvelu. Planboxissa tehtäviä voidaan mm. organisoida projektiin liittyviä tehtäviä, mitata tehtäviin kulunutta aikaa ja muodostaa raportteja projektin etenemisestä. Riskienhallinta Tässä kappaleessa listataan projektiin liittyvät riskit ja niihin liittyvät riskienhallinnalliset lisätiedot. Riski #1: Projektiin osallistuvien opintopisteet eivät riitä projektin työmäärään Tutkitaan saatavilla olevia kirjastoja, joiden avulla työmäärää voidaan vähentää. Rakennetaan ohjelma iteratiivisesti lähtien yksinkertaisesta toimivasta ohjelmasta, jolloin ohjelmaa voi jatkokehittää tarvittaessa myöhemmin. Näin myös eri työpakettien todellinen laajuus tarkentuu aikaisessa vaiheessa.
Toimenpiteet realisoituessa Pienennetään projektin vaatimuksia. Riski #2: Toinen projektiin kuuluvista joutuu lopettamaan kurssin kesken Tehdään tarkka aikataulutus projektille, jolloin projektiin kuluva aika on ennustettavissa. Työtehtävät on jaettu itsenäisiin kokonaisuuksiin, joten projektin työmäärää voi vähentää hallinnoidusti yllättävissä tilanteissa. Toimenpiteet realisoituessa Pienennetään projektin vaatimuksia. Riski #3: Kinect-kamera hajoaa Rauhallinen työskentely kameran kanssa. Huolellinen säilytys. Keskustellaan ohjaajan kanssa mahdollisuudesta lisähankintoihin tapaturman sattuessa. Toimenpiteet realisoituessa Pyritään hankkimaan korvaava kamera tai käytetään vaihtoehtoista kameraa, viimeisenä oljenkortena voidaan käyttää simuloitua dataa. Riski #4: Kehitystyössä käytettävä tietokone hajoaa Rauhallinen työskentely tietokoneiden kanssa. Huolellinen säilytys. Kaikki ohjelmakoodi pidetään versionhallintajärjestelmässä. Kaikkien tarvittavien työkalujen asentaminen dokumentoidaan, jotta kehitystyön aloitus uudella tietokoneella vie vähemmän aikaa. Toimenpiteet realisoituessa Käyttöönotetaan uusi tietokone tai käytetään esimerkiksi Aalto-yliopiston tietokoneluokkien tietokoneita. Lähteet [1] http://flowdock.com [2] https://github.com/codehard/as-projekti [3] http://drive.google.com [4] http://planbox.com