Kretnje namesto miške in tipkovnice
Novi, trirazsežni komunikacijski vmesniki počasi nadomeščajo miške, igralne palice, zaslone na dotik, pa tudi tipkovnice. Kako razvijamo lastne aplikacije za Microsoftov Kinect? Lahko tablico za prepoznavanje kretenj ob pomoči Microchipovega GestIC izdelamo tudi sami?
Prepoznavanje kretenj s Kinectom kot pripomoček za navidezno pomerjanje oblačil.
Računalnik lahko prek miške, kamere ali sprememb magnetnega polja zazna različne kretnje. Kretnje lahko s klasičnimi vmesniki za interakcijo človeka z računalnikom, kot so miška, sledna tablica ali zaslon na dotik, zazna le na ploskvi oziroma v dveh razsežnostih. Novejši vmesniki omogočajo prepoznavanje kretenj tudi v trirazsežnem prostoru. Najbolj znana taka naprava je gotovo Microsoftov Kinect. A malokdo ve, da je zanj na voljo tudi brezplačen programski razvojni paket (SDK, angl. software development kit), Kinect SDK.
Po drugi strani daje Microchipova tehnologija GestIC alternativno možnost sorazmerno enostavne implementacije prepoznave kretenj na podlagi zaznavanja sprememb v umetno ustvarjenjem električnem polju. Čeprav tablica za prepoznavanje kretenj spominja na klasično dvorazsežno sledno tablico in izdelava ni skoraj nič dražja, omogoča prostorsko zaznavo. To pa ni ovira, da je ne bi mogli izdelati in uporabiti na domačem PC ali celo na preprostem Raspberry PI.
Kamere, laserji in mikrofoni
Digitalna video kamera (oziroma t. i. spletna kamera) je danes vgrajena že v skoraj vsak notes. A najtrši oreh za prepoznavanje kretenj telesa, rok in prstov so svetlobne razmere. Prepoznavanje je najenostavnejše na podlagi izstopajočih barv oblačil na različnih delih telesa, pa tudi ob pomoči enobarvnega ozadja. Zanesljivo in učinkovito prepoznavanje kretenj v naravnem okolju samo ob pomoči kamere si danes kljub temu še težko predstavljamo.
Microsoftov Kinect poleg kamere združuje še infrardeči laser in programsko opremo za osnovno obdelavo zaporedja slik v realnem času. Zato se sorazmerno dobro prilagaja različnim svetlobnim razmeram. Čeprav so prvi Kinect razvili le za igralno konzolo Microsoft Xbox, smo leta 2012 dobili tudi različico za Windows. A so jo v začetku lanskega leta (2015) nehali izdelovati, saj se ni dosti razlikovala od Kinecta za Xbox. Namesto tega je Microsoft računalniškim navdušencem ponudili Kinect v2, ki ga lahko s PC povežemo prek ustreznega vmesnika, če ima računalnik na voljo prost priključek USB 3.0 in z Direct X11 združljivo grafično kartico. Priporočljiva sta tudi vsaj dvojedrni 64-bitni procesor s taktom okoli 3 GHz in 4 GB glavnega pomnilnika.
Prilagojeno okolje za prepoznavanje kretenj
Kinect SDK
Za razvoj lastnih aplikacij imamo od leta 2011 na voljo brezplačen programski razvojni paket za Windows, Kinect SDK. Toda potrebujemo še ustrezno različico Microsoft Visual Studia. Za Windows 7 potrebujemo Kinect SDK 1.8, na Windows 8 in novejše operacijske sistema pa lahko namestimo tudi zadnjo različico, 2.0. Za razvoj aplikacij za Kinect v2 potrebujemo vsaj brezplačni Visual Studio 2012 Express Edition. Kinect SDK obsega tudi funkcije za prepoznavanje govora in določanje kraja govorca ob pomoči več mikrofonov, ki lahko pomembno prispevajo k učinkoviti interakciji človeka z računalnikom.
Cena Microsoft Kinecta je pri nas okoli 170 evrov, za vmesnik za povezavo s PC pa bomo v ameriških spletnih trgovinah odšteli okoli 60 dolarjev. V svetu igralnih konzol je danes veliko podobnih izdelkov, kot so: Wii Remote Plus za Wii in Wii U, PlayStation Move/PlayStation Eye za PlayStation 3 in PlayStation Camera za PlayStation 4.
Samogradnja vmesnika PC za Kinect
Navodila za samogradnjo vmesnika za priklop Kinecta za Xbox na PC najdemo na spletni strani www.instructables.com/id/Wiring-an-Xbox-Kinect-for-USB/?ALLSTEPS. Vmesnik tehnično ni zahteven, saj je treba dodati le 12 V napajanje prek vtičnice USB 3.0, kot ga ima Xbox. Zato potrebujemo dodatni (zunanji) vir napajanja, ki prenese do 2 A toka in vmesnik, s katerim dodatno napajanje povežemo na enega od priključkov vtičnice. 12 V napajanje lahko zagotovimo tudi iz glavnega napajalnika namiznega PC, če ima glede na zgradbo računalnika še dovolj prostih zmogljivosti. A taka rešitev ni enostavno prenosljiva, še posebej ne na notese.
Razvojna trirazsežna sledna tablica za GestIC
Trirazsežna sledna tablica GestIC
Čeprav je prepoznavanje kretenj v prostoru ob pomoči kamere in laserske tehnologije zmogljivejše in omogoča spremljanje gibanja celotnega človeškega telesa, je Microchipova tehnologija GestIC neprimerno cenejša in osredotočena na rešitve, ki zahtevajo mobilnost, nizko porabo energije in popolno neodvisnost od svetlobnih razmer.
Temelji na poceni predprogramiranem namenskem 3,3 V mikrokrmilniku MGC3130, ki ustvarja šibko električno polje prek oddajne elektrode in do petih sprejemnih elektrod. Ob pomoči meritev napetosti na sprejemnih elektrodah mikrokrmilnik izračuna položaj človeške roke v trirazsežnem prostoru z ločljivostjo od 150 do 200 pik na colo (oziroma med 59 in 79 pik na cm). MGC3130 zna varčevati z energijo, saj lahko preide v spanje takoj, ko roke ali prsta ne zaznava več.
Največja višina prepoznavanja je odvisna od velikosti elektrod, v grobem pa je proporcionalna dolžini krajših elektrod. Zaradi omejene tokovne zmogljivosti izhodov MGC3130 elektrode ne smejo biti daljše od 14 cm. MGC3130 lahko z vgrajeno programsko opremo prepozna nekaj osnovnih kretenj, ki temeljijo na zaporedju točk v prostoru (vsako točko poda s koordinatami: x,y,z), ki jih opiše težišče človeške roke med gibanjem. Za prepoznavanje kretenj uporablja markovske modele. Čip zazna tudi neposreden dotik katere od elektrod. To omogoča uporabo elektrod tudi kot funkcijskih tipk. Ob pomoči manjše ploščice z elektrodami, velike do 5 cm, lahko prepoznavamo kretnje prsta. Zanimiva je tudi rešitev, ko s štirimi sprejemnimi elektrodami obdamo prikazovalnik LCD, zadaj pa namestimo oddajno elektrodo. Tako postane prikazovalnik občutljiv ne le na dotik, temveč tudi na bližino človeške roke.
Gotovo sledno tablico 3DTouchPad s tehnologijo GestIC lahko za 92 evrov kupimo na spletni strani www.microchipdirect.com/ProductSearch.aspx?Keywords=DM160225. Na voljo je tudi razvojni programski paket 3DTouchPad SDK za Windows. Lahko se odločimo tudi za nekoliko dražje (stanejo okoli 160 evrov) razvojne komplete z več različnimi slednimi tablicami Woodstar ali Hillstar. Razvojni komplet Hillstar vsebuje več prototipnih tiskanih vezij z elektrodami, tiskano vezje z MGC3130 in vmesniško tiskano vezje za povezavo z osebnim računalnikom prek USB. MGC3130 namreč omogoča le zunanjo povezavo prek zaporednega vodila I2C.
Opozorilo samograditeljem
Odgovornost za morebitno poškodovanje katerekoli elektronske naprave iz kateregakoli razloga prevzamete sami. Bralcem brez osnovnih elektrotehniških izkušenj svetujemo, naj prosijo za pomoč znanca ali prijatelja z znanjem elektrotehnike.
Samogradnja tipala s tehnologijo GestIC
Osrednji element tipala je MGC3130 s pasivnimi elektronskimi komponentami in ploščico z elektrodami, ki jo lahko po fotopostopku izdelamo iz dveh plošč za izdelavo tiskanih vezij. Za MGC3130 bomo na spletni strani www.microchipdirect.com/ProductDetails.aspx?Category=MGC3130 odšteli približno 4 evre, kupiti pa moramo tudi preostale elemente, a ne bodo dražji od 10 evrov.
Še največ dela bomo imeli z izdelavo tiskanega vezja za podporo delovanju MGC3130. Izdelamo ga lahko kar na tiskanini s sprejemnimi elektrodami, a se morda kljub temu bolj splača ločena tiskanina, ki omogoča eksperimentiranje z različnimi vrstami elektrod. Škoda le, da gotovega vezja ni mogoče kupiti ločeno od razvojnih kompletov, saj bi s tem prišli na svoj račun tudi manj vešči spajkanja. Je pa res, da brezplačne dokumentacije nekaterih razvojnih kompletov z Microchipove spletne strani vsebujejo tudi ustrezne fotomaske. Povezava MGC3130 in elektrod je enostavna, saj so dovolj neposredne žične povezave.
MPLAB X
Povezava s PC ali mikroračunalnikom
Zdaj moramo trirazsežno sledno tablico povezati še s PC. Komunikacija med osebnim računalnikom in MGC3130 je sporočilna in poteka prek vodila I2C z dodatnima krmilnima signaloma za TS (sporočila so pripravljena za branje) in MCLR (nov zagon MGC3130), ki je pogost v svetu mikrokrmilnikov, osebni računalniki pa ga v glavnem nimajo. Zato je razvojnemu kompletu Hillstar priložen še enostaven most med vodiloma I2C in USB, ki temelji na poceni mikrokrmilniku PIC18. Kot most lahko uporabimo tudi katerikoli drug mikrokrmilnik, ki podpira vodili I2C in USB; lahko pa tudi kak Arduino ali priljubljeni Raspberry PI. Pomembno je predvsem zagotoviti skladnost z Microchipovimi razvojnimi knjižnicami oziroma aplikacijskim programskim vmesnikom GestIC API, ki vsebuje visokonivojsko podporo sporočilni komunikaciji in je priporočljiv pri uporabi MGC3130 z osebnim računalnikom. V nasprotnem bomo imeli s programiranjem sporočilne komunikacije precej več dela. Za manj zahtevne je poleg I2C na voljo tudi nabor izhodnih priključkov, Gestic Port, katerih kombinacije lahko sprogramiramo prek PC (oziroma I2C in USB) tako, se sprožijo ob zaznavi vnaprej določenih kretenj. Tu posebnih programskih knjižnic ne potrebujemo.
GestIC SDK je v programskem jeziku C. Imamo pa še abstrakcijski nivo za sporočila. Na voljo so tudi vzorčni projekti za Microsoftov Visual Studio in Microchipovo razvojno okolje MPLAB X …
Spletne povezave
• Razvojni programski paket za Kinect for Windows: dev.windows.com/en-us/kinect/develop
• Navodilo za samogradnjo vmesnika za priklop Kinect na PC: www.instructables.com/id/Wiring-an-Xbox-Kinect-for-USB/?ALLSTEPS
• Video predstavitev GestIC: www.youtube.com/watch?v=5DizKmjhwOw
• Razvojni paket Hillstar in dokumentacija MGC3130: www.microchip.com/DevelopmentTools/ProductDetails.aspx?PartNO=dm160218