Udostępnij za pośrednictwem


Synchronizowanie wielu urządzeń Azure Kinect DK

Każde urządzenie Azure Kinect DK zawiera porty synchronizacji 3,5 mm (synchronizacja w i synchronizacja), których można używać do łączenia wielu urządzeń. Po połączeniu urządzeń oprogramowanie może koordynować czas wyzwalacza między nimi.

W tym artykule opisano sposób nawiązywania połączenia i synchronizowania urządzeń.

Zalety korzystania z wielu urządzeń Azure Kinect DK

Istnieje wiele powodów używania wielu urządzeń Azure Kinect DK, w tym następujących:

  • Wypełnij okluzji. Chociaż przekształcenia danych zestawu Azure Kinect DK generują pojedynczy obraz, dwa aparaty (głębokość i RGB) są w rzeczywistości niewielką odległością od siebie. Przesunięcie sprawia, że okluzji są możliwe. Oklusja występuje, gdy obiekt pierwszego planu blokuje widok części obiektu tła dla jednego z dwóch aparatów na urządzeniu. W wynikowym obrazie koloru obiekt pierwszego planu wydaje się rzucać cień na obiekt tła.
    Na przykład na poniższym diagramie aparat po lewej stronie widzi szary piksel "P2". Jednak biały obiekt pierwszego planu blokuje belkę IR kamery po prawej stronie. Aparat po prawej stronie nie ma danych dla "P2".
    Diagram przedstawia dwie kamery skierowane w tym samym punkcie z jednym z nich zablokowanym.
    Dodatkowe zsynchronizowane urządzenia mogą udostępniać dane occluded.
  • Skanuj obiekty w trzech wymiarach.
  • Zwiększ efektywną szybkość klatek na wartość większą niż 30 ramek na sekundę (FPS).
  • Przechwyć wiele obrazów kolorów 4K tej samej sceny, wszystkie wyrównane do 100 mikrosekund (μs) środka ekspozycji.
  • Zwiększ zasięg kamery w przestrzeni.

Planowanie konfiguracji z wieloma urządzeniami

Przed rozpoczęciem upewnij się, że zapoznasz się ze specyfikacjami sprzętu zestawu Azure Kinect DK i aparatem głębokości zestawu Azure Kinect DK.

Uwaga

Zdejmij zewnętrzną plastikową pokrywę, aby odsłonić gniazda Synchronizacja w i Wysynchronizuj.

Wybieranie konfiguracji urządzenia

W konfiguracji urządzenia można użyć jednej z następujących metod:

  • Konfiguracja łańcucha daisy. Zsynchronizuj jedno urządzenie główne i maksymalnie osiem urządzeń podrzędnych.
    Diagram przedstawiający sposób łączenia urządzeń Azure Kinect DK w konfiguracji łańcucha daisy.
  • Konfiguracja gwiazdy. Zsynchronizuj jedno urządzenie główne i maksymalnie dwa urządzenia podrzędne.
    Diagram przedstawiający sposób konfigurowania wielu urządzeń azure DK w konfiguracji gwiazdy.

Używanie wyzwalacza synchronizacji zewnętrznej

W obu konfiguracjach urządzenie główne zapewnia sygnał wyzwalający dla urządzeń podrzędnych. Można jednak użyć niestandardowego źródła zewnętrznego dla wyzwalacza synchronizacji. Możesz na przykład użyć tej opcji, aby zsynchronizować przechwytywanie obrazów z innym sprzętem. W konfiguracji łańcucha daisy lub konfiguracji gwiazdy źródło wyzwalacza zewnętrznego łączy się z urządzeniem głównym.

Źródło wyzwalacza zewnętrznego musi działać w taki sam sposób jak urządzenie główne. Musi dostarczyć sygnał synchronizacji, który ma następujące cechy:

  • Aktywna wysoka
  • Szerokość impulsu: większa niż 8μs
  • 5V TTL/CMOS
  • Maksymalna pojemność jazdy: nie mniej niż 8 miliamperów (mA)
  • Obsługa częstotliwości: Dokładnie 30 FPS, 15 FPS i 5 FPS (częstotliwość sygnału VSYNC głównego aparatu kolorów)

