AS-0.3200 Automaatio- ja systeemitekniikan projektityöt A10-03 Pool Referee Väliraportti Joni Rajanen, Iiro-Pekka Eerola 1.11.2010 Väliraportin rakenne Väliraportti perustuu projektisuunnitelmaan, johon on lisätty tehdyt muutokset alkuperäiseen suunnitelmaan ja lisäksi raportoitu projektin edistyminen tähän saakka. Muutokset on kirjoitettu lihavoidulla tekstillä. Projektin kuvaus Pool Referee -projektin päämääränä on luoda konenäköjärjestelmä, joka pystyy seuraamaan biljardipöydällä pelattavia pelejä, ja käyttöliittymän mahdollistamaan järjestelmän käytön. Pelitilanteen havaitseminen toteutetaan konenäön menetelmin. Valmiissa järjestelmässä biljardipeli on automatisoitu siten, että järjestelmä huolehtii tuomaroinista ja pitää kirjaa vallitsevasta pelitilanteesta. Käyttöliittymä puolestaan esittää tietoa pistetilanteesta, näyttää videokuvaa pelistä ja tarjoaa pelaajille mahdollisuuden korjata järjestelmän mahdollisesti tekemät virheelliset havainnot. Laajuus ja hallinta Suunnittelemamme projektityön laajuus on neljästä kuuteen opintopistettä. Työ suunnitellaan siten, että se on tarvittaessa helposti laajennettavissa myöhemmin. Jos projektin tekeminen lähtee liikkeelle kivuttomasti eikä suurempia vaikeuksia tule vastaan, voidaan keksiä uusia ominaisuuksia ja näin laajentaa työtä. Mikäli puolestaan kohtaamme paljon vastoinkäymisiä ja esimerkiksi konenäön toteuttaminen kuluttaa merkittävästi ajallisia resursseja, tullaan lisäominaisuuksia karsimaan ja keskitytään ydintoimintoihin. Laitteisto ja työkalut Projektityön laitteistoon kuuluu biljardipöytä, johon itse järjestelmä tullaan rakentamaan. Konenäön tarvitseman kuvamateriaalin tuottamiseen käytetään kahta usb-liitännällä varustettua webkameraa. Valaistusjärjestely toteutetaan biljardipöydän yläpuolelle asennetulla valaistustelineellä, johon myös kamerat tullaan kiinnittämään. Tietokone, jossa järjestelmä tullaan ajamaan sijoitetaan pelipöydän läheisyyteen. Käytämme projektissa konenäön algoritmien toteuttamiseen OpenCV (Open Source Computer Vision) -kirjastoa. Kehitysympäristönä käytetään Eclipse/C++ Linux alustalla. Käyttöliittymän toteutuksessa käytetään Qt-kirjastoa ja kehitystyökaluja. Ylläesitetty kuvaus on alustava ja siihen voidaan joutua tekemään muutoksia projektityön edetessä.
Vaiheet ja aikataulu Projektityö tullaan suorittamaan iteratiivisella prosessimallilla, jolla pyritään vastaamaan projektiin sisältyvien riskien tuomaan haasteeseen. Alustavasti työ tullaan jakamaan kahteen iteraatioon, joissa molempien lopputuloksena on tarkoitus toimittaa toimiva prototyyppi. Ensimmäisen iteraation lopputuloksena pyritään luomaan järjestelmä, joka pystyy tunnistamaan pallot, ja seuraamaan niiden liikkeitä. Ensimmäisen iteraation päätyttyä projektisuunnitelma tullaan tarkistamaan. Mikäli ensimmäisen prototyypin toiminnallisuuteen ollaan tyytyväisiä ja arvioidaan, että pelitilanteen seuraamisessa ollaan saavutettu riittävä taso, siirrytään toisessa iteraatiossa toiminnallisuuden jatkokehitykseen. Jatkokehitys tässä skenaariossa tulisi sisältämään mm. pelisääntöjen seuraamisen ja käyttöliittymän jatkokehityksen. Jos tavoitetaso jää ensimmäisen prototyypin osalta saavuttamatta, tullaan kehitystoiminta keskittämään konenäön parantamiseen. Projektin nykytila antaa vahvoja viitteitä projektin viivästymisestä nykyisillä resursseilla ja tavoitteilla. Ratkaisuna viivästymiseen voimme joko yrittää saada epätoivoisesti lopullisen ohjelman valmiiksi tai kaventaa projektin laajuutta, ja siirtää alunperin suunniteltu kokonainen Pool Referee -järjestelmä toiseen projektityöhön. Tulemme noudattamaan projektisuunnitelmassa esitettyä 2. skenaariota, ja keskitymme siis toteuttamaan hyvin toimivat pallon tunnistus- ja seurausominaisuudet. Kehitämme työkalun konenäön parametrien säätämiseen lennossa, ja keskitymme yksiväristen pallojen tarkasteluun. Projektin jatkokehittelyn mahdollistamiseksi dokumentoimme työmme kattavasti ja luomme toimivan rajapinnan. Tähän mennessä työtä on kertynyt noin 1,7 opintopisteen (45 h) edestä molemmille.
Riskien hallinta Riskienhallinta on keskeisessä osassa projektityössä, sillä työ sisältää monia projektin toteuttajille vieraita teknologioita. Myöskin saatavilla olevien resurssien niukkuus (niin taloudelliset kuin ajalliset) vaikeuttavat riskien ehkäisyä ja niiltä suojautumista, mikä nostaa projektiin liittyvää kokonaisriskiä. Projektin riskienhallintaa pyritään toteuttamaan aktiivisesti koko projektin ajan. Riskien jatkuva uudelleenarviointi ja ajantasainen asiakaskommunikointi ovat keskeisimmät keinot projektin riskienhallinnassa. Riskien vakavuuksia ja todennäköisyyksiä on päivitetty vastaamaan projektin tämän hetkistä tilaa. Lisäksi yksi uusi riski on lisätty. Alla on esitetty toistaiseksi tunnistetut riskit ja arviot niiden vakavuudesta ja todennäköisyydestä. Vakavuusasteikko 1-5(ei vakava/hyvin vakava) Todennäköisyysasteikko: 1-5(ei todennäköinen/ erittäin todennäköinen) 1. Tyydyttävää staattisen kuvan pallojen tunnistusalgoritmia ei pystytä luomaan määritetyssä ajassa Riskin vakavuus: 1.5 (5) Riskin todennäköisyys: 0.5 (1.5) Lievennyssuunnitelma: Parannetaan kuvien kuvanlaatua muuttamalla valaistusolosuhteita 2. Pallojen spatiaalista tunnistusta ei pystytä luotettavasti tekemään Riskin vakavuus: 4 Riskin todennäköisyys: 2
Lievennyssuunnitelma: Näytteenoton ajallista resoluutiota pienentämällä (kuvaa/s) kasvattamalla kamerajärjestelmän teknistä suorituskykyä. (ks. riski 4) 3. Pallojen identifiointia ei pystytä luotettavasti tekemään Riskin vakavuus: 4 Riskin todennäköisyys: 2.0 (3.5) Lievennyssuunnitelma: Järjestelmä kykenee tuomaroimaan vain sellaisia pelejä, joissa on ainoastaan yksivärisiä palloja. 3. Pallojen liikkeitä ei pystytä seuraamaan saadun videokuvan avulla Riskin vakavuus: 5 Riskin todennäköisyys: 4 Lievennyssuunnitelma: vaihtoehto 1: Parannetaan kuvajärjestelmän teknistä suorituskykyä (ks. riskit 3, 2 ja 4) vaihtoehto 2: Jjärjestelmä kykenee tuomaroimaan vain sellaisia pelejä, joissa pallojen osumajärjestyksellä ei ole väliä. 4. Kameroiden/valaistuksen tekninen suorituskyky ei riitä järjestelmän toteuttamiseen Riskin vakavuus: 4 Riskin todennäköisyys: 4 (4) Lievennyssuunnitelma: hankitaan paremmat kamerat ja valaistus. 5. Täysiresoluutio videokuvan lukeminen reaaliajassa ei ratkaista Riskin vakavuus: 3-5 Riskin todennäköisyys: 4.5 Lievennyssuunnitelma: Jätetään pois projektin vaatimusmäärittelystä Algoritmitutkimuksen tulokset Olemme käyneet läpi erilaisia algoritmeja pallojen tunnistamiseksi ja löytäneet kaksi pääasiallista ratkaisutapaa ongelmaan. Ensimmäinen menetelmä perustuu erotuskuvan värikanavien manipulaatioon. Aluksi kuvan jokainen värikanava kynnystetään, pehmennetään ja suoritetaan eroosio kanavalle ominaisilla parametriarvoilla. Käsitellyt kanavat kynnystetään binäärikuviksi ja yhdistetään. Tämän jälkeen kuvasta lasketaan contour-viivat ja pyritään niistä tunnistamaan pallot contourien ominaisuuksien (pinta-ala ja reunan muodot) avulla. Algoritmin hyvinä puolina on laskennallinen yksinkertaisuus ja yksittäisten pallojen tunnistustehokkuus. Pallon värin tunnistusongelma ei kuitenkaan ratkea tällä menetelmällä, eikä yksittäistä palloa voida havaita tiiviistä pallokasasta. Toinen menetelmä perustuu histogrammisuodatukseen. Kukin pallo näytteistetään ja lasketaan vastaavat näytehistogrammit. Tämän jälkeen käytetään back projection - algoritmia, jolla muodostamme esikäsitellystä kuvasta binäärikuvan, josta contourtunnistuksella yksittäinen pallo voidaan havaita. Menetelmän avulla onnistumme tunnistamaan pallot myöskin rykelmistä, eikä liikkeen aiheuttama sumeus vaikeuta pallojen tunnistusta yhtä merkittävästi kuin ensimmäisen algoritmin tapauksessa. Heikkouksina on algoritmin laskennallinen kalleus ja säädettävien parametrien suuri
määrä. Lisäksi kaksiväriset pallot ovat vieläkin vaikeita tunnistettavia sekä kalibrointi on suhteellisen monimutkaista.