3D-LIDARin simulointi Unity3D-ympäristössä
Tirkkonen, Patrik (2021)
Tirkkonen, Patrik
2021
Teknisten tieteiden kandidaattiohjelma - Bachelor's Programme in Engineering 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ä
2021-12-03
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202111098317
https://urn.fi/URN:NBN:fi:tuni-202111098317
Tiivistelmä
Työssä kehitetään kolmiulotteista maailmaa skannaava Light Detection and Ranging, eli LIDAR-järjestelmän simulaatio Unity3D-ympäristössä. Työ jakautuu kahteen osaan. Ensin käsitellään teoriaosuus LIDARin sekä Unity3D:n oleellisista ominaisuuksista liittyen tähän työhön. Teoriaosuuden jälkeen esitellään kehitetty kokonaisuus.
LIDAR on etäisyydenmittausjärjestelmä, joka perustuu valon kulkuajan mittaamiseen. LIDAR lähettää laserlähteestään valosäteen, joka heijastuu takaisin osuessaan esteeseen. Esteen etäisyys lähteestä lasketaan mittaamalla valon kuluttama aika matkaan. Tätä kutsutaan valon kulkuajaksi. LIDARilla on erilaisia käyttökohteita missä sitä käytetään, mutta tässä työssä keskitytään vain etäisyyden mittaamiseen ja kohteen paikallistamiseen sivusuunnassa lähietäisyydeltä.
Unity3D on Unityn ympäristö, jossa käyttäjä kehittää kolmiulotteista näkymää. Unity3D yhdistetään yleensä pelien kehittämiseen, mutta sitä käytetään myös videoiden ja simulaatioiden luomiseen. Unity3D:n kanssa käytetään Unityn fysiikkamoottoria. Fysiikkamoottorilla tässä työssä toteutetaan Raycast-osumien sijainti peliobjektien osumalaatikossa sekä objektien liikehdintä. Raycastin tehtävä tässä työssä on simuloida lasersädettä.
Simulaatio koostuu yksinkertaisesta näkymästä, johon lisätään esivalmiiksi luodut LIDAR-peliobjektit. LIDAR skannaa ympärillä olevaa näkymää, ja tallentaa objekteihin osuvista Raycasteistä tarpeellisen tiedon tietorakenteeseen sekä pistepilvitiedostoon. Pistepilvitiedostoon tallennetaan osumien x-, y- ja z-koordinaatit LIDAR-peliobjektin paikallisessa koordinaatistossa. Tämän tiedoston sisältö syötetään 3D-mallinnusohjelmaan, jossa muodostetaan kuvaa pisteiden sijainneista.
LIDARin skannaustapa mitata ympärillä olevan maailman kohteita vaihtelee. Yksi tapa toteuttaa LIDAR on skannaava mekaaninen LIDAR. Tämä skannaa ympäristöä pyörien ja vaihtaen atsimuuttikulman astetta. Mekaanisilla LIDAReilla on yleensä täysi 360 asteen näkökenttä laitteen ympäriltä. Toinen LIDAR-järjestelmätyyppi on puolijohde-LIDAR. Niiden näkökenttä ei ole yhtä laaja kuin mekaanisella LIDARilla, mutta niissä ei ole isoja liikkuvia komponentteja.
Toteutettu simulaatio sisältää kaksi erilaista LIDAR-järjestelmää: skannaava LIDAR ja Flash LIDAR. Ensimmäinen peliobjekti skannaa ympärillä olevaa maailmaa paloittain skannaavan mekaanisen LIDARin toimintatapaa mukaillen, jonka atsimuuttikulmaa päivitetään joka funktiokutsu. Korkeus mitataan kerroksittain yhden funktiokutsun aikana sijoittamalla Raycastit osoittamaan tiettyjen asteiden välein pystysuunnassa. Toinen toteutettu peliobjekti on Flash LIDAR -peliobjekti. Se ottaa joka funktiokutsulla kuvan isosta alueesta suoraan LIDAR-peliobjektin edestä. Kehitettyjen peliobjektien parametrien arvoja on mahdollista päivittää kesken ajon, ja saaduista koordinaattipisteistä voi muodostaa totuudenmukaista ja luotettavaa pistepilvikuvaa.
LIDAR on etäisyydenmittausjärjestelmä, joka perustuu valon kulkuajan mittaamiseen. LIDAR lähettää laserlähteestään valosäteen, joka heijastuu takaisin osuessaan esteeseen. Esteen etäisyys lähteestä lasketaan mittaamalla valon kuluttama aika matkaan. Tätä kutsutaan valon kulkuajaksi. LIDARilla on erilaisia käyttökohteita missä sitä käytetään, mutta tässä työssä keskitytään vain etäisyyden mittaamiseen ja kohteen paikallistamiseen sivusuunnassa lähietäisyydeltä.
Unity3D on Unityn ympäristö, jossa käyttäjä kehittää kolmiulotteista näkymää. Unity3D yhdistetään yleensä pelien kehittämiseen, mutta sitä käytetään myös videoiden ja simulaatioiden luomiseen. Unity3D:n kanssa käytetään Unityn fysiikkamoottoria. Fysiikkamoottorilla tässä työssä toteutetaan Raycast-osumien sijainti peliobjektien osumalaatikossa sekä objektien liikehdintä. Raycastin tehtävä tässä työssä on simuloida lasersädettä.
Simulaatio koostuu yksinkertaisesta näkymästä, johon lisätään esivalmiiksi luodut LIDAR-peliobjektit. LIDAR skannaa ympärillä olevaa näkymää, ja tallentaa objekteihin osuvista Raycasteistä tarpeellisen tiedon tietorakenteeseen sekä pistepilvitiedostoon. Pistepilvitiedostoon tallennetaan osumien x-, y- ja z-koordinaatit LIDAR-peliobjektin paikallisessa koordinaatistossa. Tämän tiedoston sisältö syötetään 3D-mallinnusohjelmaan, jossa muodostetaan kuvaa pisteiden sijainneista.
LIDARin skannaustapa mitata ympärillä olevan maailman kohteita vaihtelee. Yksi tapa toteuttaa LIDAR on skannaava mekaaninen LIDAR. Tämä skannaa ympäristöä pyörien ja vaihtaen atsimuuttikulman astetta. Mekaanisilla LIDAReilla on yleensä täysi 360 asteen näkökenttä laitteen ympäriltä. Toinen LIDAR-järjestelmätyyppi on puolijohde-LIDAR. Niiden näkökenttä ei ole yhtä laaja kuin mekaanisella LIDARilla, mutta niissä ei ole isoja liikkuvia komponentteja.
Toteutettu simulaatio sisältää kaksi erilaista LIDAR-järjestelmää: skannaava LIDAR ja Flash LIDAR. Ensimmäinen peliobjekti skannaa ympärillä olevaa maailmaa paloittain skannaavan mekaanisen LIDARin toimintatapaa mukaillen, jonka atsimuuttikulmaa päivitetään joka funktiokutsu. Korkeus mitataan kerroksittain yhden funktiokutsun aikana sijoittamalla Raycastit osoittamaan tiettyjen asteiden välein pystysuunnassa. Toinen toteutettu peliobjekti on Flash LIDAR -peliobjekti. Se ottaa joka funktiokutsulla kuvan isosta alueesta suoraan LIDAR-peliobjektin edestä. Kehitettyjen peliobjektien parametrien arvoja on mahdollista päivittää kesken ajon, ja saaduista koordinaattipisteistä voi muodostaa totuudenmukaista ja luotettavaa pistepilvikuvaa.
Kokoelmat
- Kandidaatintutkielmat [8683]