Źródło wyzwalacza musi dostarczyć sygnał do głównego urządzenia Sync w porcie przy użyciu kabla audio 3.5-mm. Można użyć kabla stereo lub mono. Zestaw Azure Kinect DK szortuje wszystkie rękawy i pierścienie łącznika kabla audio i łączy je. Jak pokazano na poniższym diagramie, urządzenie odbiera sygnał synchronizacji tylko z końcówki łącznika.

Konfiguracje kabli dla sygnału wyzwalacza zewnętrznego

Aby uzyskać więcej informacji na temat pracy ze sprzętem zewnętrznym, zobacz Używanie rejestratora Azure Kinect z zewnętrznymi synchronizowanymi urządzeniami

Uwaga

Synchronizacja out to VSync dla aparatu RGB. Znaczniki czasu dla wszystkich urządzeń są ustawione na zero i zliczają się. Firma Microsoft nie charakteryzuje minimalnej i maksymalnej szerokości impulsu synchronizacji i zaleca naśladowanie impulsu wygenerowanego przez synchronizację z zestawu Azure Kinect DK.

Planowanie ustawień aparatu i konfiguracji oprogramowania

Aby uzyskać informacje o sposobie konfigurowania oprogramowania w celu kontrolowania aparatów i używania danych obrazu, zobacz zestaw Azure Kinect Sensor SDK.

W tej sekcji omówiono kilka czynników wpływających na zsynchronizowane urządzenia (ale nie pojedyncze urządzenia). Oprogramowanie powinno wziąć pod uwagę te czynniki.

Zagadnienia dotyczące narażenia

Jeśli chcesz kontrolować dokładny czas każdego urządzenia, zalecamy użycie ustawienia ekspozycji ręcznej. W ramach automatycznego ustawienia ekspozycji każdy aparat kolorów może dynamicznie zmieniać rzeczywistą ekspozycję. Ponieważ ekspozycja wpływa na czas, takie zmiany szybko wypychają kamery z synchronizacji.

W pętli przechwytywania obrazu należy unikać wielokrotnego ustawiania tego samego ustawienia ekspozycji. Wywołaj interfejs API tylko raz, gdy jest potrzebny.

Unikanie interferencji między wieloma kamerami głębinowymi

Gdy wiele aparatów głębinowych obrazuje nakładające się pola widzenia, każdy aparat musi obrazować własny skojarzony laser. Aby zapobiec ingerowaniu laserów ze sobą, kamery powinny być przesunięte ze sobą o 160μs lub więcej.

Dla każdego przechwytywania kamery głębokości laser włącza się dziewięć razy i jest aktywny tylko przez 125μs za każdym razem. Laser jest następnie bezczynny dla 1450μs lub 2390μs, w zależności od trybu działania. To zachowanie oznacza, że punktem początkowym obliczenia przesunięcia jest 125μs.

Ponadto różnice między zegarem aparatu a zegarem oprogramowania układowego urządzenia zwiększają minimalne przesunięcie do 160μs. Aby obliczyć bardziej precyzyjne przesunięcie konfiguracji, zwróć uwagę na używany tryb głębokości i zapoznaj się z tabelą nieprzetworzonego chronometrażu czujnika głębokości. Korzystając z danych z tej tabeli, można obliczyć minimalne przesunięcie (czas ekspozycji każdego aparatu) przy użyciu następującego równania:

Czas ekspozycji = (impulsy IR × szerokość impulsu) + (okresy bezczynności × czas bezczynności)

Jeśli używasz przesunięcia 160μs, można skonfigurować do dziewięciu dodatkowych aparatów głębi, tak aby każdy laser włączał się, podczas gdy inne lasery są bezczynne.

W oprogramowaniu użyj polecenia depth_delay_off_color_usec lub subordinate_delay_off_master_usec , aby upewnić się, że każdy laser IR jest uruchamiany we własnym oknie 160μs lub ma inne pole widzenia.

Uwaga

