Teknillinen korkeakoulu AS 0.3200 Automaatio ja systeemitekniikan projektityöt Stereopaikannusjärjestelmän tarkkuus (3 op) 19.9.2008 14.01.2009 Työn ohjaaja: DI Matti Öhman Mikko Seppälä
1 Työn esittely Tässä projektityössä tutkittiin Autonomisten järjestelmien tutkimusryhmässä kesätyönä rakennetun, stereokonenäköön perustuvan paikannusjärjestelmän tarkkuutta. Järjestelmä koostuu led valoin merkitystä maalisylinteristä ja stereokameraparista. Maalikappaleen paikka ja orientaatio lasketaan kameroiden tunnistamien led pisteiden perusteella. Järjestelmää on suunniteltu käytettäväksi metsäkoneen hakkuupään paikannukseen. Työssä selvitettiin kuinka maalikappaleen kaikkien kuuden vapausasteen muuttaminen vaikuttaa järjestelmän antaman paikannuksen tarkkuuteen. Tarkkuutta estimoitiin vertaamalla järjestelmän antamaa paikannustulosta mittanauhalla ja kulmalevyllä tehtyihin mittauksiin. 2 Tutkittava järjestelmä 2.1 Laitteisto Maalikappale on esitetty kuvassa 1. Sen runkona toimii halkaisijaltaan 25 cm muovisylinteri, johon on kiinnitetty 24 lediä. Ledit on jaettu kahdeksaan pystyriviin, joissa jokaisessa on siten kolme lediä. Ledejä ajetaan suurella virralla tahdistetusti stereokameran kanssa siten, että valot välkähtävät kun kamerat ottavat kuvan. Maalikappaletta ohjataan mikrokontrolleripiirillä, joka tuottaa myös kameran laukaisusignaalit. Halutut asetukset syötetään PC koneelta USB väylää pitkin. Kuva 1: Stereopaikannusjärjestelmän maalikappale
Ledit on jaettu kahteen ryhmään, 0 ja 1 ledeihin, ja yhdessä kuvassa vain jomman kumman ryhmän ledit ovat päällä. Jokainen kolmen ledin ryhmä on yksilöitävissä siihen kuuluvien 0 ja 1 ledien muodostaman binääriluvun avulla. Ledien asettelu on havainnollistettu kuvassa 2. Kuva 2: Kolmen ledin ryhmät ovat yksilöitävissä niihin kuuluvien 0 ledien (esitetty valkoisella) ja 1 ledien (esitetty mustalla) muodostamien binäärilukujen avulla. Järjestelmän tarkkuutta testattiin käyttäen kahdesta Basler Scout sca140017fm kamerasta rakennettua stereokameraparia. Kameroiden tarkkuus on 1390x1040 pikseliä ja niiden objektiivien polttovälit ovat 5 mm. Mittauksissa kuvat otettiin 0,33 ms valotusajalla ja aukkoarvolla 4.8. 2.2 Algoritmit Maalikappaleen paikannus lasketaan stereokameran ottamista kuvista järjestelmää varten toteutetulla C++ ohjelmalla. Ohjelma voi laskea paikannuksen levylle tallennetuista kuvista tai reaaliaikaisesti kameroilta saatavasta kuvadatasta. Reaaliaikalaskennassa on kuitenkin vielä ongelmia kameroiden keskinäisessä synkronoinnissa, joten sitä ei käytetty tässä mittauksessa. Ohjelman laskee maalikappaleen paikan ja orientaation kolmessa vaiheessa, jotka on esitetty esitetty kuvassa 3. Ensimmäisessä vaiheessa raakakuvista etsitään kohteet jotka voisivat olla ledejä. Kuva kynnystetään ja saadusta binäärikuvasta etsitään ledin kokoiset ja muotoiset segmentit. Nämä toiminnot on toteutettu OpenCV konenäkökirjaston valmiiksi tarjoamilla funktioilla. Saadut segmentit muunnetaan alipikselitarkkuuden 2D pisteiksi laskemalla jokaisen segmentin painopiste kynnystämättömästä kuvasta. Näin saadut pisteet muunnetaan normalisoidun neulanreikäkameran kuvatason koordinaatistoon. Muunnoksen yhteydessä kompensoidaan linssivirheet.
Kuva 3: Paikannuksen laskennan vaiheet Seuraavassa vaiheessa vasemman kameran kuvasta löydetyille ledipisteille pyritään löytämään vastineet oikean kameran kuvasta löydettyjen pisteiden joukosta. Aluksi kaikille pisteille tehdään transformaatio, joka siirtää ne virtuaalisesti yhdensuuntaiseen stereokonfiguraatioon. Tässä stereokameraparin kameroiden keskinäiset asemointivirheet eliminoidaan ja molempien kameroiden kuvatasoista saadaan yhdensuuntaiset. Sen jälkeen molemmista kuvista saadut pisteet järjestetään x koordinaattinsa mukaan kasvavaan järjestykseen. Tämän jälkeen vasemman kuvan pisteitä verrataan järjestyksessä oikean kuvan pisteisiin. Jos niiden y koordinaatien ero on tiettyä Δy:tä pienempi, pisteet tulkitaan toisiaan vastaaviksi. Kahdesta toisiaan vastaavasta pisteestä saadaan laskettua vastaavan ledin 3D koordinaatit. Kun ledien 3D koordinaatit on selvitetty, yritetään niistä ja edellisellä kierroksella lasketuista 3D koordinaateista etsiä kolmen ledin ryhmiä tunnistettujen pisteiden välisten etäisyyksien perusteella. Kun tiedetään mitkä pisteet kuuluvat mihinkin triplettiin, voidaan tunnistaa mitä nimenomaista lediä mikin löydetty piste vastaa. Tämän jälkeen ohjelma laskee sylinterin geometriasta sylinterin keskiakselin suuntavektorin, sylinterin pohjan keskipisteen paikan ja sylinterin kiertokulman oman akselinsa ympäri. 3 Suoritetut mittaukset 3.1 Yleiset mittausjärjestelyt ja mittauslaitteisto Stereopaikannusjärjestelmän tarkkuutta tutkittiin tekemällä joukko vertailumittauksia mittanauhan ja ruuviin perustuvan kulmalevyn avulla. Kaikkiaan suoritettiin neljä mittausta, joissa maalikappaleen asentoa muutettiin eri vapausasteiden suhteen ja vertailumittauksen tuloksia
verrattiin järjestelmältä saatuihin paikannustuloksiin. Kamerat ruuvattiin kiinni puiseen alustaan, joka asetettiin mittauksesta riippuen lattialle tai pöydälle. Käytetyn stereokameraparin koordinaatisto oli kiinnitetty oikean kameran aukon kohdalle siten, että z akseli osoitti optisen akselin suuntaan, y akseli ylös ja x akseli vasemmalle. Jokaisessa mittauksessa maalikappaletta siirrettiin useiden mittauspisteiden välillä ja jokaisessa mittauspisteessä kappaleesta otettiin sata stereokuvaparia. Kuvat otettiin 0,33 ms valotusajalla n. 16 kuvan sekuntinopeudella. Seuraavissa alaluvuissa on esitelty jokaisen mittauksen erityispiirteet. 3.2 Mittaus z suunnassa Ensimmäisessä mittauksessa tutkittiin miten kappaleen siirtäminen kameroiden optisen akselin (eli z akselin) suunnassa vaikuttaa järjestelmän tarkkuuteen. Kamerat asetettiin lattialle ja mittanauhaa käyttäen lattiaan merkittiin mittauspisteet 1 metrin välein etäisyyksille 1 5 metriä. Mittausjärjestely oli kuvan 4 mukainen. Kuva 4: Mittaus optisen akselin suunnassa 3.3 Mittaus x suunnassa Toisessa mittauksessa tutkittiin maalikappaleen sivuttaissuuntaisen aseman vaikutusta mittaustarkkuuteen. Mittaus toteutettiin pöydällä ja z suuntainen etäisyys kameroihin oli noin 2 metriä. Mittausasemat valittiin siten, että maalikappale siirtyi kameroiden kuva alan reunaan, mutta pysyi silti molempien kameroiden kuvattavissa. Mittauspisteitä oli kolme ja niiden mittanauhalla mitatut x koordinaatit olivat 0 cm, 40 cm ja 80 cm. Mittausjärjestely on esitetty kuvassa 5.
Kuva 5: Mittausjärjestely sivusuuntaisessa mittauksessa 3.4 Kiertomittaus Kolmannessa mittauksessa tutkittiin kuinka maalikappaleen kierto oman akselinsa ympäri vaikuttaa mittaustarkkuuteen. Kappale asennettiin kiertolevylle, jälleen 2 metrin etäisyydelle kameroista, siten että kappaletta voitiin kiertää akselinsa ympäri. Mittausjärjestely om esitetty kuvassa 6. Mittauspisteet valittiin 5 asteen välein välillä 0 360. Kuva 6: Kiertomittauksen järjestely ja mittauksessa käytetty kulmaruuvi
3.5 Kiertomittaus kallistetulla akselilla Viimeisessä mittauksessa tutkittiin kuinka hyvin järjestelmä määrittää kappaleen akselin suuntavektorin ja kiertokulman erilaisissa asennoissa. Tätä varten kappale asetettiin kiertolevylle kallistettuna. Kappaletta kallistettiin n. 28 kuvan 7 mukaisesti. Muuttamalla kiertolevyn kulmaa kappaleen akselia voitiin liikuttaa kartion pinnalla. Kuva 7: Mittaus kallistetulla akselilla 3.6 Mittausvirheistä Referenssimittauksiin aiheutti epätarkkuutta, se että stereopaikannusjärjestelmän koordinaatisto on kiinnitetty oikean kameran aukkoon. Koska aukon paikan tarkka määrittäminen ei onnistu irottamatta objektiivia ja siis vaikuttamatta kameran kalibraatioon, on vertailumittauksissa korkeintaan muutaman millin suuruista systemaattista virhettä. 4 Tulokset ja päätelmät Mittausten tulokset on esitetty kuvissa 8 13, joihin on piirretty poikkeamat referenssimittauksesta referenssimittauksen funktiona. Tuloksista havaitaan, että mittaustarkkuuteen vaikuttaa merkittävästä ainoastaan maalikappaleen etäisyys kameroista optisen akselin suunnassa, jossa virhe kasvaa lineaarisesti etäisyyden kasvaessa. Mittaus 5 metrin etäisyydellä ei onnistunut enää ollenkaan, sillä algoritmi ei kyennyt löytämään kuvista toisiaan vastaavia stereopisteitä. 5 metrin etäisyydellä maalikappaleen ledit näkyvät stereokameroiden kuvissa enää 1 2 pikselin kokoisina, jolloin tarkkuus ei riitä vastaavuuden toteamiseen nykyisellä algoritmilla.
Kiertomittauksessa havaittiin lisäksi, että mittaukset epäonnistuivat aina kun maalikappale oli kiertynyt siten, että toinen kamera näkee ledirivin jota toinen kamera ei näe. Myös tässä tapauksessa toisiaan vastaavien stereopisteiden etsintä epäonnistuu, sillä algoritmi tulkitsee toisiaan vastaamattomat pisteet vastaaviksi. Tämä johtuu siitä, että algoritmi toteaa vastaavuuden ainoastaan Δy:n perusteella. Muuten järjestelmän tarkkuus osoittautui hyväksi, poikkeamat referenssiarvoista olivat korkeintaan muutamia millimetrejä ja asteita. Ongelma järjestelmän hyödyntämisen kannalta on kuitenkin mittausten epäonnistuminen jo 5 metrin etäisyydellä kameroista. Tähän voidaan vaikuttaa käyttämällä järjetelmässä tarkempia (ja kalliimpia) kameroita tai käyttämällä teleobjektiiveja. Jälkimmäisen ratkaisun ongelmana on kapeneva kuva ala. Vastaavien stereopisteiden etsintään käytetty algoritmi on liian naiivi tähän käyttötarkoitukseen ja sitä tulisi kehittää niin, että virheellisiä vastaavuuksia ei havaittaisi. On tärkeää että järjestelmä toimii maalikappaleen kiertokulmasta riippumatta. Kuva 8: z suuntainen virhe referenssi z:n funktiona
Kuva 9: maalikappaleen akselin ja y akselin välinen kulma z:n funktiona optisen akselin suuntaisessa mittauksessa Kuva 10: x:n virhe refernssi x:n funktiona
Kuva 11: Kiertokulman virhe referenssikierron funktiona Kuva 12: Mitatun ja laskennallisen akselin välinen kulma kiertokulman funktiona vinomittauksessa
Kuva 13: Kiertomittauksessa mitatut ja laskennalliset akselit 3D koordinaatistossa
5 Tiivistelmä Työssä tutkittiin led maalikappaleeseen ja stereokamerapariin perustuvan optisen paikannusjärjestelmän tarkkuutta. Tarkkuutta estimoitiin vertaamalla järjestelmän antamia tuloksia mittanauhalla ja kulmaruuvilla tehtyihin referenssimittauksiin. Tulosten perusteella järjestelmä pystyy paikantamaan maalikappaleen alle 1 cm ja 10 tarkkuudella kunhan kappaleen etäisyys kameraan on alle 5 m. Suuremmilla etäisyyksillä tarvitaan tarkempi kamera. Lisäksi havaittiin ongelmia järjestelmän stereoalgoritmissa, jonka takia mittaukset epäonnistuvat jos kappale on kiertynyt tiettyihin asentoihin akselinsa ympäri.