Programmering

Arbejde med Azure Kinect Developer Kit

Microsoft annoncerede sine Azure Kinect-kameramoduler sammen med HoloLens 2 tidligt i 2019. Begge enheder bruger det samme kamera med blandet virkelighed ved hjælp af en dybdesensor til flyvning til at kortlægge objekter omkring kameraet. Men hvor HoloLens er en bærbar enhed med blandet virkelighed, er Azure Kinect-modulerne beregnet til at give Azure-hostede maskinlæringsapplikationer tilsluttede sensorer, der kan monteres hvor som helst i et arbejdsområde.

Azure Kinect er en direkte efterkommer af anden generation af Kinect-moduler, der blev leveret med Xbox One, men i stedet for at levere input fra den virkelige verden til spil er det målrettet mod virksomhedsbrugere og applikationer. Med det formål at arbejde med Azure's Cognitive Services begyndte det første Azure Kinect-udviklerpakket at blive sendt i slutningen af ​​2019 i USA og tilføjede flere andre lande i begyndelsen af ​​2020.

Åbning af kassen

$ 399 Azure Kinect Developer Kit er en lille hvid enhed med to kameralinser, en til et vidvinklet RGB-kamera og en til Kinect-dybdesensoren og en række mikrofoner. Den har en orienteringssensor, der giver dig mulighed for at bruge kameraet til at opbygge komplekse 3D-billeder af miljøer, klar til brug i blandet virkelighed. Du kan kæde flere enheder sammen for hurtige 3D-scanninger eller for at give dækning af et helt rum ved hjælp af orienteringssensoren til at forstå enhedens position.

Sammen med kameraenheden får du en strømforsyning, en unbrakonøgle til at fjerne kædeportens dæksel og et USB-kabel til at oprette forbindelse til en udviklings-pc. Jeg vil anbefale at få et stationært stativ eller en anden type montering, da det medfølgende plaststativ er ret lille og ikke fungerer sammen med de fleste skriveborde eller skærme. Der er ingen software i kassen, kun et link til online-dokumentation, hvor du kan downloade enhedens SDK.

Inden du kommer i gang, skal du opdatere enhedens firmware. Dette leveres med SDK og inkluderer et kommandolinjeværktøj til installation. Når du kører opdateringen, kontrollerer den først den aktuelle firmwaretilstand, inden du installerer kamera- og enhedens firmware og derefter genstarter. Når kameraet er genstartet, skal du bruge det samme værktøj til at kontrollere, at opdateringen er installeret korrekt. Hvis der er et problem med en installation, kan du bruge kameraets hardware-nulstilling (skjult under stativbeslaget) til at gendanne det originale fabriksbillede.

Fornemmer verden

Når SDK er installeret, får du adgang til enhedssensorerne fra din kode. Der er tre SDK'er: en til lavt niveau adgang til alle kameraets sensorer, en anden til at bruge de velkendte Kinect-kropssporingsfunktioner og en til at linke kameraets mikrofonarray til Azures taletjenester. En forudbygget Kinect Viewer-app viser de tilgængelige kameravisninger og streamer data fra enhedens sensorer. Du får adgang til vidvinkel RGB-kameraet, en dybdekameravisning og billedet fra dybdesensorens infrarøde kamera. SDK'er er tilgængelige til både Windows og Linux, specifikt Canonicals Ubuntu 18.04 LTS-udgivelse, og kan downloades direkte fra Microsoft eller fra GitHub.

Det er en god ide at bruge lidt tid på at lege med Kinect Viewer. Det giver dig mulighed for at se, hvordan de forskellige dybdekameratilstande fungerer, hvilket hjælper dig med at vælge enten et smalt eller bredt synsfelt. Du kan se data fra positionssensorer, både accelerometer og gyroskop og fra mikrofonarrayet. Med Azure Kinect Developer Kit tilsluttet en udviklings-pc og fungerer, kan du begynde at skrive kode til det. En app til kommandolinieoptagere kan bruges til at indfange data til afspilning i fremviseren og gemme dybdeoplysninger i en MKV-fil (Matroska Video) -format.

Byg din første dybdefølsapplikation

Microsoft leverer eksempelkode til opbygning af en simpel C-applikation til at arbejde med Azure Kinect Development Kit. Der er kun et bibliotek nødvendigt, og dette giver de objekter og metoder, der er nødvendige for at arbejde med kameraet. Enhver applikation skal først kontrollere, hvor mange kameraer der er tilsluttet værts-pc'en, før du konfigurerer dine enheds datastrømme. Enheder identificeres ved hjælp af deres serienummer, så du kan bruge dette til at adressere et bestemt kamera, når du arbejder med flere, der er forbundet til den samme pc eller sammenkædet.

