Matlab SLAMien vertailu käyttäen lidar-anturia ROSin kautta
Hautala, Markus (2022)
Hautala, Markus
2022
Tekniikan ja luonnontieteiden kandidaattiohjelma - Bachelor's Programme in Engineering and Natural Sciences
Tekniikan ja luonnontieteiden tiedekunta - Faculty of Engineering and Natural Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2022-04-25
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202204253511
https://urn.fi/URN:NBN:fi:tuni-202204253511
Tiivistelmä
Tämän työn tutkimuskohteena oli SLAMien vertailu valotutka-anturilla. Anturilla luodaan syvyyskuva ympäristöstä, jossa lähetetään ja vastaanotetaan valopulssi. Käytössä oli kolmiulotteinen anturi, joka luo kolmiulotteisen pistepilven ympäristöstä. SLAMilla tarkoitetaan reaaliaikaista ympäristön selvittämistä anturilla. Eri ajanhetkien datapisteiden perusteella voidaan selvittää etäisyyden- ja suunnanmuutos kahden pisteen välillä. Suuri sovelluskohde SLAMissa on ajoneuvo, jossa pisteitä otetaan tietyin aikavälein auton tai työkoneen liikkuessa eteenpäin.
Mittausjärjestelmän rakentaminen sisälsi fyysisen anturoinnin lisäksi testiskriptin ohjelmoinnin. Työssä välitettiin dataa ”Velodyne Puck” -anturista Matlabiin, missä SLAMeja testattiin. Välitys toteutettiin ROSin avulla, joka mahdollistaa paremman testausympäristön uudelleenkäytettävyyden. On mahdollista esimerkiksi välittää dataa jostain toisesta anturista, koska ROS tarjoaa suuren määrän eri ajureita. Työssä vertailtiin eri Matlabin SLAM-toteutuksia. Työhön valittiin kolme eri Mathworksin toteuttamaa esimerkkiskriptiä, joita muokattiin käyttämään omaa dataa. Tavoite oli vertailla eri Matlabin työkalukirjastojen SLAM-toteutuksia siten, että kukin esimerkkiskripti edustaisi yhtä Matlabin työkalukirjastoa. Työn edetessä lähdekoodia tutkiessa huomattiin, että eri kirjastot käyttävät osin samoja SLAM-funktioita, ja sen takia havaittiin yhteneväisyyttä testituloksissa.
SLAM-toteutuksessa on kolme merkittävää osaa. Ensin on esikäsittely, joka on merkittävässä osassa sen takia, koska SLAM on suorituskyvyltään raskas suhteessa nykypäivän laskentatehoon. Tämän takia on kannattavaa karsia mahdollisimman paljon epäinformatiivista dataa. Toinen osa on perättäisien pistepilvien kohdistus eli etäisyyden- ja suunnanmuutos. Kolmas osa on silmukkatarkastelu, joka korjaa virheitä edellisissä kohdistuksissa havaitessaan paikan, jossa on vierailtu aiemmin.
Esikäsittelymenetelmissä testattiin eri asioita, joista yksi oli näytteenottotaajuuden ja pistepilven pisteiden koon suhde. Kun kummassakin oli yhteensä yhtä paljon pisteitä, havaittiin, että se ei tuottanut moninkertaista eroa kartan tarkkuudessa ja suoritusajassa. Toinen testi oli alinäytteistyksen toteuttamisen erot laatikointimenetelmällä ja satunnaismenetelmällä. Tämä testi osoitti pistetiheyden säilyttämisen tärkeyden, johon NDT-kohdistamismenetelmä perustuu.
Tuloksissa todettiin, että kolmesta esimerkkiskriptistä ”Navigation”- ja ”Lidar” -työkalukirjastot suoriutuivat kartan piirron oikeellisuuden perusteella parhaiten. Vastaavasti ”Computer Vision” -työkalukirjasto suoriutui nopeimmin, mutta tämän kartan oikeellisuus oli heikompi. Tässä havaittiin yhtäläisyys suorituskyvyn tarpeellisuudessa kartan oikeellisuuteen nähden.
Mittausjärjestelmän rakentaminen sisälsi fyysisen anturoinnin lisäksi testiskriptin ohjelmoinnin. Työssä välitettiin dataa ”Velodyne Puck” -anturista Matlabiin, missä SLAMeja testattiin. Välitys toteutettiin ROSin avulla, joka mahdollistaa paremman testausympäristön uudelleenkäytettävyyden. On mahdollista esimerkiksi välittää dataa jostain toisesta anturista, koska ROS tarjoaa suuren määrän eri ajureita. Työssä vertailtiin eri Matlabin SLAM-toteutuksia. Työhön valittiin kolme eri Mathworksin toteuttamaa esimerkkiskriptiä, joita muokattiin käyttämään omaa dataa. Tavoite oli vertailla eri Matlabin työkalukirjastojen SLAM-toteutuksia siten, että kukin esimerkkiskripti edustaisi yhtä Matlabin työkalukirjastoa. Työn edetessä lähdekoodia tutkiessa huomattiin, että eri kirjastot käyttävät osin samoja SLAM-funktioita, ja sen takia havaittiin yhteneväisyyttä testituloksissa.
SLAM-toteutuksessa on kolme merkittävää osaa. Ensin on esikäsittely, joka on merkittävässä osassa sen takia, koska SLAM on suorituskyvyltään raskas suhteessa nykypäivän laskentatehoon. Tämän takia on kannattavaa karsia mahdollisimman paljon epäinformatiivista dataa. Toinen osa on perättäisien pistepilvien kohdistus eli etäisyyden- ja suunnanmuutos. Kolmas osa on silmukkatarkastelu, joka korjaa virheitä edellisissä kohdistuksissa havaitessaan paikan, jossa on vierailtu aiemmin.
Esikäsittelymenetelmissä testattiin eri asioita, joista yksi oli näytteenottotaajuuden ja pistepilven pisteiden koon suhde. Kun kummassakin oli yhteensä yhtä paljon pisteitä, havaittiin, että se ei tuottanut moninkertaista eroa kartan tarkkuudessa ja suoritusajassa. Toinen testi oli alinäytteistyksen toteuttamisen erot laatikointimenetelmällä ja satunnaismenetelmällä. Tämä testi osoitti pistetiheyden säilyttämisen tärkeyden, johon NDT-kohdistamismenetelmä perustuu.
Tuloksissa todettiin, että kolmesta esimerkkiskriptistä ”Navigation”- ja ”Lidar” -työkalukirjastot suoriutuivat kartan piirron oikeellisuuden perusteella parhaiten. Vastaavasti ”Computer Vision” -työkalukirjasto suoriutui nopeimmin, mutta tämän kartan oikeellisuus oli heikompi. Tässä havaittiin yhtäläisyys suorituskyvyn tarpeellisuudessa kartan oikeellisuuteen nähden.
Kokoelmat
- Kandidaatintutkielmat [9896]