HMD - Helmet Mounted Display


#1

Sveiki!

Aptikau šį forumą ir pamaniau bus visai įdomu pasidalinti savo projekto eiga su bendraminčiais. Gal ir jūs ką nors naudingo rasite, o ir man gal kokį vieną kitą patarimą duosit.

Taigi kaip matote iš temos pavadinimo planuoju sukurti kažką panašaus į prie šalmo (akinių) tvirtinamą ekraną. Panašių projektų internete tikrai nemažai. Labiausiai įkvėpimo pasisėmiau iš https://blog.hackster.io/diy-google-glass-for-under-10-1abea579ccf5

ir

http://www.instructables.com/id/Arduino-Data-Glasses-for-My-Multimeter/ . Labai būčiau patenkintas jeigu man to užtektų. Dėja man taip pat reikia, kad ekranas reaguotų į aplinką, o jeigu konkrečiau, rodytų vaizdus priklausomai nuo to kurioje erdvės vietoje ir pozicijoje yra.

<…>


#2

Kad būtų aiškiau štai kokio galutinio rezultato daugmaž noriu:

Jau kaip ir gaunasi panašu į “augmented reality”. Modernūs naikintuvai naudoja tokius atvaizdavimo būdus:

Tačiau pasirodo yra ir ne toks elegantiškas būdas, kurį naudoja profesionalai:
HMDheli

Pamatęs šia foto supratau kad man yra viltis.

Taigi siekiu padaryti ekraną, kurio funkcionalumas būtų daugmaž toks:

  1. Suvedamos taško koordinatės (telefone/plančetėje)
  2. GPS pagalba nustatoma dabartinė ekrano vieta
  3. Giroskopų, akselerometrų ir magnetometrų pagalba nustatoma tiksli ekrano padėtis
  4. Apskaičiuojama kryptis į numatytą tašką
  5. Atsižvelgus į tai, kur nukreiptas ekranas jame piešiama rodyklė link taško, arba pažymimas taškas, jeigu jis yra matymo lauke
  6. Viskas projektuojama į ant priešais akį esančio permatomo paviršiaus į begalybę.

Kaip ir priklauso pradėkime nuo pradžių. Žinoma, kad juokauju! Pradėkime nuo 6. punkto.
Pradžioje reikėjo išsiaiškinti ar toks atvaisdavimas bus patogus ir apskritai įmanomas. Parsisiunčiaus i telefoną paprasta automobiliui skirtą appsą, kurį įsijungi telefone, telefoną numeti ant prietaisų skydelio ir stebuklas: matai hologramą sklandančia virš variklio gaubto. Principas identiškas: projektuojamas vaizdas ant prieš akį esančio skaidraus paviršiaus. Šiuo atveju viskas veikia puikiai, bet jeigu mes paimsime mašinos stiklą, priartinsime jį ~5cm prie akies, o nuo to stiklo ~5cm atstumu padėsime ekraną, tai norėdami sufokusuoti žvilgsnį tai, ką rodo ekranas, turime žiūrėti į (5+5=) 10cm atstumą. Pamėginkite pridėti telefoną ~10cm nuo akies ir sufokusuokite žvilgsnį į telefoną. Fone objektai išsilieja. O dabar sufokusuokite žvilgsnį į tolį. Ekrane esanti informacija tapo sunkiai įskaitoma. Šioje vietoje į pagalbą ateina mūsų visu gera draugė - optika. Žinojau, kad įmanoma sufokusuoti rodomą vaizdą į begalybę, tik nežinojau kokiomis pastangomis ir kokiomis priemonėmis. Nesinorėjo turėti prie galvos kabančio teleskopo. Pradėjau domėtis kaip tiksliai veikia žiūronai, kodėl teleskopai apverčia vaizdą, o žiūronai ne. Po savaitės eksperimentavimo paaiškėjo, kad užtenka vieno lęšio, kuris atitrauktas nuo ekrano per židinio nuotolį. Genialu tai, kas paprasta.

Šioje vietoje teko padaryti pauzę, nes neturėjau nei vieno reikalingo komponento. Apie Arduino buvau girdėjęs tik legendose, ką čia jau kalbėti apie jutiklius, sensorius ir ekranėlius. Visa laimė, kad draugai kinai šioje situacijoje gelbėja, todėl užsisakiau Arduino ir sensorius (kurių aišku iš pirmo karto negavau). Bet laukti mėnesį ir nieko neveikti aš negalėjau. Išsiklausinėjęs visų pažįstamų gavau Ardupilot. Geriau ir būti negali: tai Arduino su jau integruotais sensoriais. Žinoma nemažai laiko užtrukau kol išsiaiškinau kaip padaryti ir pačia paprasčiausią programą su mirksinčiu LED, nes PIN numeracija visiškai nesutapo. Na bet buvo puiki proga giliau išanalizuoti kaip reikia skaityti “datasheet’us” ir netgi sugebėjau vieną laidą prijungti tiesiai prie mikroprocesoriaus kojelės. Pasižaidęs su LED’ais ir padaręs mini ping-pong žaidimą sužinojau kad arduino neįtikėtinai lengvai galima pajungti prie paprasčiausio televizoriaus kelių laidų pagalba. Labai apsidžiaugiau, nes ekranas vis dar blaškėsi paštininkų rankose. Po kelių dienų turėjau rezultatą:
https://drive.google.com/open?id=15jY-ccS4O1jqZYTErFqU81C4UhXUkSh3