Azure Kinect Developer Kit leverer kun streamingdata, så applikationer skal konfigurere datahastigheden i rammer pr. Sekund sammen med billedfarveformater og -opløsninger. Når du har oprettet et konfigurationsobjekt, kan du åbne en forbindelse ved hjælp af dit konfigurationsobjekt, klar til at streame data. Når du er færdig med at læse en datastrøm, skal du stoppe og lukke enheden.

Billeder optages i et optagelsesobjekt med et dybdebillede, et IR-billede og et farvebillede til hvert enkelt billede taget fra enhedens strøm. Når du har taget et billede, kan du udtrække de enkelte billeder, der er klar til brug i din applikation. Billedobjekter kan leveres til Azure machine vision API'erne, klar til genkendelse af objekter eller detektering af uregelmæssigheder. Et eksempel, som Microsoft har brugt i sine demonstrationer, er et program, der bruger optaget video til at opdage, når en arbejdstager på fabriksgulvet kommer for tæt på at betjene maskiner; en anden registrerer nogen ryger i nærheden af ​​en gaspumpe.

En lignende proces giver dig data fra positions- og bevægelsessensorer. Da bevægelsesdata fanges med en højere hastighed end billeddata, skal du implementere en eller anden form for synkronisering i din kode for at undgå at miste data. Lyddata fanges ved hjælp af standard Windows API'er, inklusive dem, der bruges af Azures taletjenester.

Selvom Azure Kinect-hardware fanger en masse data, hjælper SDK-funktionerne med at omdanne dem til en anvendelig form; for eksempel at tilføje dybdedata til et RGB-billede for at producere RGB-D-billeder, der omdannes til synspunktet for RGB-kameraet (og omvendt). Da de to sensorer er forskudt, kræver dette, at et billednetværk vrides for at flette de to kameraers synspunkter ved hjælp af din pc's GPU. En anden transformation genererer en punktsky, der giver dig mulighed for at få dybdedata for hver pixel i din optagelse. En nyttig mulighed i SDK er muligheden for at fange video- og datastrømme i en Matroska-formatfil. Denne fremgangsmåde tillader båndbreddebegrænsede enheder at batchdata og levere dem til f.eks. Azure Stack Edge-enheder med Cognitive Services-containere til batchbehandling.

Kroppssporing af et digitalt skelet

Den originale Kinect-hardware introducerede kropssporing med en skeletmodel, der kunne bruges til hurtigt at evaluere kropsholdning og gestus. Den samme tilgang fortsætter i Azure Kinect Body Tracking SDK, der bruger Nvidias CUDA GPU-parallelbehandlingsteknologi til at arbejde med 3D-billeddata fra din enheds dybdesensor. En medfølgende app-app viser nogle af funktionerne i SDK, herunder muligheden for at spore mere end en person ad gangen.

Body Tracking SDK bygger på Azure Kinect SDK ved hjælp af den til at konfigurere og oprette forbindelse til en enhed. Opfangede billeddata behandles af trackeren og lagrer data i en datastruktur for en kropsramme. Denne indeholder en samling af skeletstrukturer til identificerede kroppe, et 2-D-indekskort, der hjælper med at visualisere dine data sammen med de underliggende 2-D- og 3-D-billeder, der blev brugt til at konstruere sporingsdataene. Hver ramme kan bruges til at konstruere animationer eller til at føje information til maskinindlæringsværktøjer, der kan hjælpe med at behandle sporede positioner i forhold til et rumkort eller til ideelle positioner.

Azures Cognitive Services er et kraftfuldt værktøj til behandling af data, og tilføjelsen af ​​Azure Kinect gør det muligt at bruge dem i en bred vifte af industri- og virksomhedsscenarier. Med fokus på 3D-billedgenkendelse på arbejdspladsen forsøger Microsoft at vise, hvordan billedgenkendelse kan bruges til at reducere risiko og forbedre sikkerheden. Der er endda muligheden for at bruge en række enheder som et hurtigt volumetrisk opsamlingssystem, som kan hjælpe med at opbygge både mixed-reality-miljøer og levere kildedata til CAD og andre designværktøjer. Resultatet er en fleksibel enhed, der med en lille kode bliver en meget stærk sensorenhed.

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