Dela via


Synkronisera flera Azure Kinect DK-enheter

Varje Azure Kinect DK-enhet innehåller 3,5 mm synkroniseringsportar (Synkronisera in och Synkronisera ut) som du kan använda för att länka flera enheter tillsammans. När du har anslutit enheterna kan programvaran samordna utlösartidsinställningen mellan dem.

Den här artikeln om hur du ansluter och synkroniserar enheterna.

Fördelar med att använda flera Azure Kinect DK-enheter

Det finns många skäl att använda flera Azure Kinect DK-enheter, inklusive följande:

  • Fyll i ocklusioner. Även om Azure Kinect DK-datatransformeringar ger en enda bild, är de två kamerorna (djup och RGB) faktiskt ett litet avstånd ifrån varandra. Förskjutningen gör ocklusioner möjliga. En ocklusion inträffar när ett förgrundsobjekt blockerar vyn av en del av ett bakgrundsobjekt för en av de två kamerorna på en enhet. I den resulterande färgbilden verkar förgrundsobjektet kasta en skugga över bakgrundsobjektet.
    I följande diagram ser till exempel kameran på vänster sida den grå pixeln "P2". Det vita förgrundsobjektet blockerar dock kamerans IR-stråle på höger sida. Kameran på höger sida har inga data för "P2".
    Diagrammet visar två kameror riktade mot samma punkt med en av dem blockerad.
    Ytterligare synkroniserade enheter kan tillhandahålla occluded-data.
  • Skanna objekt i tre dimensioner.
  • Öka den effektiva bildfrekvensen till ett värde som är större än 30 bildrutor per sekund (FPS).
  • Fånga flera 4K-färgbilder av samma scen, alla justerade inom 100 mikrosekunder (μs) från exponeringens mitt.
  • Öka kameratäckningen i utrymmet.

Planera konfigurationen för flera enheter

Innan du börjar måste du granska maskinvaruspecifikationerna för Azure Kinect DK och Djupkameran för Azure Kinect DK.

Kommentar

Ta bort det yttre plasthöljet för att exponera Sync In- och Sync Out-uttagen.

Välj en enhetskonfiguration

Du kan använda någon av följande metoder för enhetskonfigurationen:

  • Konfiguration av tusensköna kedja. Synkronisera en huvudenhet och upp till åtta underordnade enheter.
    Diagram som visar hur du ansluter Azure Kinect DK-enheter i en daisy-chain-konfiguration.
  • Star-konfiguration. Synkronisera en huvudenhet och upp till två underordnade enheter.
    Diagram som visar hur du konfigurerar flera Azure DK-enheter i en stjärnkonfiguration.

Använda en extern synkroniseringsutlösare

I båda konfigurationerna tillhandahåller huvudenheten utlösande signal för de underordnade enheterna. Du kan dock använda en anpassad extern källa för synkroniseringsutlösaren. Du kan till exempel använda det här alternativet för att synkronisera avbildningar med annan utrustning. Den externa utlösarkällan ansluter antingen till huvudenheten i konfigurationen av daisy-chain eller star-konfigurationen.

Den externa utlösarkällan måste fungera på samma sätt som huvudenheten. Den måste leverera en synkroniseringssignal som har följande egenskaper:

  • Aktiv hög
  • Pulsbredd: Större än 8μs
  • 5V TTL/CMOS
  • Maximal körkapacitet: Inte mindre än 8 milliamps (mA)
  • Frekvensstöd: Exakt 30 FPS, 15 FPS och 5 FPS (frekvensen för färgkamerans master VSYNC-signal)

Utlösarkällan måste leverera signalen till huvudenheten Synkronisera i porten med en 3,5 mm-ljudkabel. Du kan använda en stereo- eller monokabel. Azure Kinect DK shorts alla ärmar och ringar av ljudkabeln anslutning tillsammans, och grunda dem. Som du ser i följande diagram tar enheten endast emot synkroniseringssignalen från anslutningstipset.

Kabelkonfigurationer för en extern utlösarsignal

Mer information om hur du arbetar med extern utrustning finns i Använda Azure Kinect-inspelare med externa synkroniserade enheter

Kommentar

Sync Out är VSync för RGB-kameran. Tidsstämplarna för alla enheter är inställda på noll och räknas upp. Microsoft har inte karakteriserat synkroniseringspulsens minsta och högsta bredd och rekommenderar att du efterliknar pulsen som genereras av Sync Out från en Azure Kinect DK.

Planera kamerainställningarna och programvarukonfigurationen

