Osio 5: suunnittele AR-sovelluksien toimintalogiikka
Lauri Hiltunen
Tiina Hirvonen
Timo Karvonen
**1a.Kauppa-apuri viivakoodeilla**
Tarvitsee tietoa/apua kaupan omistajalta, jotta tiedetään inventaario tilanne siitä, että mitä tuotteita on jäljellä ja siten hyllyissä, jotta sovelluksen ja itse kaupan tilanteet ovat samat. Sovellukseen käyttä voi luoda ostoslistan tuotteista, mitä haluaa ostaa ja tätä voidaan sitten verrata kaupassa. Kaupan hyllyjen päädyissä on koodit, asiakkaalla on tuote/tuotelista ostettavista tavaroista valittuna puhelimesta. Kaupassa asiakas kuvaa kylttiä/hyllyn päädyn koodia ja appi kertoo onko kyseistä tuotetta hyllyllä tai ohjeistaa mistä hyllyltä tuotteita mahdollisesti löytyisi.
Ohjelma on käytettävyydeltään hyvä koska ohjelma helpottaa ja yksinkertaistaa kaupassa käyntiä todella paljon. Ohjelma on myös todella simppeli käyttää, koska käyttäjä saa tarvitsemansa tiedon ottamalla kuvan käytävän päässä olevasta kuviosta. Ja jos tuotetta ei ole kyseisellä hyllyllä niin ohjelma ilmoittaa sen sijainnin kaupasta, esimerkiksi kertomalla hyllynumeron tai käytävän, joka helpottaa tuotteen löytämistä siinä tapauksessa jos sitä ei ole.
Tarvittavat asiat:
- Mobiililaite kameralla ja toimivalla verkkoyhteydellä, jolla appi on.
- Mobiililaitteeseen tarvitaan kamera jotta saadaan kuva koodista. Verkkoyhteyttä tarvitaan tuotteiden määrän ja sijainnin hakemiseen.
- Tiedot kaupan inventaariosta.
- Kaupan inventaariota tarvitaan tuotteiden määrän kertomiseen käyttäjälle, sekä ostoslistan tekemiseen.
- Kaupoissa QR-koodi hyllyjen päädyissä.
-Kauppojen pitäisi laittaa hyllyjen päätyihin QR-koodi jotta kuvasta voitaisiin skannata tarvittavat hyllytiedot. Jonka mukaan sitten pääteltäisiin ilmoitetaanko käyttäjälle että tuotetta löytyy hyllytä vai tuote on tietyllä hyllyllä.
- Tieto tuotteiden sijainnista kaupassa.
- Voidaan ohjata oikeaan paikkaan. Ostoslistan esineen viereen tulee hyllynumero, jossa se on, jos niitä on jäljellä.
Unrealin puolelta ohjelmisto tarvitsee markkerin havainnointi systeemin. Logiikka viivakoodin vertaamiseen tietokantaan. Käyttäjä UI mikä kertoo tuotteen tilanteen. Ostoslista UI missä käyttäjä voi valita tarvitsemansa tuotteet kaupan tietokannasta löytyneistä tuotteista. Ohjelmistoon tarvittaisiin myös lisäksi tietokanta minne haettaisiin kaupan hyllytiedot ja tuotemäärät ohjelman käynnistyessä.
AR ominaisuuksista paras olisi markkereiden käyttö, koska markkereilla tämä systeemi olisi yksinkertainen tehdä, sekä systeemi toimisi varmemmin kuin ei markkeri pohjaisella systeemillä. Systeemi olisi myös paljon kevyempi kuin kuvan kokonainen skannaaminen läpikotaisin kaikkia tuotteita varten.
Fyysisiä komponentteja ohjelmisto tarvitsisi QR koodit kauppaympäristöstä, mitkä kaupan pitäisi itse laittaa. Lisäksi asiakkaalla tulee olla kamerapuhelin.
Sijaintitietoa ei välttämättä tarvita, koska asiakkaalle voidaan kertoa hylly/käytävä numerolla, että missä tuotetta on.
**1b.Kauppa-apuri viivakoodeitta**
Tosielämän myymälästä on luotu Unrealiin pohjapiirustus ja malli, jota hyödyntäen voidaan katsoa asiakkaan sijainti myymälässä ja verrata sitä virtuaaliseen. Virtuaalista kauppaa voidaan sitten käyttää pelimaailman tavoin, jonne esimerkiksi laitetaan "quest-marker", joka ilmoittaa haluttavan ostoksen sijainnin. Tästä tiedosta sitten voidaan piirtää puhelimen näytölle opaste nuoli, jolla asiakas löytää tuotteen luokse.
Asiakas voi valita karttamoodista tai kameran Ar-moodi opasteella. Molemmissa voidaan kertoa etäisyys tuotteesta. Nämä auttaisivat käyttäjää löytämään tuotteen helposti liikkeestä. Käytättävyyttä helpottaisi UI yksinkertaisuus ja selvyys, koska käyttäjällä ei ole muita vaihtoehtoja kuin etsiä yhtä tuotetta ja sitten valita joko karttamode tai AR-mode.
Tarvittavat asiat:
- Mobiililaite kameralla
-Kameraa tarvitaan AR-moden käyttämiseen.
- Kaupan pohjapiirustus ja siitä tehty 3D-malli
-Pohjapiirustusta käytetään ohjelman logiikassa suunnistamiseen ja nuolen suunnan sijoittamiseen.
- Tuotteiden sijaintitiedot
-Tätä hyödynnetään tuotteiden etsinnässä kartalla ja niiden sijoittamisessa sinne.
- GPS sijainti
-GPS sijaintia tarvitaan käyttäjän sijainnin paikantamiseen. Tästä on suurempi hyöty isommissa liikkeissä GPS epätarkkuuden takia.
Unrealissa voitaisiin käyttää nuolen kääntämisen logiikkaan EQS, eli Environment Query System. Tällä pääteltäisiin mikä on paras kohta minne nuoli kääntyisi. Kaupan isommat käytävät olisivat painotettuja pieniin kujiin verrattuna joten nuoli pyrkisi pysymään niillä. Tuotteen sijainti on painotettu, siten, että lyhyempi matka on aina suosittu verrattuna käyttäjän sijaintiin, jotta nuoli lopulta kuitenkin kääntyisi pienemmille kujille pääkujan sijaan. Käyttäjän katsomissuuntaa seurataan kameran eteenpäin vektorista (forward vector), jota sitten verrataan seuraavaan valittuun nuolen parhaaseen pisteeseen. Nuolen käyttäytymislogiikkaan tarvitaan käytöspuuta, koska EQS toimii sen avulla.
Karttanäkymässä käyttäjän sijaintia seurataan GPS avulla, jota ilmaistaan vihreänä pisteenä kartalle. Punainen piste tulee tuotteen sijainnista, eli ladatusta sijaintitiedosta. Juokseva numerointi ilmaisee asiakkaan etäisyyden kohteeksi merkatusta tuotteesta. Käyttäjän sijainti kartalla päivittyy koko ajan, jolloin kartta toimii reaaliaikaisesti. Tämä ominaisuus ei ole AR liittyvä, mutta helpottaa yhdessä nuolen kanssa asiakkaan navigointia myymälässä.
Sovelluksessa AR toteutuu navigaationuolen avulla, joka on sijoitettu käyttäjän puhelimen ruudun näkymään. Nuolen sijainti ruudulla ei vaihdu, mutta se reagoi käyttäjän rotaatioon, esim. jos käyttäjä kääntyy ympäri, nuoli osoittaa edelleen siihen suuntaan minne käyttäjän pitäisi mennä.
Sijaintitiedon käyttö on oleellista sovelluksen toimivuuden kannalta, joten se on käyttökelpoisin ja erilaisiin tilanteisiin helposti muokattavissa oleva ratkaisu. Tämä olisi hyvä ratkaisy myös sen takia, että fyysisiä komponentteja ei tarvita ollenkaan.
**2a.Virtuaaliset Heippalaput patsaaseen **
- cloud server (azure)
Kävijät voivat lisätä samassa huoneessa ollessaan patsaaseen heippalappuja, jotka kestävät yhden session ajan. Sessio kestää 24 tuntia ja resetoituu puolen yön jälkeen tai työpäivän päätteeksi. Heippalappujen luomisen määrää voisi olla rajoitettu tehokkuus syistä sekä massiviisen määrän viestejä estämiseksi, että AR-tilasta ei tule liian kiireinen. Koska patsaassa on rajallinen määrä tilaa, niin lappujen määräkin voisi olla rajoitettu. Koska käytetään arcoren valmista tasojen tunnistamista niin patsaan olisi hyvä olla kulmikas ja sillä olisi hyvä olla tasaisia pintoja, jotta niitä voisi tunnistaa ohjelmalla helpommin, hienommin ja paremmin. Lapun kiinnitetään näkymään ankkurein (pin) ja hostin ylläpitämän, pilvipalvelua hyödyntävän serverin avulla kaikki huoneessa olevat voivat tarkastella samaa patsasta ja nähdä siihen kiinnitetyt laput.
Ratkaisu on käytettävyydeltään hyvä, koska ohjelma vähentää rasitusta puhelimelta estämällä massiivista määrä viestejä. Ratkaisu olisi todella hyvä esimerkiksi, jos se lisäisi S-pankin jonotuksen viihtyisyys astetta. Sovelluksen käyttäminen ainakin lyhentää jonotusajan pituuden tuntua, kun asiakas voi ilahduttaa itseään ja muita iloisilla heippalapuilla.
Tarvittavat asiat:
- Pilvipalvelin sessioiden hostausta varten
- Tätä tarvitaan lappujen sijainnin tallentamista varten, sekä tekstiä.
-Fyysinen piste minkä ympäristö on sopiva AR-session aloittamiseen.
- Jos ympäristö on liian pimeä tai ei sovellu muuten, kuten esineeseen ei saa selvää keskittymistä kameralla, voi session aloittaminen olla vaikeaa tai mahdotonta.
- Tila ja itse patsas, jota käytetään sovelluksen kiintopisteenä.
Sovellus puolella tarvitaan ar-sessiomanageri, joka hoitaa palvelimme datan lisäämisen ja sen sieltä hakemisen. Lappujen liittäminen patsaaseen voisi toimia samalla periaatteella, kuin HelloAR-sovelluksessa, jossa voi laitella "andy"-android hahmoja tasoille. Tässä kuitenkin sen tilalle laitetaan heippalappu-actor, johon käyttäjä voi liittää viestinsä, joka siten on muitten nähtävissä. Heippalappu kohdistetaan aina pinnan suuntaisesti, jotta sen viesti on nähtävissä ja niissä merkkien määrä on rajoitettu, jotta ne on nopeasti ja helposti luettavissa.
Käytämme tässä mobiili-AR pinnan skannaus ja siihen markkereiden laitto ominaisuutta, sekä pilviankkureita. Koska on jo valmis järjestelmä, jolla tämän voisi toteuttaa niin siitä on kätevä lähteä liikkeelle valmistelemaan sovellusta. Muilla tämän tekeminen voisi olla todella monimutkaista.
Fysiisiä komponenttejä sessioon tarvitaan kamera jolla alue kuvataan ja skannataan, sekä puhelin joka hostaa session skannatuista kuvista.
**2b.Virtuaaliset Heippalaput ilmoitustauluun **
Esimerkki tapauksena otetaan, että ilmoitustaulu on sijoitettu koulun käytävälle. Jokaisella on vapaa pääsy päästä lukemaan ja lisäämään tekstiä virtuaaliselle taululle ja sen oikeinkirjoitusta ei tarkisteta mitenkään. Kuviakin voi sinne lisäillä aivan miten kukin itse haluaa, koska emme aikoneet ottaa mitään vastuuta tästä ja se koko taulu voi olla kuin virtuaalinen villilänsi, kuitenkin ilman saluunoita. Rajoituksia kuvien lisäämiseen on vain laitettavien kuvien kokoon ja tallennusmuotoon liittyen. Kuvalle on määrätty maksimi koko, johon kaikki kuvat skaalautuvat. Näin sovellus ei käy liian raskaaksi tai käyttäjät eivät lisää esimerkiksi 100gb kokoista kuvaa joka kaataisi koko systeemin. Liikkuvan kuvan, kuten gif lisääminen ei ole mahdollista, vaan ainoat formaatit ovat jpeg ja png. Tulevaisuudessa ehkäpä kuviin voisi käyttää kasvojen tunnistamista ja siten voitaisiin estää kaikki kuvat, joissa olisi ihmisten tai ihmismäisiä kasvoja, joka voisi rajoittaa sopimattomia, ei haluttuja kuvia, kuten esimerkiksi Trump ja Putin ilakoimassa taululla ilkosillaan. Mikään ei estäsi, sitä, että olisi monta taulua samassa paikassa, jos vain tekisi monta sessiota, joihin aina liitytään eri markkeri/qr-koodi skannaamalla.
Reaalimaailmassa on olemassa fyysinen ilmoitustaulu, jota käyttäjä osoittaa puhelimellaan. Näytöstä käyttäjä voi klikata jotain kohtaa taulusta, ja näin saa auki valikon josta voi lisätä joko kuvan tai pelkkää tekstiä. Kuva/teksti päivittyy taululle, ja pilvipalvelimen kautta muut käyttäjät voivat tarkastella taulua ja nähdä muutokset. Pilvipalvelimen ja serverin takia session pituus on rajoitettu 24 tuntiin. Lisäksi ilmoitustaululle laitettavien ilmoitusten määrää on rajoitettu, jotta ohjelma ei käy liian raskaaksi. Koska kuvat ja teksti ovat kuitenkin pieniä kooltaan, voi näkyvien ilmoitusten maksimimäärä olla suurempi.
Tarvittavat asiat:
- Kamera jolla taulu kuvataan ensiksi.
-Tätä kuvaa käytetään AR-session aloittamiseen.
- Puhelin jolla hostataaan sessio.
-Puhelin pitää sessiota pystyssä kun muut liittyvät siihen.
- Taulu joka kuvataan.
-Taulun tulee olla hyvällä paikalla AR-sessiota varten. Asiat kuten valaistus tulee huomioida.
- Pilvipalvelin sessioiden hostausta varten
- Tätä tarvitaan lappujen sijainnin tallentamista, tekstiä ja kuvia varten.
Sovelluspuolella pitää toteuttaa AR-pilvisessio, jossa taulun dataa pyöritetään. Tarvitaan markkerin/qr-koodin lukeminen, jotta taulusessioon voi liittyä. Mahdollisesti kasvojen tunnistaminen ohjelmallisesti kun käyttäjä yrittää lisätä kuvia, jotta henkilöistä kuvia ei voisi jakaa taululla. Logiikka lapun lisäämiseen taululle, joko kuvan tai tekstin kanssa.
Ohjelma selkeästi hyödyntäisi mobiili-AR puolelta pilviankkureita. Liittymiseen käytettäisiin markkereita fyysisestä maailmasta, eli siihen tarvittaisiin tunnistus. Tasontunnistamista tarvitaan notejen hyvin laittamiseen pinnalle, jotta ne ovat oikeinpäin aseteltuja taulun pintaan kohden.
Markkeri helpottaa sessioon liittymistä, koska käyttäjä tietää mikä taulu on käytössä AR-sessiossa. Jos sessiota on monta niin voi käyttäjä myös valita siistimmän taulun mihin oma lappu mahtuu hyvin. Näin myöskään sessiot eivät kuormitu liiallisesta käyttäjämäärästä ja dataliikenteestä. Pilvipalvelu on pakollinen datan siirtämistä varten puhelimien välille. Pinnan skannaus olisi hyvä koska sillä saa laput sijoituttua oikeille kohdille ja oikeinpäin.
Fyysisiäkomponentteja tarvitaan ainakin paikka, missä on taulu jossa on markkeri minkä voi skannata laitteella. Jotta käyttäjä pääsee liittymään tiettyyn sessioon, sekä tietää missä niitä pidetään.
Varsinaisesti käyttäjän sijaintia ei tarvitse tarkistaa, sillä sessioon liitytään fyysiseen maailmaan sijoitetulla markerilla. Markerin käytöllä sekä ilmoitustaulun osoittamisella puhelimella varmistetaan, että käyttäjät ovat samassa tilassa.
**3a.Reittisovellus **
Valitaan etsitty ihminen ja skannataan marker/qr-koodi, jolla avataan valmiiksi kuvattu 360° kuva kyseisestä tilasta, jossa on opaste-elementtejä. Qr-koodin tai markkerin voi lukea paikanpäältä tai jaettuna muulla tavalla, koska niitä on helppo sijoittaa digitaalisesti. Elementin tiedot vaihtuu sen mukaan ketä etsitään. Oikea suunta ilmaistaan värillisellä pallolla ja tekstillä joka kertoo mitä tehdä seuraavaksi. On myös mahdollista liikkua sovelluksen sisällä koskettamalla infoa, jolloin liikutaan seuraavaan kohtaan reitillä.
Ratkaisu on siinä mielessä hyvä että ohjelmaa voi käyttää sijainnista riippumatta jo ennen koululle tulemista. Toteutuksen pitäisi olla myös todella simppeli tällä tavalla. Käytettävyydeltäänkin ohjelma olisi todella simppeli, koska käyttäjä voi vain lukea QR-koodin tai markkerin ja saada sen avulla 360° kuvan näytölleen, sen jälkeen käyttäjän tarvitsee vain käännellä puhelintaan ja hän näkisi sijainnit näytöllä.
Tarvittavat asiat:
- Mobiililaite kameralla
-Kameraa tarvitaan QR-koodin tai markkerin lukemiseen.
Unrealissa pitää aina olla pallon sisäpinta, johon aina haluttu kuva ja sen infot sijoitellaan. Vain halutun henkilön tiedot näytetään tarpeen mukaan. Tiedot näyteään Widget-komponentin avulla, joita sammutetaan ja käynnistetään tarpeen mukaan. Ympäristön tarkastelu toteutetaan tekemällä vr-pawn, johon kamera on liitettynä. Jokainen kuva on oma kenttänsä projektissa. Tällöin kokonaisuutta on helpompi hallita ja uusia kenttiä on helppo lisätä olemassa olevaan järjestelmään. Siirtyminen paikasta toiseen toteutetaan kentän vaihdolla.
AR ominaisuuksista paras olisi markkereiden käyttö, koska markkereilla tämä systeemi olisi yksinkertainen tehdä, sekä systeemi toimisi varmemmin kuin ei markkeri pohjaisella systeemillä. Systeemi olisi myös paljon kevyempi kuin kuvan kokonainen skannaaminen ja siihen elementtien sijoittaminen.
Ohjelma tarvitsisi koululle fyysisiä markkereita joita käyttäjä voisi kuvata ja tällöin saada ohjelmaan käyttäjän sijainnin. Näitä hyödynnettäisiin sitten oikean kentän lataamiseen.
Kuvat:








