Programavimas

Darbas su „Azure Kinect“ kūrėjų rinkiniu

2019 m. Pradžioje „Microsoft“ kartu su „HoloLens 2“ paskelbė apie savo „Azure Kinect“ kameros modulius. Abu įrenginiai naudoja tą patį mišrios realybės kameros modulį, naudodamiesi skrydžio laiko gylio jutikliu objektams aplink fotoaparatą susieti. Bet kur „HoloLens“ yra nešiojamas mišrios realybės įrenginys, „Azure Kinect“ moduliai skirti teikti „Azure“ priglobtas mašinų mokymosi programas su prijungtais jutikliais, kuriuos galima montuoti bet kurioje darbo vietoje.

„Azure Kinect“ yra tiesioginis antrosios kartos „Kinect“ modulių, pristatytų kartu su „Xbox One“, palikuonis, tačiau vietoj to, kad teiktų realaus įvesties žaidimus, jis skirtas įmonių vartotojams ir programoms. Pirmąjį „Azure Kinect“ kūrėjų rinkinį, skirtą dirbti su „Azure“ pažintinėmis paslaugomis, pradėta pristatyti 2019 m. Pabaigoje Jungtinėse Valstijose, o 2020 m. Pradžioje buvo pridėta keletas kitų šalių.

Dėžutės atidarymas

399 USD kainuojantis „Azure Kinect“ kūrėjų rinkinys yra nedidelis baltas įrenginys su dviem fotoaparato objektyvais, vienas skirtas plataus kampo RGB kamerai, kitas - „Kinect“ gylio jutikliui, ir daugybė mikrofonų. Jame yra orientacijos jutiklis, leidžiantis naudoti fotoaparatą kuriant sudėtingus 3D vaizdus, ​​paruoštus naudoti mišrioje realybėje. Galite susieti kelis įrenginius, kad galėtumėte greitai atlikti 3D nuskaitymą arba aprėpti visą kambarį, naudodami orientacijos jutiklį, kuris padės suprasti įrenginio padėtį.

Kartu su fotoaparatu gausite maitinimo šaltinį, „Allen“ raktą, kad pašalintumėte grandinės prievadų dangtį, ir USB laidą, skirtą prisijungti prie kūrimo kompiuterio. Aš rekomenduočiau įsigyti darbastalio trikojį ar kitokio tipo laikiklį, nes komplektuojamas plastikinis stovas yra gana mažas ir neveikia su daugeliu stalų ar monitorių. Dėžutėje nėra jokios programinės įrangos, tik nuoroda į internetinę dokumentaciją, kurioje galite atsisiųsti įrenginio SDK.

Prieš pradėdami turėtumėte atnaujinti įrenginio programinę-aparatinę įrangą. Tai pristatoma su SDK ir yra komandinės eilutės diegimo įrankis. Kai paleidžiate atnaujinimo programą, prieš patikrindami fotoaparato ir įrenginio programinę aparatinę įrangą, tada iš naujo paleiskite, ji pirmiausia patikrina esamą programinės aparatinės įrangos būseną. Kai fotoaparatas bus paleistas iš naujo, naudokite tą patį įrankį, kad patikrintumėte, ar naujinimas sėkmingai įdiegtas. Jei kyla problemų diegiant, galite atkurti pradinį gamyklinį vaizdą naudodami fotoaparato nustatymus iš naujo (paslėpti po trikojo laikikliu).

Pajutęs pasaulį

Įdiegę SDK, iš savo kodo galėsite pasiekti įrenginio jutiklius. Yra trys SDK: vienas skirtas žemo lygio prieigai prie visų fotoaparato jutiklių, kitas skirtas naudoti žinomas „Kinect“ kūno stebėjimo funkcijas, o kitas - susieti fotoaparato mikrofono masyvą su „Azure“ kalbos paslaugomis. Iš anksto pastatyta „Kinect Viewer“ programa rodo galimus kameros vaizdus ir srautus iš įrenginio jutiklių. Galite naudotis plataus kampo RGB kamera, gylio kameros vaizdu ir vaizdu iš gylio jutiklio infraraudonųjų spindulių kameros. SDK galima įsigyti tiek „Windows“, tiek „Linux“, ypač „Canonical“ „Ubuntu 18.04 LTS“ leidime, ir juos galima atsisiųsti tiesiai iš „Microsoft“ arba iš „GitHub“.

Patartina šiek tiek laiko praleisti žaidžiant su „Kinect Viewer“. Tai leidžia pamatyti, kaip veikia skirtingo gylio fotoaparato režimai, padedantys pasirinkti siaurą arba platų regėjimo lauką. Galite matyti duomenis iš padėties jutiklių, tiek akselerometro, tiek giroskopo, tiek iš mikrofono masyvo. Kai „Azure Kinect“ kūrėjų rinkinys prijungtas prie kūrimo kompiuterio ir veikia, galite pradėti rašyti jo kodą. Komandinės eilutės savirašio programa gali būti naudojama duomenims užfiksuoti, kad juos būtų galima atkurti žiūriklyje, saugant gylio informaciją MKV („Matroska Video“) formato faile.

Kurkite savo pirmąją gylio jutimo programą

„Microsoft“ pateikia kodo pavyzdį, kaip sukurti paprastą C programą, skirtą dirbti su „Azure Kinect“ kūrimo rinkiniu. Reikalinga tik viena biblioteka, kurioje pateikiami objektai ir metodai, reikalingi darbui su fotoaparatu. Prieš konfigūruodami savo įrenginio duomenų srautus, bet kuri programa pirmiausia turi patikrinti, kiek kamerų yra prijungta prie pagrindinio kompiuterio. Įrenginiai identifikuojami pagal jų serijos numerį, todėl galite tai naudoti adresuodami konkrečią kamerą dirbdami su keliais, prijungtais prie to paties kompiuterio arba sujungtais grandinėmis.

