Programiranje

Delo s kompletom za razvijalce Azure Kinect

Microsoft je svoje module kamere Azure Kinect objavil skupaj s HoloLens 2 v začetku leta 2019. Obe napravi uporabljata isti modul kamere z mešano resničnostjo, s senzorjem globine časa letenja za preslikavo predmetov okoli kamere. Toda če je HoloLens nosljiva naprava z mešano resničnostjo, so moduli Azure Kinect namenjeni zagotavljanju aplikacij za strojno učenje, ki jih gosti Azure, s povezanimi senzorji, ki jih je mogoče namestiti kjer koli v delovnem prostoru.

Azure Kinect je neposredni potomec modulov druge generacije Kinect, ki so bili dobavljeni z Xbox One, vendar namesto da bi zagotavljal resnične vložke za igre na srečo, je namenjen podjetjem in aplikacijam. Prvi komplet za razvijalce Azure Kinect, namenjen sodelovanju z Azure's Cognitive Services, se je začel dobavljati konec leta 2019 v ZDA, v začetku leta 2020 pa je dodal še nekaj drugih držav.

Odpiranje škatle

Azure Kinect Developer Kit, vreden 399 USD, je majhna bela enota z dvema lečama kamere, eno za širokokotno RGB kamero in eno za senzor globine Kinect ter vrsto mikrofonov. Ima orientacijski senzor, ki vam omogoča, da s kamero ustvarite zapletene tridimenzionalne slike okolij, pripravljenih za uporabo v mešani resničnosti. Več naprav lahko povežete za hitro 3-D skeniranje ali za zagotovitev pokritosti celotne sobe z uporabo orientacijskega senzorja za lažje razumevanje položaja naprave.

Skupaj z enoto kamere dobite napajalnik, imbus ključ za odstranitev pokrova verižnih vrat in kabel USB za povezavo z razvojnim računalnikom. Priporočam, da si priskrbite namizni stojalo ali drugo vrsto nosilca, saj je priloženo plastično stojalo precej majhno in ne deluje z večino miz ali monitorjev. V škatli ni programske opreme, le povezava do spletne dokumentacije, kamor lahko prenesete SDK naprave.

Preden začnete, posodobite vdelano programsko opremo naprave. Ta je priložen SDK-ju in vključuje orodje za namestitev ukazne vrstice. Ko zaženete program za posodobitev, najprej preveri trenutno stanje vdelane programske opreme, preden namesti vdelano programsko opremo kamere in naprave in nato znova zažene. Ko se kamera znova zažene, z istim orodjem preverite, ali se je posodobitev uspešno namestila. Če imate težave z namestitvijo, lahko s ponastavitvijo strojne opreme fotoaparata (skrito pod nosilcem stativa) obnovite prvotno tovarniško sliko.

Zaznavanje sveta

Z nameščenim SDK dobite dostop do senzorjev naprave iz vaše kode. Obstajajo trije SDK-ji: eden za dostop na nizki ravni do vseh senzorjev kamere, drugi za uporabo znanih funkcij sledenja telesu Kinect in eden za povezovanje mikrofona kamere z govornimi storitvami Azure. Vnaprej izdelana aplikacija Kinect Viewer prikazuje razpoložljive poglede kamere in pretaka podatke s senzorjev naprave. Dostopate do širokokotne kamere RGB, pogleda globinske kamere in slike z infrardeče kamere senzorja globine. SDK-ji so na voljo tako za Windows kot za Linux, natančneje za izdajo Ubuntu 18.04 LTS podjetja Canonical, in jih lahko prenesete neposredno iz Microsofta ali GitHub-a.

Dobro je, da se nekaj časa igrate s programom Kinect Viewer. Omogoča vam, kako delujejo različni načini globinske kamere in vam pomaga izbrati ozko ali široko vidno polje. Podatke lahko vidite s senzorjev položaja, merilnika pospeška in žiroskopa ter iz mikrofonskega polja. Ko je Azure Kinect Developer Kit povezan z razvojnim računalnikom in deluje, lahko začnete zanj pisati kodo. Aplikacijo snemalnika ukazne vrstice lahko uporabite za zajemanje podatkov za predvajanje v pregledovalniku in shranjevanje informacij o globini v datoteko formata MKV (Matroska Video).

Izdelajte svojo prvo aplikacijo za zaznavanje globine

Microsoft ponuja vzorčno kodo za izdelavo enostavne aplikacije C za delo z Azure Kinect Development Kit. Potrebna je samo ena knjižnica, ki vsebuje predmete in metode, potrebne za delo s kamero. Vsaka aplikacija mora najprej preveriti, koliko kamer je povezanih z gostiteljskim računalnikom, preden konfigurirate tokove podatkov v napravi. Naprave se prepoznajo po serijski številki, tako da lahko to uporabite za naslavljanje določene kamere, ko delate z več povezanimi z istim računalnikom ali povezanimi v verigo.