Rzeczywista szerokość impulsu wynosi 125μs, jednak określamy 160us, aby zapewnić pewien odstęp. Biorąc NFOV UNBINNED jako przykład, każdy impuls 125μs następuje 1450μs bezczynności. Suma tych wartości - (9 x 125) + (8 x 1450) - daje czas ekspozycji 12,8 ms. Szafa, którą można przeplatać ekspozycji 2 urządzeń jest mieć pierwszy impuls drugiego aparatu spadnie w pierwszym okresie bezczynności pierwszego aparatu. Opóźnienie między pierwszymi i drugimi kamerami może wynosić zaledwie 125μs (szerokość impulsu), jednak zalecamy trochę swobody stąd 160μs. Biorąc pod uwagę 160μs można przeplatać okresy ekspozycji maksymalnie 10 kamer.

Przygotowywanie urządzeń i innego sprzętu

Oprócz wielu urządzeń Azure Kinect DK może być konieczne uzyskanie dodatkowych komputerów hosta i innego sprzętu w celu obsługi konfiguracji, którą chcesz skompilować. Skorzystaj z informacji w tej sekcji, aby upewnić się, że wszystkie urządzenia i sprzęt są gotowe przed rozpoczęciem konfigurowania.

Urządzenia Azure Kinect DK

Dla każdego urządzenia Azure Kinect DK, które chcesz zsynchronizować, wykonaj następujące czynności:

  • Upewnij się, że na urządzeniu zainstalowano najnowsze oprogramowanie układowe. Aby uzyskać więcej informacji na temat aktualizowania urządzeń, zobacz Aktualizowanie oprogramowania układowego Azure Kinect DK.
  • Usuń pokrywę urządzenia, aby wyświetlić porty synchronizacji.
  • Zanotuj numer seryjny dla każdego urządzenia. Ten numer będzie używany w dalszej części procesu instalacji.

Komputery-hosty

Zazwyczaj każdy zestaw Azure Kinect DK używa własnego komputera hosta. Można użyć dedykowanego kontrolera hosta, w zależności od sposobu korzystania z urządzenia i ilości danych przesyłanych przez połączenie USB.

Upewnij się, że zestaw Azure Kinect Sensor SDK jest zainstalowany na każdym komputerze hosta. Aby uzyskać więcej informacji na temat sposobu instalowania zestawu Sensor SDK, zobacz Szybki start: konfigurowanie zestawu Azure Kinect DK.

Komputery z systemem Linux: pamięć USB w systemie Ubuntu

Domyślnie komputery hosta z systemem Linux przydzielają kontrolerOWI USB tylko 16 MB pamięci jądra do obsługi transferów USB. Ta kwota jest zwykle wystarczająca do obsługi pojedynczego zestawu Azure Kinect DK. Jednak aby obsługiwać wiele urządzeń, kontroler USB musi mieć więcej pamięci. Aby zwiększyć ilość pamięci, wykonaj następujące kroki:

  1. Edytuj /etc/default/grub.
  2. Znajdź następujący wiersz:
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    
    Zastąp go przy użyciu tego wiersza:
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.usbfs_memory_mb=32"
    

    Uwaga

    Te polecenia ustawiają pamięć USB na 32 MB. Jest to przykładowe ustawienie o wartości domyślnej dwa razy. Dla rozwiązania można ustawić znacznie większą wartość.

  3. Uruchom polecenie sudo update-grub.
  4. Uruchom ponownie komputer.

Kable

Aby połączyć urządzenia ze sobą i z komputerami-hostami, należy użyć kabli 3,5 mm męskich do męskich (znanych również jako kabel audio 3,5 mm). Kable powinny być krótsze niż 10 metrów długości i mogą być stereo lub mono.

Liczba kabli, które należy mieć, zależy od liczby używanych urządzeń, a także od określonej konfiguracji urządzenia. Urządzenie Azure Kinect DK nie zawiera kabli. Należy je zakupić oddzielnie.

Jeśli połączysz urządzenia w konfiguracji gwiazdy, musisz również mieć jeden rozdzielacz słuchawek.

Łączenie urządzeń

Aby połączyć urządzenia Azure Kinect DK w konfiguracji łańcucha daisy

  1. Połącz każdy zestaw Azure Kinect DK z zasilaniem.
  2. Połącz każde urządzenie z komputerem hosta.
  3. Wybierz jedno urządzenie, które ma być urządzeniem głównym, i podłącz kabel audio 3,5 mm do portu Synchronizacja.
  4. Podłącz drugi koniec kabla do portu Synchronizacja pierwszego urządzenia podrzędnego.
  5. Aby podłączyć inne urządzenie, podłącz inny kabel do portu Synchronizuj z pierwszym urządzeniem podrzędnym i do portu Synchronizacja na następnym urządzeniu.
  6. Powtórz poprzedni krok, aż wszystkie urządzenia zostaną połączone. Ostatnie urządzenie powinno mieć tylko jedno połączenie kablowe. Port synchronizacji powinien być pusty.

Aby połączyć urządzenia Azure Kinect DK w konfiguracji gwiazdy

  1. Połącz każdy zestaw Azure Kinect DK z zasilaniem.
  2. Połącz każde urządzenie z komputerem hosta.
  3. Wybierz jedno urządzenie, które ma być urządzeniem głównym, i podłącz pojedynczy koniec rozdzielanego słuchawek do portu Synchronizacja.
  4. Podłącz kable audio 3,5 mm do "podziału" końców rozdzielaczy słuchawek.
  5. Podłącz drugi koniec każdego kabla do portu Synchronizacja jednego z urządzeń podrzędnych.

Sprawdź, czy urządzenia są połączone i komunikują się

Aby sprawdzić, czy urządzenia są prawidłowo połączone, użyj narzędzia Azure Kinect Viewer. Powtórz tę procedurę w razie potrzeby, aby przetestować każde urządzenie podrzędne w połączeniu z urządzeniem głównym

Ważne

W przypadku tej procedury należy znać numer seryjny każdego zestawu Azure Kinect DK.

  1. Otwórz dwa wystąpienia programu Azure Kinect Viewer.
  2. W obszarze Otwórz urządzenie wybierz numer seryjny urządzenia podrzędnego, które chcesz przetestować.
    Otwieranie urządzenia

    Ważne

    Aby uzyskać dokładne dopasowanie przechwytywania obrazów między wszystkimi urządzeniami, musisz uruchomić urządzenie główne jako ostatnie.

  3. W obszarze Synchronizacja zewnętrzna wybierz pozycję Pod.
    Rozpoczęcie aparatu podrzędnego
  4. Wybierz pozycję Uruchom.

    Uwaga

    Ponieważ jest to urządzenie podrzędne, program Azure Kinect Viewer nie wyświetla obrazu po uruchomieniu urządzenia. Obraz nie jest wyświetlany, dopóki urządzenie podrzędne nie otrzyma sygnału synchronizacji z urządzenia głównego.

  5. Po uruchomieniu urządzenia podrzędnego użyj innego wystąpienia programu Azure Kinect Viewer, aby otworzyć urządzenie główne.
  6. W obszarze Synchronizacja zewnętrzna wybierz pozycję Wzorzec.
  7. Wybierz pozycję Uruchom.

Po uruchomieniu głównego urządzenia Azure Kinect Oba wystąpienia programu Azure Kinect Viewer powinny wyświetlać obrazy.

Kalibrowanie urządzeń jako zsynchronizowanego zestawu

Po sprawdzeniu, czy urządzenia komunikują się prawidłowo, możesz je skalibrować w celu utworzenia obrazów w jednej domenie.

W jednym urządzeniu kamery głębi i RGB są kalibrowane fabrycznie, aby współpracować. Jednak gdy wiele urządzeń musi współpracować, muszą być skalibrowane w celu określenia, jak przekształcić obraz z domeny aparatu, który przechwycił go do domeny aparatu, którego chcesz użyć do przetwarzania obrazów.

Istnieje wiele opcji dla urządzeń kalibrowania krzyżowego. Firma Microsoft udostępnia przykładowy kod green screen usługi GitHub, który używa metody OpenCV. Plik Readme dla tego przykładowego kodu zawiera więcej szczegółów i instrukcje dotyczące kalibrowania urządzeń.

Aby uzyskać więcej informacji na temat kalibracji, zobacz Korzystanie z funkcji kalibracji zestawu Azure Kinect.

Następne kroki

Po skonfigurowaniu zsynchronizowanych urządzeń możesz również dowiedzieć się, jak używać