V preteklih dveh številkah smo spoznali različne možnosti gibanja po zaslonu. Namesto z običajno računalniško miško smo se po zaslonu premikali z gibi telesa oziroma s predmeti – za zaznavanje sta skrbela USB-kamera in programska oprema. V vlogi vhodne enote smo lahko uporabili tudi mobilni telefon ali dlančnik z zaslonom, občutljivim na dotik (touch screen), ki smo ga z osebnim računalnikom povezali prek kabelske (USB) ali brezžične povezave (bluetooth, wi-fi). Spoznali smo tudi, kako lahko izdelamo preprosto napravo na več dotikov (multitouch), ter ugotovili, kako lahko povežemo krmilnik igralne konzole Wii (WiiRemote oziroma WiiMote) z osebnim računalnikom. WiiRemote smo uporabili tudi v vlogi prostorske miške. V pretekli številki smo napovedali, da bomo tokrat več pozornosti namenili naprednejšim možnostim, ki jih omogoča WiiMote.

KORAK NAPREJ

Pri vseh opisanih primerih je šlo za uporabo podobnih mehanizmov. Prek prostorskega gibanja opazovanega objekta (npr. mobilni telefon, Wii Remote), v katerem je bil nameščen senzor ali pa je bila določena naprava uporabljena za zaznavanje (npr. USB-kamera) gibanja pasivnega objekta, smo zaznavali relativno gibanje objekta. Z umerjanjem (določitvijo skrajnih oglišč – levo zgoraj, desno zgoraj, levo spodaj, desno spodaj) delovne površine oziroma uporabo vidnega polja »detektorja«, smo to gibanje s programsko opremo spremenili v absolutno smer gibanja po namizju. Pri istočasnem opazovanju več točk na zaslonu smo pri površini na več dotikov na podlagi spremembe razdalje in smeri točk lahko pridobili dodatno informacije (npr. da gre za rotacijo). To smo ugotovili z ustreznim algoritmom (matematična obdelava), do enake informacije pa bi lahko prišli z namenskim senzorjem – kot na primer pri krmilniku WiiRemote. Velja pa preprosto pravilo: več dela, ko opravi sam objekt, manj ga mora programska oprema. Še opomba iz »drobnega tiska«. Dobro je, če je informacija o gibanju čim natančnejša na izvoru, saj bo zato napak bistveno manj. To govori v prid uporabe objekta z vdelanimi senzorji, kot je recimo WiiRemote. Takšen pristop ima tudi določene slabosti. Zaradi njegove »inteligence« je cena same naprave višja, treba je zagotoviti napajanje (baterije so največkrat prazne), večja sta tudi mehanska občutljivost in z njo povezana možnost okvare.

(levo) WiiMote Mouse omogoča različne načine delovanja, tudi uporabo posebnih rokavic. (desno) WiiMote Multipoing Grid

