AS-0.3200 Automaatio- ja systeemitekniikan projektityöt A11-07 Measurements with machine vision Projektisuunnitelma Niko Nyrhilä 25.9.2011
Niko Nyrhilä 2 1 Projektityön tavoite Projektityön tavoitteena on määrittää itsenäisen vaunun paikka ja orientaatio, eli sillä on kuusi vapausastetta. Voidaan kuitenkin olettaa että maasto on melko tasainen, eli kärryn suurimmat rotaatiot tapahtuvat pystyakselin ympäri. Tämä oletus auttaa paikannettavan mallin suunnittelussa, koska olisi suotava ettei yksi markkeri voisi estää muita näkymästä. Projekti on tarkoitus suorittaa yhden opiskelijan voimin kolmen opintopisteen laajuisena. Laitteistona käytetään Microsoft LiveCam HD-5000 webkameraa ja jonkinlaisia paikannettavia "markkereita". Projektissa on kaikkiaan neljä päätavoitetta. 1. Tutkia erilaisia mahdollisia markkereita, kuten ledejä ja värillisiä palloja. On tärkeää että markkerit on helppo havaita kuvasta myös vaihtelevissa valaistusolosuhteissa. 2. Suunnitella ja rakentaa markkereista kolmiulotteinen konfiguraatio, jonka paikka ja orientaatio voidaan tarkasti estimoida yhten webkameran kuvan perusteella reaaliajassa. 3. Toteuttaa konenäköalgoritmi joka paikantaa markkerit kuvasta, ja estimoi niiden perusteella kolmiulotteisen mallin paikan ja orientaation. 4. Toteuttaa peräkärryn ohjausalgoritmi, jossa säädön takaisinkytkentä saadaan peräkärryn paikan ja asennon estimaateista. Esimerkki paikannettavasta rakennelmasta nähdään kuvassa 1. Markkereina toimivat vihreät ja punaiset pallot, jotka on yhtistetty toisiinsa puutikuilla. Punainen pallo on vihreitä palloja taaempana, joten mallin pienikin kierto pystyakselin ympäri nähdään punaisen pallon suurena liikkeenä vihreisiin palloihin nähden. Kuva 1: Paikannettavan rakennelman prototyyppi.
Niko Nyrhilä 3 2 Projektityön rakenne 2.1 Suunnitteluvaihe Tässä vaiheessa tarkennetaan mitä projektin aikana on tarkoitus tutkia ja saavuttaa. Lisäksi tutustutaan mahdollisiin markkereihin ja kolmiulotteisiin paikannettaviin rakenteisiin, ja varmistetaan että kameran kuva saadaan kehitysympäristöön. On myös hyvä tuntea perusteet konenäön piirteidenetsintäalgoritmeista, jotta voidaan valita helposti havaittavat markkerit. Ainakin alkuvaiheessa koodia kehitetään Matlab ympäristössä käyttäen Matlab-skriptikieltä, mutta myöhemmin on mahdollista siirtyä käyttämään C++:aa ja OpenCV kirjastoa. Edellytykset: Työmäärä: 10 h Deadline: 2.10. 2.2 Paikannettavan mallin rakentaminen Suunnitteluvaiheessa ilmenneiden seikkojen perusteella valitaan markkerit ja kolmiulotteinen rakenne, ja rakennetaan mallista kestävä prototyyppi. On tärkeää ettei rakenteesta tule liian joustava, koska tällöin kalibrointivaiheessa voi ilmetä ongelmia. Lisäksi malli tulisi olla mahdollista kiinnittää esimerkiksi kamerajalustaan, koska tällöin sen paikkaa ja asentoa voidaan säätää tarkasti ja melko mielivaltaisesti kokeita ja kalibrointia varten. Edellytykset: Taustatutkimus tehty Työmäärä: 10 h Deadline: 9.10. 2.3 Markkerien paikannusalgoritmin kehittäminen Kun markkierien tyyppi on valittu, voidaan ryhtyä kehittämään algoritmia markkerien löytämiseksi. Tässä vaiheessa on hyvä luoda syvempi katsaus tieteellisiin julkaisuihin, ja arvioida mitä menetelmiä kannattaisi kokeilla käytännössä. Paikantamisen haastetta lisäävät värimuutoksia aiheuttavat vaihtelevat valaistusolosuhteet, ja hämärässä valaistuksessa kuvassa ilmenevä kohina. Edellytykset: Markkerit valittu Deadline: 16.10. 2.4 Kameran kalibrointi ja mallin paikantaminen Kun paikannettava prototyyppi on rakennettu, voidaan ryhtyä kalibroimaan kameran parametrejä. Tämä tapahtuu asettamalla malli tunnettuun paikkaan ja asentoon, ja tarkastelemalla missä kohdissa kameran kuvaa markkerit näkyvät. Tähän tehdään oma kalibrointialgoritmi, joka sovittaa parametrit pienimmän neliösumman menetelmällä.
Niko Nyrhilä 4 Malli olisi mahdollista paikantaa aina kameran koordinaatistossa, mutta tällöin etäisyyksien tarkka mittaaminen kalibrointia varten on hieman haasteellista. Siksi olisi hyödyllistä määrittää koordinaatit maailmankoordinaatistossa. Myöhemmin toteutusvaiheessa peräkärryn paikka ja asento voidaan helposti ilmoittaa ohjaavaan ajoneuvoon sidottuun koordinaatiston nähden. Tällöin kuitenkin kameran kiinnitys ajoneuvoon tulee olla erittäin jämäkkä. Edellytykset: Paikannettava rakennelma valmis Deadline: 30.10. 2.5 Estimoitujen tilamuuttujien suodattaminen Kameran kuvan perusteella estimoituun mallin paikkaan ja asentoon liittyy aina kohinaa. Kärry on kuitenkin melko hidasliikkeinen paikannusalgoritmin nopeuteen nähden, joten estimaatteja olisi erittäin hyödyllistä suodattaa esimerkiksi Kalman-suotimen avulla. Suodin kuitenkin perustuu myös ohjaussuureiden tuntemiseen, joten ei ole vielä tiedossa soveltuuko se käytettäväksi tässä harjoitustyössä. Edellytykset: Mallin paikantava algoritmi valmis Työmäärä: 15 h Deadline: 13.11. 2.6 Kärryn ohjausjärjestelmän suunnitteleminen Mikäli mallin paikannus osoittautuu tarpeeksi tarkaksi, sen avulla voidaan toteuttaa peräkärryn automaattinen peruutusjärjestelmä. Tällöin peräkärry ei olisi mekaanisesti kytkettynä autoon, vaan siinä olisi oma moottori joka liikuttelee kärryä. Webkamera kiinnitetään autoon ja suunnataan taaksepäin, ja viesti autossa olevalle ohjausjärjestelmälle kärryn sijainnin. Autosta lähetettäisiin langattomasti ohjauskomennot kärryn moottoreille, ja kärry saadaan vaivattomasti ohjattua haluttuun paikkaan. Helpompi sovelluskohde olisi ohjata kärry ainoastaan seuraamaan autoa, auton ajaessa eteenpäin. Tällöin kärryn reitin suunnitteleminen olisi huomattavasti helpompaa, koska auton ohjaajan ei tarvitse eksplisiittisesti viestiä reitinhakualgoritmia suorittavalle koneelle että mihin ollaan menossa. Edellytykset: Mallin paikantava algoritmi valmis, estimaattien suodatus valmis 2.7 Siirtyminen Matlab-skriptikielestä C++:aan Mikäli projekti etenee vauhdikkaasti, ajan puitteissa voisi olla mahdollista siirtyä käyttämään Matlabin sijaan C++ kieltä ja OpenCV kirjastoa. Tämä helpottaisi projektin hyödyntämistä muissa tulevissa projekteissa. Tämä on kuitenkin hyvin aikaavievä vaihe, ennenkuin kaikki menetelmät toimivat C++ koodina. Edellytykset: Mallin paikantava algoritmi valmis, estimaattien suodatus valmis Työmäärä: 40 h
Niko Nyrhilä 5 2.8 Dokumentointi Projektiin sisältyy kolme kirjallista dokumenttia: suunnitelman esittely, väliraportointi ja loppuseminaari. Lopuksi työn kulusta ja tuloksista kirjoitetaan loppuraportti. Dokumentteja kirjoitetaan aikataulun puitteissa sitä mukaa kun projekti etenee ja osa-alueita saadaan valmiiksi. Edellytykset: 3 Riskinhallinta Projektin vaiheet tukeutuvat vahvasti aina edellisistä vaiheista saatuihin tuloksiin. Siksi onkin tärkeä tunnistaa projektin kriittiset kohdat, joissa on mahdollista törmätä ongelmiin. 3.1 Markkereiden paikantaminen Suurin riski projektissa on, että markkereita ei kyetä paikantamaan tarpeeksi luotettavasti vaihtelevissa valaistusolosuhteissa. Onneksi kyseessä on kuitenkin melko kypsä tieteenala, ja aiheesta on saatavilla runsaasti tutkimusmateriaalia. Olisi hyvä jos webkameran ei annettaisi muuttaa asetuksia kuten värilämpötilaa ja valotusaikaa, koska näiden jatkuva muuttuminen tekee paikannusalgoritmin parametrien valitsemisesta erittäin vaikeaa. Lisäksi olisi hyvä ymmärtää käytetyn kameran rajoitukset, ja käyttää sellaisia markkereita jotka pyrkivät välttämään ne. Useimmissa sovelluksissa suoraviivainen ratkaisu olisi käyttää kirkasta lisävaloa, joka takaa hyvän kuvanlaadun myös hämärässä. Lisäksi se vähentäisi ympäröivän valon vaikutusta kameran havaitsemiin väreihin. Paikannusalgoritmin tulisi toimia reaaliajassa normaalilla pöytäkoneella, koska jos paikkaestimaatissa on liikaa viivettä, sitä on vaikeampi hyödyntää kärryn moottorien säätämiseen. Kuvasta pitäisi siis filtteröidä turhat tiedot pois melko tehokkaasti. 3.2 Kameran paikan ja polttovälin valitseminen Kärryn toiminta-alue ei ole vielä tarkkaan tiedossa, joten vielä ei ole varmaa miten laajan alueen kameran tulisi kyetä havaitsemaan. Kameran kuva-ala tulisi kuitenkin käyttää mahdollisimman tehokkaasti hyödyksi, koska kamera tarjoaa melko pienen pikselimäärän analysoitavaksi. Mallin paikan ja asennon estimoinnissa olisi ensiarvoisen tärkeää, että markkereiden paikat kameran kuvassa voidaan estimoida mahdollisimman tarkasti. Mitä laajemman alueen kamera näkee, sitä epätarkempia estimaatit ovat. 3.3 Siirtyminen Matlab-skriptikielestä C++:aan Projektin jatkokehityksen ja hyödyllisyyden kannalta olisi toivottavaa että lopullinen projekti toteutettaisiin C++ ohjelmointikielellä, esimerkiksi OpenCV kirjastoa käyttäen. Tällöin kaikki algoritmit täytyy toteuttaa uusiksi, ja täytyy myös varmistaa että käytetyt Matlabin valmiit funktiot (kuten pienimmän neliösumman sovitus) löytyvät käytetyistä kirjastoista.