Programmering

Arbeider med Azure Kinect Developer Kit

Microsoft kunngjorde sine Azure Kinect-kameramoduler ved siden av HoloLens 2 tidlig i 2019. Begge enhetene bruker den samme blandede virkelighets-kameramodulen, ved hjelp av en dybdesensor med flytid for å kartlegge objekter rundt kameraet. Men der HoloLens er en bærbar enhet med blandet virkelighet, er Azure Kinect-modulene ment å gi Azure-hostede maskinlæringsapplikasjoner med tilkoblede sensorer som kan monteres hvor som helst i et arbeidsområde.

Azure Kinect er en direkte etterkommer av andregenerasjons Kinect-moduler som fulgte med Xbox One, men i stedet for å levere virkelige innganger for spill, er den rettet mot bedriftsbrukere og applikasjoner. Den første Azure Kinect-utvikleren hadde til hensikt å jobbe med Azure's Cognitive Services, og startet levering i slutten av 2019 i USA, og tilførte flere andre land tidlig i 2020.

Åpne esken

$ 399 Azure Kinect Developer Kit er en liten hvit enhet med to kameralinser, en for et vidvinkel RGB-kamera og en for Kinect dybdesensor, og en rekke mikrofoner. Den har en orienteringssensor som lar deg bruke kameraet til å bygge komplekse 3D-bilder av miljøer, klare til bruk i blandet virkelighet. Du kan koble flere enheter sammen for raske 3D-skanninger eller for å gi dekning av et helt rom ved å bruke orienteringssensoren for å forstå enhetens posisjon.

Sammen med kameraenheten får du en strømforsyning, en unbrakonøkkel for å fjerne dekselet til lenkeportene og en USB-kabel for å koble til en utviklings-PC. Jeg vil anbefale å skaffe et stasjonært stativ eller en annen type montering, ettersom den medfølgende plaststativet er ganske lite og ikke fungerer med de fleste skrivebord eller skjermer. Det er ingen programvare i boksen, bare en lenke til online dokumentasjon der du kan laste ned enhetens SDK.

Før du begynner, bør du oppdatere enhetens fastvare. Dette leveres med SDK og inkluderer et installasjonsverktøy for kommandolinjen. Når du kjører oppdatereren, kontrollerer den først den gjeldende fastvaretilstanden før du installerer kamera- og enhetsfastvare og deretter starter på nytt. Når kameraet har startet på nytt, bruker du det samme verktøyet for å kontrollere at oppdateringen er installert. Hvis det er et problem med en installasjon, kan du bruke kameraets tilbakestilling av maskinvare (skjult under stativfeste) for å gjenopprette det opprinnelige fabrikkbildet.

Føler verden

Med SDK installert får du tilgang til enhetssensorene fra koden din. Det er tre SDK-er: en for lavt nivå tilgang til alle kameraets sensorer, en annen for å bruke de velkjente Kinect-kroppssporingsfunksjonene, og en for å koble kameraets mikrofonoppsett til Azures taletjenester. En forhåndsbygd Kinect Viewer-app viser tilgjengelige kameravisninger og streamer data fra enhetens sensorer. Du får tilgang til vidvinkel RGB-kamera, en dybdekameravisning og bildet fra dybdesensorens infrarøde kamera. SDK-er er tilgjengelige for både Windows og Linux, spesielt Canonicals Ubuntu 18.04 LTS-utgivelse, og kan lastes ned direkte fra Microsoft eller fra GitHub.

Det er en god ide å bruke litt tid på å leke med Kinect Viewer. Den lar deg se hvordan de forskjellige dybdekameramodusene fungerer, og hjelper deg å velge enten et smalt eller bredt synsfelt. Du kan se data fra posisjonssensorene, både akselerometeret og gyroskopet, og fra mikrofonoppsettet. Med Azure Kinect Developer Kit koblet til en utviklings-PC og fungerer, kan du begynne å skrive kode for det. En kommandolinjeopptaker-app kan brukes til å fange data for avspilling i betrakteren, og lagre dybdeinformasjon i en MKV (Matroska Video) -fil.

Bygg din første dybdefølsomme applikasjon

Microsoft tilbyr eksempelkode for å bygge et enkelt C-program for å fungere med Azure Kinect Development Kit. Det er bare ett bibliotek som trengs, og dette gir objektene og metodene som trengs for å jobbe med kameraet. Enhver applikasjon må først sjekke hvor mange kameraer som er koblet til verts-PC-en før du konfigurerer enhetens datastrømmer. Enheter identifiseres med serienummeret, så du kan bruke dette til å adressere et bestemt kamera når du jobber med flere som er koblet til samme PC eller lenket sammen.