Če ste se po prebiranju članka v pretekli številki poigrali s programom Wii Remote Mouse (http://home.exetel.com.au/amurgshere/wiimouse.phtml), ki smo ga v našem primeru uporabili v vlogi miške WiiMote, ste med nastavitvami zelo verjetno naleteli na možnost nastavitve načina delovanja (dvoklik ikone – polje Mode). V našem primeru je bil to način Mouse Pointer. Z drugačnimi nastavitvami lahko dosežemo možnost uporabe LED-diode, omenjena pa je tudi možnost izdelave preprostih rokavic, pri katerih na konice prstov namestimo svetleče diode. Gre predvsem za mehansko rešitev, kako dobro označiti konice prstov z IR-svetlobe. V tem primeru imamo preprosto vezje, ki ga sestavljajo stikalo, baterija in na konice prstov rokavice nameščene IR-diode. Kako je videti takšna rokavica med delovanjem, si lahko ogledate na spletni strani www.youtube.com/watch?v=MwnD4R-SikQ. V primeru lastnega eksperimentiranja pazite, da v bližini ne bo prižgana svetilka z žarnico. Zdaj že vemo, da žarnica oddaja del svetlobe tudi na IR- področju, kar lahko povzroča neprijetnosti.

Interaktivna tabla (1 – IR pero, 2 – WiiRemote, 3 – osebni računalnik, 4 – projektor, 5 – projekcijska površina)

MOJSTER LEE
Programerja z imenom Johnny Lee smo v preteklem prispevku že omenili. Gospod Lee je brez dvoma guru s področja uporabe WiiRemota v povezavi z osebnim računalnikom. Na njegovi spletni strani (http://johnnylee.net/projects/wii/) si lahko ogledamo videoposnetke s primeri uporabe Wii Remota pri sledenju prstom, izdelavi nizkocenovne interaktivne table (whiteboard) ter »sledenju glave« pri zaslonu, na katerem imamo namizje za navidezno resničnost (VR display).

Oglejmo si najprej krmiljenje s sledenjem prstom. Primer spominja na možnost Wii Remote Mouse, le da tokrat ne potrebujemo aktivnih rokavic z IR-diodami. Namesto teh bomo uporabili krmilnik WiiRemote, ki za zaznavanje gibanja prstov uporabi vdelan IR-senzor. WiiRemote lahko sledi hkrati do štirim točkam. Za ustrezno zaznavanje točk, ki jim sledimo, potrebujemo ustrezno (IR) osvetlitev teh. Wii Remote zazna odboj IR-svetlobe od teh točk podobno kot naše oko odbito svetlobo od posameznih predmetov. Za test je primeren vir svetlobe lahko že sveča ali običajna reflektorska svetilka (žarnica!), vse skupaj pa bomo oživili s programom Wiimote Multipoint Grid (http://johnnylee.net/projects/wii/WiiMultipointGrid.zip). Če vam prevajanje programske kode v skladu z navodili na spletni strani ni po godu, lahko zaženete eno od izvršljivih datotek, ki jo najdete v imeniku WiiMultipointGrid\bin\. Če obsijemo roko z svetlobo žarnice ali še bolje virom IR-svetlobe in jo postavimo v bližino WiiRemota, se nam na zaslonu pokažejo točke, ki jim bo Wii sledil. Hitro pa lahko ugotovimo, da je motenj razmeroma veliko. Dodatna slabost je dejstvo, da je »delovna/uporabna« razdalja do WiiMota razmeroma majhna. Razdaljo lahko povečamo s pravim virom IR-svetlobe, ki ga izdelamo sami (npr. polje IR-diod) ali pa uporabimo obstoječega (npr. panel za konzolo Wii ali recimo polje IR-diod, ki se uporablja v nočnih varnostnih kamerah …). Dodaten pozitivni učinek imajo lahko odbojni IR-materiali, ki jih je mogoče najti prek spleta. Celotna zadeva močno spominja na početje Toma Cruisa v Spielbergovem filmu Posebno poročilo (www.youtube.com/watch?v=NwVBzx0LMNQ).

(levo) Z WiiRemotom lahko naredimo poceni interaktivno tablo. Pomembno vlogo ima umerjanje. (desno) Javanski WiiMoteWhiteboard podpira tudi uporabo slovenščine.

INTERAKTIVNA TABLA

Druga zanimiva možnost, ki jo najdemo na Leejevi spletni strani, je možnost izdelave preproste interaktivne table. Ideja je zelo podobna kot v prejšnjem primeru. Za potrebe tovrstne interaktivne table potrebujemo ustrezen LCD-projektor (lahko tudi doma izdelan – www.mojmikro.si/v_praksi/mojster/ples_tekocih_kristalov), s katerim bomo na površino (steno ali namensko platno) projicirali sliko. Če LCD-projektorja nimamo, lahko za delovno površino interaktivne table uporabimo tudi LCD-zaslon osebnega računalnika ali LCD TV-sprejemnik z ustreznim vhodom. Tokrat bomo namesto osvetljevanja objekta z IR-svetlobo in zaznavanja odbite svetlobe, uporabili mehanizem zaznavanja svetlobe samega objekta. To pomeni, da bo WiiRemote sledil peresu, ki ga bomo premikali po delovni površini. Delovno površino table projicira LCD-projektor oziroma zaslon.

V vlogi flomastra za interaktivno tablo bomo uporabili doma izdelano pero. To pero pa ni nič drugega kot v običajni flomaster vdelana baterija, ki prek miniaturnega stikala zagotavlja delovanje IR-diode v konici. Pri izboru ohišja moramo paziti, da bo primerne velikosti. Če bo namreč premajhno, bomo imeli težave pri vstavitvi komponent, če bo preveliko, pa bo pero neprimerno za uporabo. WiiRemote lahko sledi hkrati do štirim objektom, zato je to tudi največje število peres, ki jih lahko uporabljamo. Lahko pa izdelamo tudi pero brez ohišja, ki je uporabniku manj prijazno. Primer izdelave takšnega peresa najdemo na spletni strani http://picasaweb.google.com/uschmidt83/IRPen#.

Doma izdelano svetlobno pero

Tudi pri interaktivni tabli ima glavno vlogo programska oprema. Prvotna različica je bila na voljo za okolje Windows, na voljo pa je tudi različica za Linux/Mac (Java – www.uweschmidt.org/wiimote-whiteboard). Glede na original prinaša javanska različica določene prednosti. Podprta sta hkratna uporaba do dveh krmilnikov WiiRemote in naprednejša uporaba miške (npr. podpora desnemu kliku, način sledilne tablice). Podpira tudi funkcionalnosti TUIO/OSC (www.tuio.org/), ki smo ju spoznali v pretekli številki, ko smo več pozornosti namenili aplikacijam na več dotikov. Zanimivo je, da v razmeroma ozkem naboru podprtih jezikov najdemo tudi slovenščino.

Pred zagonom WiimoteWhiteboarda vzpostavimo povezavo med krmilnikom WiiRemote in osebnim računalnikom prek vmesnika bluetooth. Programski datoteki je priložena datoteka »read me first«, ki jo je dobro prebrati, saj vsebuje precej koristnih napotkov (npr. kako postaviti WiiRemote, da ne bo prihajalo do neljubih motenj). V omenjeni datoteki, najdemo tudi opis vloge posameznih tipk (tipka A na primer aktivira kalibracijsko okno) ter namige za odpravo morebitnih težav. Pred uporabo naše interaktiven table moramo izvesti kalibracijo (določiti skrajna oglišča). Zavedati pa se moramo določenih omejitev, ki lahko vplivajo na delovanje.

Za zaznavanje gibanja in smeri zadošča že minimalen premik.

Vidno polje WiiRemota je omejeno na 45 stopinj. Pri postavitvi moramo biti pozorni na to dejstvo, hkrati pa upoštevati, da s svojim telesom ne bomo ovira med WiiRemotom (detektor IR) in peresom (virom IR-svetlobe). Na težave lahko naletimo tudi zaradi šibkosti vira. Razlog za to je lahko prenizka napajalna napetost (baterija) ali prevelika vrednost upora (omejuje tok in s tem osvetlitev IR-diode) oziroma sama IR-dioda, ki ob predpisanih pogojih ne »sveti« dovolj močno. Rezultate lahko optimiramo z upoštevanjem preprostih pravil »vidnosti«. Bližji in neposrednejši ko je »vidni stik« med WiiRemotom in peresom, boljši bodo rezultati – podobno, kot je to veljalo pri sledenju objektom z USB-kamero, kar smo opisali v preteklih številkah.

Gotovo se marsikomu porajajo tudi različne ideje. Recimo, uporaba več krmilnikov WiiRemote, ki lahko pokrijejo večjo površino ali morda večje število vmesnikov, ki bi omogočili veliko ločljivost ali pa primer več vmesnikov WiiRemote, ki bi nadzorovali ista peresa in zagotavljali z medsebojnim delovanjem boljše rezultate. Takšne rešitve so nedvomno možne, a ne z obstoječo programsko opremo ...

(zgoraj) WiiMote g-man omogoča shranjevanje merjenih podatkov. (spodaj) WiiMote Physics ponuja veliko različnih načinov meritev.

SENZORJI

Odziv senzorjev, vgrajenih v WiiRemote, lahko preverimo tudi s programom WiiRemote, ki ga najdemo na spletni strani http://onakasuita.org/wii/index-e.html. Ugotovimo lahko, da senzorji zaznajo že najmanjši premik WiiMota. V tem primeru lahko uporabljamo za zaznavanje gibanja IR-senzor (potrebujemo vir IR-svetlobe) oziroma senzorje za gibanje po koordinatnih oseh (x, y, z). Med želenima načinoma lahko preklapljamo (Options > Preferences > Motion oziroma IR- senzor). S pritiskom posamezne tipke lahko zaženemo tudi poljuben program ali pa WiiRemote uporabimo kot daljinski upravljalnik z nastavljenimi smernimi tipkami.

Delovanje senzorjev WiiRemota lahko preverimo tudi s programom WiiMote Physics (www.soft82.com/get/download/windows/wiimote-physics/). Ta program nam omogoča beleženje različnih dogodkov. Način zbiranja podatkov izbiramo iz menija Tools > Collection mode, v katerem lahko izbiramo način delovanja (Scan Mode). Določimo lahko tudi merilo grafa ter način zbiranja podatkov (npr. pospešek po posameznih oseh x, y, z oziroma skupni pospešek). Zajem podatkov aktiviramo z možnostjo Logging > Start, ustavimo pa ga z Logging > Stop. Meritve oziroma pridobljene podatke lahko izvozimo v besedilno datoteko *.csv (File > Save). Podobno deluje tudi g-man (www.stylish-software.de/g-man.htm). Namenjen je predvsem za meritve pospeška. Časovno okno meritve oziroma privzet interval 200 ms je mogoče po potrebi spremeniti. Enota 1g pomeni 9,8 m/s ², podatki pa so prikazani na zaslonu v obliki grafikona oziroma koncentričnih krogov. Pred meritvijo pospeška je dobro izvesti umerjanje oziroma kalibracijo. Pri tem mora Wii Remote mirovati – najlažje je, da ga postavimo na ravno ploskev. Postopek umerjanja (traja nekaj sekund) zaženemo s klikom v programu ali s pritiskom tipke Home. Po tem postopku lahko začnemo meritve. Začnemo in končamo jo s klikom oziroma s pritiskom tipke A v WiiRemotu. Ko je zajem aktiven, se do leve proti desni giblje osvetlitev svetlečih LED-diod na krmilniku WiiRemote. Merjene vrednosti se samodejno shranjujejo v imeniku \Documents and Settings\uporabnisko_ime\Application Data\stylish software\Wiimote g-man\1.0.0.0. Datoteke so zapišejo v obliki gman_datum-čas.log. V našem primeru je bila to datoteka gman_08112010-185738.log, ki smo jo ustvarili 8. 11. 2010 bo 18:57. Ker je tudi v tem primeru zapis v obliki csv, lahko tudi to datoteko uvozimo v drugo programsko opremo in izvedemo analizo podatkov (npr. v MS Excel, OpenOffice Calc).

Zmogljivejša različica Wiimote Presenter ponuja veliko dodatnih možnosti.

PROJEKT N+1

Pogosto pride zaradi enakih imen do napak pri razumevanju. Wii Presenter ima soimenjaka, ki se od njega razlikuje (opis v okvirju). WiiPresenter (http://sites.google.com/site/jasonlpsmith/wiimotepresenter) glede na soimenjaka omogoča precej fleksibilnosti. Njegova prednost je široka možnost konfiguracije. Definicije delovanja tipk WiiRemota lahko shranimo ali naložimo že določene konfiguracije. Priporočam, da preizkusite že pripravljeno konfiguracijo za Google Earth. WiiRemote je zanimiv tudi zaradi nekaterih dodatnih možnosti. Definiramo lahko različne časovnike (timerje), ki nam odštevajo čas in nas v določenih časovnih intervalih opozarjajo na porabljen čas. Uporabna je tudi možnosti oddaljenega vklapljanja svetlečih LED-diod na krmilniku. Poljubno kombinacijo svetlečih diod aktiviramo s preprostimi kliki vmesnika WiiPresenter. Mogoče je definirati tudi povezavo vklopa posamezne svetleče diode in nastavljenega časovnika (polje T2 na primer kaže aktivnost drugega časovnika – ko se ta izteče, se vklopi druga svetleča dioda z leve strani WiiRemota). Manj zahtevni se lahko odločijo za soimenjaka, ki podpira možnosti, ki jih potrebujemo v predstavitvah. (Wii Presenter - www.indyproject.org/wiikey/index.en.aspx).

Na spletnih straneh najdemo še kopico drugih idej. Omenimo le strani http://hacknmod.com/hack/top-30-wiimote-hacks-of-the-web/ in www.brianpeek.com/blog/pages/net-based-wiimote-applications.aspx. Na obeh najdemo žlahten izbor možnih idej za uporabo WiiRemota v najrazličnejše namene – seveda pa seznam še zdaleč ni popoln. Zelo sta mi všeč projekta, ki imata z do zdaj opisanimi funkcionalnostmi le malo skupnega. Gre za projekta emulacije bobnov. Prvi je Wii Drum High (http://hezhao.net/projects/wii-drum-high/), ki WiiRemote z dodatnim krmilnikom Wii Nunchuk (izbirno, cca 20 evrov) in Wii Balance Board (izbirno, cca 70 evrov) spremeni v pravi komplet bobnov. Z uporabo navedenih komponent in brezplačne programske opreme Wii Drum High lahko zelo uspešno simuliramo udarce na različne tipe tega kompleta. Podobno kot pri pravih bobnih je jakost zvoka odvisna od jakosti udarjanja po »bobnih«. Skupaj lahko uporabljamo hkrati do 4 komplete. Če obeh izbirnih komponent nimate (Nunchuk, Balance Board), lahko v omejenem obsegu Wii Drum High vseeno preizkusite. Več možnosti izbora in definiranja lastnih vzorcev omogoča Wii Play The Drums (http://wiiplaythedrums.codeplex.com/). Rezultati emulacije kompleta bobnov so lahko zelo zanimivi.

(zgoraj) Wii Drum High – preprosta emulacija bobnov (spodaj) Wii Play The Drums

Končajmo z Leejevim projektom za virtualno namizje. Učinek gibanja oziroma navideznega namizje dosežemo s spreminjanjem oz. z gibanjem slike na zaslonu. Prikaz na zaslonu se oblikuje glede na položaj (lego oziroma pogled) uporabnika glede na zaslon. WiiRemote skrbi za zaznavanje, uporabnika pa se »označi« z miniaturnim virom IR-svetlobe (npr. kape s svetlečimi diodami ali z ustreznimi očali). Rešitev zelo spominja na primer z aktivnimi rokavicami (rokavice z IR LED-diodami), le da smo pri rokavicah z WiiRemotom sledili položaju virov IR-svetlobe in na podlagi spremembe teh definirali točke, pri navideznem zaslonu pa se na podlagi opazovalca spreminja zaslonska slika. Potrebno programsko opremo najdemo na naslovu http://johnnylee.net/projects/wii/WiiDesktopVR.zip.

Poslovimo se torej z mislijo, da je futuristični način gibanja po računalniških zaslonih, kot smo jih vajeni iz znanstvenofantastičnih filmov morda bližji, kot si mislimo. Miška še zdaleč ni edina možnost.


Zanimivosti in nasveti
• Vgrajeni senzorji WiiRemota omogočajo različne funkcionalnosti. Najlepšo sliko širokih možnostih izbora dajejo različne »lestvice« najzanimivejših projektov. WiiRemotu lahko določimo različne vloge. Ena najosnovnejših je delovanje WiiRemota v vlogi miške. Zaradi vdelanih senzorjev ga lahko uporabimo tudi za različne meritve. Najzanimivejša je možnost uporabe v aplikacijah, kjer je se z WiiRemotom gibljemo po navideznih okoljih (npr. Google Earth). Ne nazadnje pa je lahko WiiRemote tudi uporaben daljinski upravljalnik.
• WiiRemote je osnovni gradnik veliko nizkocenovnih rešitev za interaktivne table. Veliko programske opreme je na voljo brezplačno. Med komercialnimi različicami je zaradi možnosti, ki jih ponuja, zanimiv paket Smoothboard (www.smoothboard.net/features).
• Če se ukvarjate s predstavitvami, je lahko pravi pripomoček za vas Wii Presenter (www.indyproject.org/wiikey/index.en.aspx). Tipke WiiRemota uporabljamo za prehod med posameznimi »prosojnicami« (tipka A nazaj, tipka B naprej). Podprte so tudi druge najpomembnejše tipke (npr. tipki + in – za zum, Home za začetek ali konec predstavitve …), ki jih uporabljamo v predstavitvah.
• Z WiiRemotom in dodatnimi komponentami lahko razmeroma dobro simuliramo delovanje bobnov. Dobra in poceni možnost, ki ne zahteva veliko prostora.
• Kljub različnim možnostim uporabe WiiRemota sta v uporabi predvsem dva mehanizma. Pri prvem uporabljamo vgrajene senzorje za ugotavljanje smeri gibanja in pospeška. Za ugotovitev absolutne razdalje pa uporabljamo vir(e) IR-svetlobe, katerih gibanje zaznamo z WiiRemotom.

Moj mikro, december 2010 | Marko Koblar