Nädal 1: 3 põnevat IT-lahendust eri aastakümneilt

2010ndad: Tänapäevased inertsiaalandurid (VR-i kontekstis)

Image showing 3 rotational and 3 translational axes to explain the concept of 6 degrees of freedom

Mis on inertsiaalandur?

Inertsiaalandur ehk IMU (ingl k Inertial Measurement Unit) on seade, mis võimaldab mõõta kuni 6 vabadusastet 3D ruumis - kolmel teljel sirgliikumist ja kolmel teljel pöörlemist.
Enamasti koosneb IMU güroskoobist ja aktseleromeetrist, kuid lisaks neile võib IMU sisaldada ka muid sensoreid, nt mõõtmiste korrigeerimiseks või kalibreerimiseks.

Tänapäevaste inertsiaalandurite teke ja kasutus

Intertsiaalandurite algse leiutamise ja kasutuselevõtu aega ma leida ei suutnud. See pole aga ka eriti oluline, kuna käesolevas postituses keskendun IMUde kategooriale, mis tekkis minu arusaamise järgi alles 2010ndatel aastatel.
Varem kasutati IMUsid navigeerimiseks, nt laevadel, lennukitel, kosmosesõidukitel jne, kus kasutusel olevad IMUd olid tihti suured, rasked ja kallid. Nutitelefonide jms nutiseadmete levikuga aga tekkis suur nõudlus väikeste ja odavate IMUde järele. Seega arenes vastavate IMUde valmistamise tehnoloogia kiirelt ning nii hinnad kui ka mõõtmed langesid. (Siiski on ka eelnenud aastakümnendil kasutatud IMUsid avalikkusele müüdavas masstoodangus, nt Wii mängukonsooli pultidel.)

Taskukohaste ja väikeste IMUde areng võis küll olla põhjustatud nutitelefonide populaarsuse poolt, kuid see võimaldas IMUde kasutamist ka muudes valdkondades, mille jaoks need varem sobimatud või problemaatilised olid. Võib mainida näiteks droone ja roboteid, kuid mind huvitab enim nende panus tänapäevaste virtuaalreaalsuslahenduste loomisesse.

Kasutus virtuaalreaalsustehnoloogias

Hoolimata IMUde puudujääkidest (millest üks mõjuvamaid on mõõtenihe, mis korrigeerivate vahendite puudumisel paratamatult IMU andmetesse ajaga sisse ilmub) on need üheks olulisimaks riistvarakomponendiks tänapäevastes VR-lahendustes. Virtuaalreaalsuses on äärmiselt oluline kasutaja pea - või pigem selle küljes olevate oluliste meeleorganite - liikumise ja orientatsiooni täpne ja korrektne jälgimine piisava sagedusega. IMUd on selle saavutamisel mänginud hindamatut rolli, kuigi üksipäini neist muidugi ei piisaks - asendamatud komponendid on ka optilised sensorid ja hunnik geniaalset matemaatikat.

Allikad ja teemaga seonduvad lingid

1980ndad (või 70ndad?): Valguspõhised retro-välisseadmed

NES Zapper, no background
Mõnikümmend aastat enne nutitelefone ja suhteliselt taskukohast virtuaalreaalsust sooviti ikkagi luua uudseid ja kaasahaaravaid digitaalse meelelahutuse vorme.
Kui ei saa aga kasutada hulka kalleid sensoreid ega kulutada aastaid vajalike algoritmide täiustamisele, mida siis peale hakata? Vahel polegi tarvis ülikeerukaid lahendusi, vaid saab kavalalt ära kasutada olemasolevat tehnoloogiat.
Just nii töötasidki varajaste mängukonsoolide ajast tuntud valgus-välisseadmed, millest tuntuim on ehk NES Zapper.

NES Zapper'i-laadsed valguspüssid kasutasid ära tol ajal levinud katoodkiiretoru (CRT) kuvaritele/teleritele omast üliväikest viivet ja primitiivset valgussensorit, et tuvastada, kuhu ekraani peal kasutaja püssiga sihib - pole tarvis ei IMUsid, kaameraid ega ka komplitseeritud algoritme.
Ka vähemtuntud valguspliiatsid kasutasid ära üht CRT'de omapära - nimelt kuvatakse pikslid ekraanile ükshaaval, mis võimaldab arvuti saadetud graafikasignaali ja valguspliiatsi tuvastatud valguse ajastuse põhjal arvutada pliiatsitipu asukoha ekraanil.

Allikas

1990ndad: Kiire pöördarv ruutjuurest

Valgusseadmete näide oli kaval, kuid üsna lihtsasti mõistetav. Käesolev IT-lahendus võib aga olla lühike, kuid kindlasti mitte lihtne. Tollaste arvutite piiratud töötlemisvõimsus sundis mineviku mänguarendajaid leiutama geniaalseid programmeerimistrikke, et ükski protsessoritsükkel raisku ei läheks (veidi liialdan, aga vist mitte isegi väga palju).

Üks selline optimeerimisalgoritm pärineb 1999. a mängust Quake III Arena. (Juhuks, kui keegi küsib: ei, ma ise pole seda mänginud.) 2005. a avalikustati selles kasutatud mängumootori lähtekood, millest peagi avastati üks imeliselt geniaalne algoritm. Tolle algoritmi eesmärk on optimeerida mingi arvu ruutjuure pöördarvu leidmist, kuna selle otsene leidmine oleks olnud liiga jõudlusnõudlik.
Algoritm ignoreerib kasutatava programmeerimiskeele piiranguid ning leiab mõne geniaalse nipiga tulemuse, mis on muljetavaldavalt lähedal õigele vastusele, samas tehes seda palju kiiremini kui tulemuse täpne arvutamine.
A screenshot of the fast inverse square root algorithm, written in C

Allikad

Veel mõned huvitavad videod optimeerimistrikkide kohta

Kommentaarid

Populaarsed postitused