Information om hur du konfigurerar programvaran för att styra kamerorna och använda bilddata finns i Azure Kinect Sensor SDK.

I det här avsnittet beskrivs flera faktorer som påverkar synkroniserade enheter (men inte enskilda enheter). Programvaran bör ta hänsyn till dessa faktorer.

Exponeringsöverväganden

Om du vill styra den exakta tidpunkten för varje enhet rekommenderar vi att du använder en manuell exponeringsinställning. Under inställningen för automatisk exponering kan varje färgkamera dynamiskt ändra den faktiska exponeringen. Eftersom exponeringen påverkar tidpunkten, driver sådana ändringar snabbt kamerorna ur synkronisering.

Undvik att upprepade gånger ange samma exponeringsinställning i avbildningsloopen. Anropa API:et bara en gång när det behövs.

Undvika interferens mellan flera djupkameror

När flera djupkameror avbildar överlappande synfält måste varje kamera avbilda sin egen associerade laser. För att förhindra att lasrarna stör varandra bör kamerans avbildningar förskjutas från varandra med 160 μs eller mer.

För varje djupkamerafångning aktiveras lasern nio gånger och är aktiv i endast 125μs varje gång. Lasern är sedan inaktiv för antingen 1450μs eller 2390μs, beroende på driftsättet. Det här beteendet innebär att startpunkten för förskjutningsberäkningen är 125 μs.

Dessutom ökar skillnaderna mellan kameraklockan och enhetens inbyggda programvara den minsta förskjutningen till 160μs. Om du vill beräkna en mer exakt förskjutning för konfigurationen bör du notera det djupläge som du använder och referera till tidstabellen för djupsensorns råa tidstabell. Genom att använda data från den här tabellen kan du beräkna den minsta förskjutningen (exponeringstiden för varje kamera) med hjälp av följande ekvation:

Exponeringstid = (IR-pulser × pulsbredd) + (inaktiva perioder × inaktivitetstid)

När du använder en förskjutning på 160μs kan du konfigurera upp till nio extra djupkameror så att varje laser slås på medan de andra lasrarna är inaktiva.

Använd eller subordinate_delay_off_master_usec se till att varje IR-laser utlöses i ett eget fönster på 160 μs i programvaran depth_delay_off_color_usec eller har ett annat synfält.

Kommentar

Den faktiska pulsbredden är 125μs men vi anger 160us för att ge lite spelrum. Med NFOV UNBINNED som exempel följs varje 125μs puls av 1450μs inaktiv. Summan av dessa upp - (9 x 125) + (8 x 1450) - ger exponeringstiden på 12,8 ms. Garderoben kan du interleave exponeringen av 2 enheter är att ha den första pulsen på den andra kameran att falla under den första inaktiva perioden av den första kameran. Fördröjningen mellan den första och andra kameran kan vara så lite som 125μs (bredden på en puls) men vi rekommenderar lite spelrum därav 160μs. Med 160μs kan du interleave exponeringsperioderna för högst 10 kameror.

Förbereda dina enheter och annan maskinvara

Förutom flera Azure Kinect DK-enheter kan du behöva skaffa ytterligare värddatorer och annan maskinvara för att stödja den konfiguration som du vill skapa. Använd informationen i det här avsnittet för att se till att alla enheter och maskinvara är klara innan du börjar konfigurera.

Azure Kinect DK-enheter

Gör följande för varje Azure Kinect DK-enhet som du vill synkronisera:

  • Kontrollera att den senaste inbyggda programvaran är installerad på enheten. Mer information om hur du uppdaterar dina enheter finns i Uppdatera den inbyggda programvaran för Azure Kinect DK.
  • Ta bort enhetsskyddet för att visa synkroniseringsportarna.
  • Observera serienumret för varje enhet. Du kommer att använda det här numret senare i installationsprocessen.

Värddatorer

Vanligtvis använder varje Azure Kinect DK sin egen värddator. Du kan använda en dedikerad värdstyrenhet, beroende på hur du använder enheten och hur mycket data som överförs via USB-anslutningen.

Kontrollera att Azure Kinect Sensor SDK är installerat på varje värddator. Mer information om hur du installerar Sensor SDK finns i Snabbstart: Konfigurera din Azure Kinect DK.

Linux-datorer: USB-minne på Ubuntu