„Azure Kinect“ kūrėjų rinkinys pateikia tik srautinius duomenis, todėl programos turi sukonfigūruoti duomenų perdavimo greitį kadrais per sekundę, taip pat vaizdo spalvų formatus ir skiriamąsias gebas. Sukūrę konfigūracijos objektą, galite atidaryti ryšį naudodami savo konfigūracijos objektą, paruoštą srautui perduoti duomenis. Baigę skaityti duomenų srautą, sustabdykite ir uždarykite įrenginį.

Vaizdai yra užfiksuoti fiksavimo objekte su gylio vaizdu, IR vaizdu ir spalvotu vaizdu kiekvienam atskiram vaizdui, paimtam iš įrenginio srauto. Kai užfiksuosite, galėsite išskleisti atskirus vaizdus, ​​paruoštus naudoti jūsų programoje. Vaizdo objektus galima pristatyti į „Azure“ mašinos vizijos API, paruoštus objektų atpažinimui ar anomalijų aptikimui. Vienas pavyzdžių, kurį „Microsoft“ naudojo demonstracijose, yra programa, kuri naudoja užfiksuotą vaizdo įrašą, kad nustatytų, kai darbuotojas gamyklos aukšte per arti priartėja prie eksploatuojamų mašinų; kitas aptinka rūkantį šalia dujų siurblio.

Panašus procesas suteikia duomenis iš padėties ir judesio jutiklių. Kadangi judesio duomenys užfiksuojami didesniu greičiu nei vaizdo duomenys, kode turite įdiegti tam tikros formos sinchronizavimą, kad neprarastumėte jokių duomenų. Garso duomenys užfiksuojami naudojant standartines „Windows“ API, įskaitant tas, kurias naudoja „Azure“ kalbos paslaugos.

Nors „Azure Kinect“ aparatinė įranga užfiksuoja daug duomenų, SDK funkcijos padeda juos paversti tinkama forma; pavyzdžiui, pridedant gylio duomenis į RGB vaizdą, gaunami RGB-D vaizdai, kurie transformuojami į RGB kameros požiūrį (ir atvirkščiai). Kadangi abu jutikliai nenustatyti, reikia sujungti vaizdo tinklelį, kad sujungtumėte dviejų kamerų požiūrį naudodami savo kompiuterio GPU. Kitas transformavimas sukuria taškinį debesį, leidžiantį gauti kiekvieno užfiksuoto taško gylio duomenis. Viena naudinga SDK parinktis yra galimybė fiksuoti vaizdo ir duomenų srautus „Matroska“ formato faile. Šis metodas leidžia riboto pralaidumo įrenginiams paketuoti duomenis ir pristatyti juos, tarkime, į „Azure Stack Edge“ įrenginius su „Cognitive Services“ konteineriais paketiniam apdorojimui.

Kūnas seka skaitmeninį skeletą

Originalioje „Kinect“ aparatinėje įrangoje buvo įvestas kūno sekimas su skeleto modeliu, kuris galėtų būti naudojamas greitai įvertinti laikyseną ir gestus. Tas pats požiūris tęsiamas ir „Azure Kinect“ kūno stebėjimo SDK, kuris naudoja „Nvidia“ CUDA GPU lygiagrečio apdorojimo technologiją dirbdamas su 3D vaizdų duomenimis iš savo įrenginio gylio jutiklio. Sudėtoje pavyzdinėje programoje rodomos kai kurios SDK funkcijos, įskaitant galimybę vienu metu stebėti daugiau nei vieną asmenį.

Kūno stebėjimo SDK remiasi „Azure Kinect“ SDK, naudodamas jį konfigūruoti ir prisijungti prie įrenginio. Užfiksuotus vaizdo duomenis apdoroja sekimo priemonė, saugodama duomenis kūno rėmo duomenų struktūroje. Čia yra identifikuotų kūnų skeleto struktūrų rinkinys, 2-D rodyklių žemėlapis, padedantis vizualizuoti jūsų duomenis, kartu su pagrindiniais 2-D ir 3-D vaizdais, kurie buvo naudojami kuriant stebėjimo duomenis. Kiekvienas kadras gali būti naudojamas animacijoms kurti arba informacijai pateikti į mašininio mokymosi priemones, kurios gali padėti apdoroti stebimas pozicijas, susijusias su kambario žemėlapiu arba idealiomis padėtimis.

„Azure“ kognityvinės paslaugos yra galingas įrankis duomenims apdoroti, o pridėjus „Azure Kinect“ galima juos naudoti įvairiausiuose pramonės ir įmonių scenarijuose. Didžiausią dėmesį skirdamas 3D vaizdų atpažinimui „Microsoft“ bando parodyti, kaip atpažinimas gali būti naudojamas siekiant sumažinti riziką ir pagerinti saugumą. Yra net galimybė naudoti daugybę įrenginių kaip greitą tūrinę fiksavimo sistemą, kuri gali padėti sukurti tiek mišrios realybės aplinką, tiek pateikti šaltinio duomenis CAD ir kitiems projektavimo įrankiams. Rezultatas yra lankstus prietaisas, kuris, turėdamas šiek tiek kodo, tampa labai galingu jutikliu.