Azure Kinect Developer Kit leverer bare strømmedata, så applikasjoner må konfigurere datahastigheten i bilder per sekund, sammen med bildefargeformater og oppløsninger. Når du har opprettet et konfigurasjonsobjekt, kan du åpne en forbindelse ved hjelp av konfigurasjonsobjektet, klar til å streame data. Når du er ferdig med å lese en datastrøm, må du stoppe og lukke enheten.

Bilder tas i et fangeobjekt, med et dybdebilde, et IR-bilde og et fargebilde for hvert enkelt bilde, tatt fra enhetens strøm. Når du har tatt et bilde, kan du trekke ut de enkelte bildene som er klare til bruk i applikasjonen. Bildeobjekter kan leveres til Azure machine vision APIer, klare for gjenkjenning av gjenstander eller avvik. Et eksempel Microsoft har brukt i demonstrasjonene, er et program som bruker innspilt video for å oppdage når en arbeidstaker på fabrikkgulvet kommer for nær betjening av maskiner; en annen oppdager noen som røyker i nærheten av en bensinpumpe.

En lignende prosess gir deg data fra posisjons- og bevegelsessensorer. Siden bevegelsesdata fanges opp med en høyere hastighet enn bildedata, må du implementere en eller annen form for synkronisering i koden din for å unngå å miste data. Lyddata fanges opp ved hjelp av standard Windows API-er, inkludert de som brukes av Azures taletjenester.

Selv om Azure Kinect-maskinvaren fanger opp mye data, hjelper SDK-funksjonene med å transformere den til en brukbar form; for eksempel å legge til dybdedata til et RGB-bilde for å produsere RGB-D-bilder som transformeres til synspunktet til RGB-kameraet (og omvendt). Ettersom de to sensorene er forskjøvet, krever dette at et bildenett vrides for å slå sammen de to kameraenes synspunkter ved hjelp av PC-ens GPU. En annen transform genererer en punktsky, slik at du kan få dybdedata for hver piksel i fangsten din. Et nyttig alternativ i SDK er muligheten til å fange video- og datastrømmer i en Matroska-formatfil. Denne tilnærmingen gjør at båndbreddebegrensede enheter kan batchdata og levere dem til for eksempel Azure Stack Edge-enheter med Cognitive Services-containere for batchbehandling.

Kroppssporing av et digitalt skjelett

Den originale Kinect-maskinvaren introduserte kroppssporing, med en skjelettmodell som kan brukes til å raskt evaluere holdning og bevegelser. Den samme tilnærmingen fortsetter i Azure Kinect Body Tracking SDK, som bruker Nvidias CUDA GPU parallelle prosesseringsteknologi for å jobbe med 3D-bildedata fra enhetens dybdesensor. En medfølgende prøve-app viser noen av funksjonene i SDK, inkludert muligheten til å spore mer enn én person om gangen.

Body Tracking SDK bygger på Azure Kinect SDK, og bruker den til å konfigurere og koble til en enhet. Registrerte bildedata behandles av trackeren, og lagrer data i en datastruktur for kroppsrammen. Dette inneholder en samling skjelettstrukturer for identifiserte kropper, et 2-D-indekskart for å visualisere dataene dine, sammen med de underliggende 2-D og 3-D-bildene som ble brukt til å konstruere sporingsdataene. Hver ramme kan brukes til å konstruere animasjoner eller til å mate informasjon til maskinlæringsverktøy som kan hjelpe deg med å behandle sporede posisjoner i forhold til et romkart eller til ideelle posisjoner.

Azures Cognitive Services er et kraftig verktøy for behandling av data, og tillegg av Azure Kinect gjør det mulig å bruke dem i et bredt spekter av industrielle og bedriftsscenarier. Med fokus på 3D-bildegjenkjenning på arbeidsplassen, prøver Microsoft å vise hvordan bildegjenkjenning kan brukes til å redusere risiko og forbedre sikkerheten. Det er til og med muligheten til å bruke en rekke enheter som et raskt volumetrisk fangstsystem, som kan bidra til å bygge både miljøer med blandet virkelighet og gi kildedata for CAD og andre designverktøy. Resultatet er en fleksibel enhet som med litt kode blir en veldig kraftig sensing-enhet.

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