Meerdere Azure Kinect DK-apparaten synchroniseren
Elk Azure Kinect DK-apparaat bevat synchronisatiepoorten van 3,5 mm (synchroniseren en synchroniseren) die u kunt gebruiken om meerdere apparaten aan elkaar te koppelen. Nadat u de apparaten hebt verbonden, kan uw software de timing van de trigger tussen de apparaten coördineren.
In dit artikel leest u hoe u de apparaten verbindt en synchroniseert.
Voordelen van het gebruik van meerdere Azure Kinect DK-apparaten
Er zijn veel redenen om meerdere Azure Kinect DK-apparaten te gebruiken, waaronder de volgende:
- Vul occlusies in. Hoewel de Azure Kinect DK-gegevenstransformaties één afbeelding produceren, zijn de twee camera's (diepte en RGB) eigenlijk een kleine afstand van elkaar. De offset maakt occlusies mogelijk. Een occlusie treedt op wanneer een voorgrondobject de weergave van een deel van een achtergrondobject voor een van de twee camera's op een apparaat blokkeert. In de resulterende kleurafbeelding lijkt het voorgrondobject een schaduw te casten op het achtergrondobject.
In het volgende diagram ziet de camera aan de linkerkant bijvoorbeeld de grijze pixel 'P2'. Het witte voorgrondobject blokkeert echter de camera-IR-straal aan de rechterkant. De camera aan de rechterkant heeft geen gegevens voor 'P2'.
Aanvullende gesynchroniseerde apparaten kunnen de occluded gegevens leveren. - Objecten scannen in drie dimensies.
- Verhoog de effectieve framesnelheid tot een waarde die groter is dan 30 frames per seconde (FPS).
- Leg meerdere 4K-kleurenafbeeldingen van dezelfde scène vast, allemaal uitgelijnd binnen 100 microseconden (μs) van het midden van de blootstelling.
- Vergroot de cameradekking binnen de ruimte.
De configuratie van meerdere apparaten plannen
Voordat u begint, controleert u de hardwarespecificaties van Azure Kinect DK en de dieptecamera van Azure Kinect DK.
Notitie
Verwijder de buitenste plastic hoes om de in- en synchronisatieaansluitingen zichtbaar te maken.
Een apparaatconfiguratie selecteren
U kunt een van de volgende methoden gebruiken voor de apparaatconfiguratie:
- Daisy-chain-configuratie. Synchroniseer één hoofdapparaat en maximaal acht onderliggende apparaten.
- Sterconfiguratie. Synchroniseer één hoofdapparaat en maximaal twee onderliggende apparaten.
Een externe synchronisatietrigger gebruiken
In beide configuraties biedt het hoofdapparaat het triggersignaal voor de onderliggende apparaten. U kunt echter een aangepaste externe bron gebruiken voor de synchronisatietrigger. U kunt deze optie bijvoorbeeld gebruiken om afbeeldingsopnamen te synchroniseren met andere apparatuur. In de daisy-chain-configuratie of de sterconfiguratie maakt de externe triggerbron verbinding met het hoofdapparaat.
De externe triggerbron moet op dezelfde manier functioneren als het hoofdapparaat. Het moet een synchronisatiesignaal leveren met de volgende kenmerken:
- Actief hoog
- Pulsbreedte: groter dan 8μs
- 5V TTL/CMOS
- Maximale rijcapaciteit: niet minder dan 8 milliamps (mA)
- Frequentieondersteuning: Exact 30 FPS, 15 FPS en 5 FPS (de frequentie van het VSYNC-signaal van het kleurencameramodel)
De triggerbron moet het signaal aan de masterapparaatsynchronisatie in de poort leveren met behulp van een audiokabel van 3,5 mm. U kunt een stereo- of monokabel gebruiken. De Azure Kinect DK kortt alle mouwen en ringen van de audiokabelconnector samen en redeneert ze. Zoals in het volgende diagram wordt weergegeven, ontvangt het apparaat alleen het synchronisatiesignaal van de verbindingslijntip.
Notitie
Synchroniseren is de VSync voor de RGB-camera. De tijdstempels voor alle apparaten zijn ingesteld op nul en tellen op. Microsoft heeft de minimale en maximale breedte van de synchronisatiepuls niet gekenmerkt en raadt u aan de puls te nabootsen die zijn gegenereerd door Sync Out of an Azure Kinect DK.
Uw camera-instellingen en softwareconfiguratie plannen
Zie de Azure Kinect Sensor SDK voor informatie over het instellen van uw software voor het beheren van de camera's en het gebruik van de afbeeldingsgegevens.
In deze sectie worden verschillende factoren besproken die van invloed zijn op gesynchroniseerde apparaten (maar niet op één apparaat). Uw software moet rekening houden met deze factoren.
Overwegingen voor blootstelling
Als u de exacte timing van elk apparaat wilt beheren, raden we u aan een handmatige belichtingsinstelling te gebruiken. Onder de instelling voor automatische belichting kan elke kleurencamera de werkelijke belichting dynamisch wijzigen. Omdat de belichting van invloed is op de timing, worden de camera's snel niet gesynchroniseerd.
Vermijd in de opnamelus van de installatiekopieën herhaaldelijk dezelfde belichtingsinstelling in te stellen. Roep de API slechts één keer aan wanneer deze nodig is.
Interferentie tussen meerdere dieptecamera's vermijden
Wanneer meerdere dieptecamera's overlappende weergavevelden vormen, moet elke camera een eigen bijbehorende laser beeld geven. Om te voorkomen dat de lasers elkaar verstoren, moeten de camera-opnamen met 160μs of meer van elkaar worden verschoven.
Voor elke dieptecamera-opname schakelt de laser negen keer in en is deze elke keer actief voor slechts 125μs. De laser is vervolgens inactief voor 1450μs of 2390μs, afhankelijk van de werkingsmodus. Dit gedrag betekent dat het beginpunt voor de offsetberekening 125μs is.
Daarnaast verhogen verschillen tussen de cameraklok en de firmwareklok van het apparaat de minimale verschuiving naar 160μs. Als u een nauwkeurigere offset voor uw configuratie wilt berekenen, moet u rekening houden met de dieptemodus die u gebruikt en verwijst u naar de onbewerkte tijdstabel voor de dieptesensor. Met behulp van de gegevens uit deze tabel kunt u de minimale offset (de belichtingstijd van elke camera) berekenen met behulp van de volgende vergelijking:
Blootstellingstijd = (IR-pulsen × pulse width) + (niet-actieve perioden × niet-actieve tijd)
Wanneer u een offset van 160μs gebruikt, kunt u maximaal negen extra dieptecamera's configureren, zodat elke laser wordt ingeschakeld terwijl de andere lasers niet actief zijn.
Gebruik depth_delay_off_color_usec
of subordinate_delay_off_master_usec
zorg ervoor dat elke IR-laser in een eigen venster van 160μs wordt geactiveerd of een ander weergaveveld heeft in uw software.
Notitie
De werkelijke polsbreedte is 125μs, maar we stellen 160us voor wat ruimte. Als u NFOV UNBINNED als voorbeeld neemt, wordt elke 125μs pulse gevolgd door 1450μs inactief. Het totaal van deze waarden - (9 x 125) + (8 x 1450) - levert de blootstellingstijd van 12,8 ms op. De kast die u kunt gebruiken om de belichting van 2 apparaten te interleave is om de eerste pulse van de tweede camera te laten vallen in de eerste niet-actieve periode van de eerste camera. De vertraging tussen de eerste en tweede camera kan zo weinig zijn als 125μs (de breedte van een puls) maar we raden enige ruimte aan vandaar de 160μs. Gezien 160μs kunt u de belichtingsperioden van maximaal 10 camera's interleaveen.
Uw apparaten en andere hardware voorbereiden
Naast meerdere Azure Kinect DK-apparaten moet u mogelijk extra hostcomputers en andere hardware ophalen om de configuratie te ondersteunen die u wilt bouwen. Gebruik de informatie in deze sectie om ervoor te zorgen dat alle apparaten en hardware gereed zijn voordat u begint met instellen.
Azure Kinect DK-apparaten
Ga als volgt te werk voor elk Azure Kinect DK-apparaat dat u wilt synchroniseren:
- Zorg ervoor dat de meest recente firmware op het apparaat is geïnstalleerd. Ga naar Azure Kinect DK-firmware bijwerken voor meer informatie over het bijwerken van uw apparaten.
- Verwijder het apparaatdeksel om de synchronisatiepoorten weer te geven.
- Noteer het serienummer voor elk apparaat. U gebruikt dit nummer later in het installatieproces.
Hostcomputers
Normaal gesproken gebruikt elke Azure Kinect DK een eigen hostcomputer. U kunt een toegewezen hostcontroller gebruiken, afhankelijk van hoe u het apparaat gebruikt en hoeveel gegevens via de USB-verbinding worden overgedragen.
Zorg ervoor dat de Azure Kinect Sensor SDK op elke hostcomputer is geïnstalleerd. Ga naar quickstart: Uw Azure Kinect DK instellen voor meer informatie over het installeren van de Sensor-SDK.
Linux-computers: USB-geheugen op Ubuntu
Standaard wijzen hostcomputers op basis van Linux de USB-controller slechts 16 MB aan kernelgeheugen toe om USB-overdrachten te verwerken. Dit bedrag is meestal voldoende om één Azure Kinect DK te ondersteunen. Om meerdere apparaten te ondersteunen, moet de USB-controller echter meer geheugen hebben. Voer de volgende stappen uit om het geheugen te vergroten:
- /etc/default/grub bewerken.
- Zoek de volgende regel:
Vervang deze door deze regel te gebruiken:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.usbfs_memory_mb=32"
Notitie
Met deze opdrachten wordt het USB-geheugen ingesteld op 32 MB. Dit is een voorbeeldinstelling van twee keer de standaardwaarde. U kunt een veel grotere waarde instellen, indien geschikt voor uw oplossing.
- Voer sudo update-grub uit.
- Start de computer opnieuw op.
Kabels
Als u de apparaten met elkaar en met de hostcomputers wilt verbinden, moet u 3,5 mm mannelijke naar mannelijke kabels (ook wel audiokabel van 3,5 mm genoemd) gebruiken. De kabels moeten minder dan 10 meter lang zijn en kunnen stereo of mono zijn.
Het aantal kabels dat u moet hebben, is afhankelijk van het aantal apparaten dat u gebruikt en ook de specifieke apparaatconfiguratie. Het Azure Kinect DK-vak bevat geen kabels. U moet ze afzonderlijk aanschaffen.
Als u de apparaten in de sterconfiguratie aansluit, moet u ook één hoofdtelefoonsplitser hebben.
Uw apparaten verbinden
Azure Kinect DK-apparaten verbinden in een daisy-ketenconfiguratie
- Verbind elke Azure Kinect DK met stroom.
- Verbind elk apparaat met de host-pc.
- Selecteer één apparaat om het hoofdapparaat te zijn en sluit een audiokabel van 3,5 mm aan op de poort synchroniseren .
- Sluit het andere uiteinde van de kabel aan op de synchronisatiepoort van het eerste onderliggende apparaat.
- Als u een ander apparaat wilt aansluiten, sluit u een andere kabel aan op de poort Synchroniseren van het eerste onderliggende apparaat en op de synchronisatiepoort van het volgende apparaat.
- Herhaal de vorige stap totdat alle apparaten zijn verbonden. Het laatste apparaat mag slechts één kabelverbinding hebben. De synchronisatiepoort moet leeg zijn.
Azure Kinect DK-apparaten verbinden in een sterconfiguratie
- Verbind elke Azure Kinect DK met stroom.
- Verbind elk apparaat met de host-pc.
- Selecteer één apparaat om het hoofdapparaat te zijn en sluit het enkele uiteinde van de hoofdtelefoonsplitser aan op de poort synchroniseren .
- Sluit 3,5 mm audiokabels aan op de splitseinden van de hoofdtelefoonsplitser.
- Sluit het andere uiteinde van elke kabel aan op de synchronisatiepoort van een van de onderliggende apparaten.
Controleer of de apparaten zijn verbonden en communiceren
Gebruik Azure Kinect Viewer om te controleren of de apparaten correct zijn verbonden. Herhaal deze procedure indien nodig om elk ondergeschikt apparaat te testen in combinatie met het hoofdapparaat
Belangrijk
Voor deze procedure moet u het serienummer van elke Azure Kinect DK weten.
- Open twee exemplaren van Azure Kinect Viewer.
- Selecteer onder Apparaat openen het serienummer van het onderliggende apparaat dat u wilt testen.
Belangrijk
Als u een nauwkeurige uitlijning van afbeeldingen tussen alle apparaten wilt krijgen, moet u het hoofdapparaat voor het laatst starten.
- Selecteer Sub onder Externe synchronisatie.
- Selecteer Starten.
Notitie
Omdat dit een ondergeschikt apparaat is, wordt in Azure Kinect Viewer geen afbeelding weergegeven nadat het apparaat is gestart. Er wordt geen afbeelding weergegeven totdat het onderliggende apparaat een synchronisatiesignaal van het hoofdapparaat ontvangt.
- Nadat het onderliggende apparaat is gestart, gebruikt u het andere exemplaar van Azure Kinect Viewer om het hoofdapparaat te openen.
- Selecteer Master onder Externe synchronisatie.
- Selecteer Starten.
Wanneer het Azure Kinect-hoofdapparaat wordt gestart, moeten beide exemplaren van Azure Kinect Viewer afbeeldingen weergeven.
De apparaten kalibreren als een gesynchroniseerde set
Nadat u hebt gecontroleerd of de apparaten correct communiceren, kunt u ze kalibreren om afbeeldingen in één domein te produceren.
In één apparaat zijn de diepte- en RGB-camera's gekalibreerd om samen te werken. Wanneer meerdere apparaten echter moeten samenwerken, moeten ze worden gekalibreerd om te bepalen hoe een afbeelding moet worden getransformeerd van het domein van de camera die deze heeft vastgelegd in het domein van de camera die u wilt gebruiken om afbeeldingen te verwerken.
Er zijn meerdere opties voor kruislings kalibreren van apparaten. Microsoft biedt het codevoorbeeld voor het groene scherm van GitHub, dat gebruikmaakt van de OpenCV-methode. Het Leesmij-bestand voor dit codevoorbeeld bevat meer informatie en instructies voor het kalibreren van de apparaten.
Zie Azure Kinect-kalibratiefuncties gebruiken voor meer informatie over kalibratiefuncties van Azure Kinect.
Volgende stappen
Nadat u gesynchroniseerde apparaten hebt ingesteld, kunt u ook leren hoe u de