Komplet za razvijalce Azure Kinect zagotavlja samo pretočne podatke, zato morajo aplikacije hitrost prenosa podatkov nastaviti v sličicah na sekundo, skupaj z barvnimi formati in ločljivostmi slik. Ko ustvarite konfiguracijski objekt, lahko s svojim konfiguracijskim objektom odprete povezavo in ste pripravljeni za pretakanje podatkov. Ko končate z branjem podatkovnega toka, ustavite in zaprite napravo.

Slike se zajamejo v objekt zajemanja z globinsko sliko, IR-sliko in barvno sliko za vsako posamezno sliko, posneto iz toka naprave. Ko zajamete, lahko izvlečete posamezne slike, pripravljene za uporabo v vaši aplikaciji. Slikovni predmeti se lahko dostavijo v API-je strojnega vida Azure, pripravljeni na prepoznavanje predmetov ali zaznavanje anomalij. Primer, ki ga je Microsoft uporabil v svojih predstavitvah, je aplikacija, ki s pomočjo zajetih videoposnetkov zazna, kdaj se delavec v tovarniškem nadstropju preveč približa upravljanju s stroji; drugi zazna nekoga, ki kadi v bližini bencinske črpalke.

Podoben postopek vam daje podatke iz senzorjev položaja in gibanja. Ker se podatki o gibanju zajemajo hitreje kot slikovni podatki, morate v svojo kodo vnesti neko obliko sinhronizacije, da ne boste izgubili podatkov. Zvočni podatki se zajemajo s standardnimi API-ji za Windows, vključno s tistimi, ki jih uporabljajo govorne storitve Azure.

Čeprav strojna oprema Azure Kinect zajema veliko podatkov, funkcije SDK pomagajo, da jih pretvorimo v uporabno obliko; na primer dodajanje podatkov o globini sliki RGB za ustvarjanje slik RGB-D, ki se pretvorijo v stališče kamere RGB (in obratno). Ker sta senzorja izključena, je za to potrebno upogibanje slikovne mreže za združevanje stališč obeh kamer z uporabo grafičnega procesorja računalnika. Druga preobrazba ustvari oblak točk, ki vam omogoča, da dobite podatke o globini za vsak piksel v zajemu. Uporabna možnost v SDK je zmožnost zajemanja video in podatkovnih tokov v datoteko formata Matroska. Ta pristop omogoča napravam z omejeno pasovno širino paketno obdelavo podatkov in njihovo dostavo, recimo, napravam Azure Stack Edge z vsebniki Cognitive Services za serijsko obdelavo.

Telo, ki sledi digitalnemu okostju

Prvotna strojna oprema Kinect je uvedla sledenje telesu z okostnim modelom, ki ga je bilo mogoče uporabiti za hitro oceno drže telesa in kretenj. Enak pristop se nadaljuje v SDK za sledenje telesa Azure Kinect, ki uporablja Nvidijino tehnologijo vzporedne obdelave GPU CUDA za obdelavo 3D-slikovnih podatkov s senzorja globine vaše naprave. Priložena vzorčna aplikacija prikazuje nekatere funkcije SDK, vključno z možnostjo sledenja več kot eni osebi hkrati.

SDK za sledenje telesu temelji na SDK-ju Azure Kinect, ki ga uporablja za konfiguriranje in povezovanje z napravo. Podatke o zajetih slikah sledilnik obdeluje, pri čemer podatke shrani v podatkovno strukturo okvirja telesa. Vsebuje zbirko skeletnih struktur za identificirana telesa, dvodimenzionalni indeksni zemljevid za lažjo vizualizacijo vaših podatkov, skupaj z osnovnimi 2-D in 3-D slikami, ki so bile uporabljene za izdelavo podatkov o sledenju. Vsak okvir se lahko uporablja za izdelavo animacij ali za podajanje informacij v orodja za strojno učenje, ki lahko pomagajo pri obdelavi sledljivih položajev glede na zemljevid sobe ali idealne položaje.

Azurine kognitivne storitve so močno orodje za obdelavo podatkov, dodatek Azure Kinect pa omogoča njihovo uporabo v številnih industrijskih in podjetniških scenarijih. Microsoft se osredotoča na tridimenzionalno prepoznavanje slik na delovnem mestu in skuša pokazati, kako se s prepoznavanjem slik lahko zmanjša tveganje in izboljša varnost. Obstaja celo možnost uporabe vrste naprav kot sistema za hiter volumetrični zajem, ki lahko pomaga pri gradnji okolij z mešano resničnostjo in zagotavlja izvorne podatke za CAD in druga orodja za načrtovanje. Rezultat je prilagodljiva naprava, ki z malo kode postane zelo zmogljiva zaznavna naprava.

$config[zx-auto] not found$config[zx-overlay] not found