Som standard allokerar Linux-baserade värddatorer ENDAST USB-styrenheten 16 MB kernelminne för att hantera USB-överföringar. Det här beloppet räcker vanligtvis för att stödja en enda Azure Kinect DK. Men för att stödja flera enheter måste USB-styrenheten ha mer minne. Följ dessa steg för att öka minnet:

  1. Redigera /etc/default/grub.
  2. Leta upp följande rad:
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    
    Ersätt den med hjälp av den här raden:
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.usbfs_memory_mb=32"
    

    Kommentar

    Dessa kommandon anger USB-minnet till 32 MB. Det här är en exempelinställning med två gånger standardvärdet. Du kan ange ett mycket större värde, beroende på vad som är lämpligt för din lösning.

  3. Kör sudo update-grub.
  4. Starta om datorn.

Kablar

För att ansluta enheterna till varandra och till värddatorerna måste du använda 3,5 mm man-till-han-kablar (kallas även 3,5 mm ljudkabel). Kablarna ska vara mindre än 10 meter långa och kan vara stereo eller mono.

Antalet kablar som du måste ha beror på antalet enheter som du använder och även den specifika enhetskonfigurationen. Azure Kinect DK-rutan innehåller inte kablar. Du måste köpa dem separat.

Om du ansluter enheterna i stjärnkonfigurationen måste du också ha en hörlursdelning.

Anslut dina enheter

Så här ansluter du Azure Kinect DK-enheter i en konfigurering av kedja

  1. Anslut varje Azure Kinect DK till ström.
  2. Anslut varje enhet till värddatorn.
  3. Välj en enhet som huvudenhet och anslut en 3,5 mm-ljudkabel till dess Sync out-port .
  4. Anslut den andra änden av kabeln till Synkronisering i porten för den första underordnade enheten.
  5. Om du vill ansluta en annan enhet ansluter du en annan kabel till sync out-porten för den första underordnade enheten och till Synkronisering i porten för nästa enhet.
  6. Upprepa föregående steg tills alla enheter är anslutna. Den sista enheten ska bara ha en kabelanslutning. Dess Sync out-port ska vara tom.

Ansluta Azure Kinect DK-enheter i en stjärnkonfiguration

  1. Anslut varje Azure Kinect DK till ström.
  2. Anslut varje enhet till värddatorn.
  3. Välj en enhet som huvudenhet och anslut den ena änden av hörlursuppdelningen till dess Sync out-port .
  4. Anslut 3,5 mm ljudkablar till hörlursdelningens "delade" ändar.
  5. Anslut den andra änden av varje kabel till Synkronisering i porten för en av de underordnade enheterna.

Kontrollera att enheterna är anslutna och kommunicerar

Om du vill kontrollera att enheterna är korrekt anslutna använder du Azure Kinect Viewer. Upprepa den här proceduren efter behov för att testa varje underordnad enhet i kombination med huvudenheten

Viktigt!

För den här proceduren måste du känna till serienumret för varje Azure Kinect DK.

  1. Öppna två instanser av Azure Kinect Viewer.
  2. Under Öppna enhet väljer du serienumret för den underordnade enhet som du vill testa.
    Öppna enhet

    Viktigt!

    För att få exakt avbildningsjustering mellan alla enheter måste du starta huvudenheten senast.

  3. Under Extern synkronisering väljer du Under.
    Start av underordnad kamera
  4. Välj start.

    Kommentar

    Eftersom det här är en underordnad enhet visar Inte Azure Kinect Viewer någon bild när enheten har startats. Ingen bild visas förrän den underordnade enheten får en synkroniseringssignal från huvudenheten.

  5. När den underordnade enheten har startat använder du den andra instansen av Azure Kinect Viewer för att öppna huvudenheten.
  6. Under Extern synkronisering väljer du Huvud.
  7. Välj start.

När huvudenheten för Azure Kinect startar bör båda instanserna av Azure Kinect Viewer visa bilder.

Kalibrera enheterna som en synkroniserad uppsättning

När du har kontrollerat att enheterna kommunicerar korrekt är du redo att kalibrera dem för att skapa bilder i en enda domän.

På en enda enhet är djup- och RGB-kamerorna fabrikskalibrerade för att fungera tillsammans. Men när flera enheter måste arbeta tillsammans måste de kalibreras för att avgöra hur en bild ska transformeras från domänen för den kamera som fångade den till domänen för den kamera som du vill använda för att bearbeta bilder.

Det finns flera alternativ för korskalibrering av enheter. Microsoft tillhandahåller kodexemplet för GitHub-grön skärm, som använder Metoden OpenCV. Readme-filen för det här kodexemplet innehåller mer information och instruktioner för att kalibrera enheterna.

Mer information om kalibrering finns i Använda Azure Kinect-kalibreringsfunktioner.

Nästa steg

När du har konfigurerat synkroniserade enheter kan du också lära dig hur du använder