<…>


#3

Geometrinių figūrų paišymas pasirodė įdomus, bet sunkus iššūkis. Pagaliau sužinojau kur reikia panaudoti funkcijas, kurių mokiausi mokykloje.
Ne už ilgo atkeliavo ekranas, todėl viską perkėliau į kompaktiškesnį variantą ir nebetrukdžiau namiškiams žiūrėti televizoriaus:

Toliau išbandžiau optiką ir kaip tai veikia praktikoje:

Toks “frankenšteinas” prie galvos neprisitvirtins, todėl perėjau prie daug logiškesnio prototipo: padaryti iš tualetinio popieriaus rulonėlio!

Ant permatomo paviršiaus užklijavau filtrą, kad būtų ryškesnis vaizdas iš ekrano.

Ir štai, kaip atrodo fokusavimas į begalybę:
https://drive.google.com/open?id=1asEMOc6ypaJfJjV7Ce4g15uLqdSOEMp1

Toliau dirbau su atvaizdavimu ekrane. Pasirodė tai sunkiau nei maniau iš pradžių. Teko kelis kartus perrašinėti funkcijas, bet galiausiai grafinė dalis pagrinde baigta:
https://drive.google.com/open?id=1l4_AeQjdkYcFeIQ0_bg29PycL-g4Qcso

Tikriausiai pastebėjote, kad judesiai gan nestabilūs ir šokinėjantys. Tai dėl to, kad vis dar nenaudoju filtrų, kuriuos vėliau bus būtina uždėti, kad naudotojas neišprotėtų. Taip pat kolkas padėtį erdvėje nustatydavau su kelių potenciometrų pagalba. Jau sugebėjau ištraukti jutiklių duomenis, taigi sekantys žingsniai būtų tokie:

  1. Pakeisti potenciometrus į akselerometrus/giroskopus/magnetometrus (pasirodo ne taip paprasta)
  2. Uždėti filtrus
  3. Prijungti GPS imtuvą.
  4. Sukurti apps’a kuris nusiųstų taško koordinates į arduino.

Iš to iškylančios kliūtys:

  1. Pasirodo giroskopas yra niekam tikęs. Akselerometras yra niekam tikęs. Bet giroskopas+akselerometras yra super junginys.
  2. Filtrų yra daugybė, todėl nenoriu išradinėti dviračio ir stengsiuosi įdėti jau pagamintą filtrą.
  3. Neaišku ar GPS imtuvas bus pakankamai spartus nustatyti vietą tiksliai.
  4. Jau pradėjau ties tuo darbuotis ir labai tikiuosi kad bus lengviau negu visa kita.

Ties šiuo projektu užtrukau jau nemažai, todėl norisi pabaigti kuo greičiau. Bandysiu ieškoti sensorių bibliotekos, kuri jau duoda patikimus duomenis, o ne tik “raw data”. Jeigu žinote tokių bibliotekų - pasidalinkit (sensorius - GY-91/ MPU 9250).

Kolkas tiek. Jeigu bus įdomu, galėsiu papildyti, kai atrasiu/surasiu/sukursiu kažką naujo.

Tiesa, čia arduino kodas, jei kam įdomu: https://github.com/gedas-k/arduino-hud

Gedas


#4

Projektui - sentimentai!

Vaikystėje dar juostiniu video magnetofonu mačiau filmą Timerider (1982), kur motociklininkas to nesuprasdamas atsiduria praeityje ir ten naudojasi savo gadget’ais. Vienas man labiausiai įstrigusių - atstumą matuojantis šalmas:

Dabar kai matau VR akinius ar Google glass like projektus, prisimenu tą seną filmą ir stebuklingą šalmą :sunglasses:. Dar apie tą šalmą nuolat galvodavau studijuodamsa KTU prieš ir per egzaminus :smiley: - kaip būtų kietai, kad atsakymų variantai plauktų akiniuose ir kad tik aš juos matyčiau…

Filmo anonsas: Timerider - 1982 Trailer

Aišku prieš 30 metų jis buvo tikresnis Anonsas… bet vis tiek vis dar Anonsas :smiley:

P.S.

KTU egzaminams įrangos daug visokios buvau prikonstravęs… Aišku draugams, ne sau ;D kada nors reikės parašyti api tai :smiley: