Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Każde urządzenie Azure Kinect DK zawiera porty synchronizacji 3,5 mm (synchronizacja wejścia i synchronizacja wyjścia), których można używać do łączenia wielu urządzeń. Po nawiązaniu połączenia z urządzeniami oprogramowanie może koordynować czas wyzwalania między nimi.
W tym artykule opisano, jak połączyć i zsynchronizować urządzenia.
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 tworzą pojedynczy obraz, dwie kamery (głębokości i RGB) znajdują się w rzeczywistości w niewielkiej odległości od siebie. Przesunięcie sprawia, że okluzji są możliwe. Okuluzja występuje, gdy obiekt pierwszego planu blokuje widok części obiektu tła dla jednej z dwóch kamer na urządzeniu. W wynikowym kolorowym obrazie 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".
Dodatkowe zsynchronizowane urządzenia mogą udostępniać zamaskowane dane. - Skanuj obiekty w trzech wymiarach.
- Zwiększ efektywną szybkość klatek na wartość większą niż 30 klatek na sekundę (FPS).
- Przechwyć wiele kolorowych obrazów 4K tej samej sceny, wszystkie zsynchronizowane w ciągu 100 mikrosekund (μs) od środka ekspozycji.
- Zwiększ zasięg kamery w przestrzeni.
Planowanie konfiguracji wielu urządzeń
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 / Notatka
Usuń zewnętrzną osłonę z tworzyw sztucznych, aby odsłonić gniazda Sync In i Sync Out.
Wybieranie konfiguracji urządzenia
Możesz użyć jednej z następujących metod konfiguracji urządzenia:
-
Konfiguracja łańcucha daisy. Synchronizuj jedno urządzenie główne i maksymalnie osiem podrzędnych urządzeń.
-
Konfiguracja gwiazdy. Zsynchronizuj jedno urządzenie główne i maksymalnie dwa urządzenia podrzędne.
Korzystanie z 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żna na przykład użyć tej opcji, aby zsynchronizować przechwytywanie obrazów z innym sprzętem. W konfiguracji daisy-chain 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:
- Stan aktywny wysoki
- Szerokość impulsu: większa niż 8μs
- 5V TTL/CMOS
- Maksymalna pojemność jazdy: nie mniej niż 8 miliamps (mA)
- Obsługa częstotliwości: dokładnie 30 FPS, 15 FPS i 5 FPS (częstotliwość głównego sygnału VSYNC kamery kolorowej)
Źródło wyzwalacza musi dostarczyć sygnał do portu Sync in głównego urządzenia przy użyciu kabla audio 3,5 mm. Możesz użyć kabla stereo lub mono. Zestaw Azure Kinect DK zwiera wszystkie rękawy i pierścienie łącznika audio i je uziemia. Jak pokazano na poniższym diagramie, urządzenie odbiera sygnał synchronizacji tylko z końcówki łącznika.
Aby uzyskać więcej informacji na temat pracy ze sprzętem zewnętrznym, zobacz Używanie rejestratora Azure Kinect z zewnętrznymi zsynchronizowanymi urządzeniami
Uwaga / Notatka
Sync Out to funkcja podobna do VSync dla kamery RGB. Znaczniki czasu dla wszystkich urządzeń są ustawione na zero i zaczynają się liczyć w górę. Microsoft nie scharakteryzowała minimalnej i maksymalnej szerokości impulsu synchronizacji i zaleca naśladowanie impulsu wygenerowanego przez Sync Out z urządzenia Azure Kinect DK.
Planowanie ustawień aparatu i konfiguracji oprogramowania
Aby uzyskać informacje o sposobie konfigurowania oprogramowania w celu kontrolowania kamer 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 na pojedyncze urządzenia). Oprogramowanie powinno uwzględniać te czynniki.
Zagadnienia dotyczące ekspozycji
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 obrazów 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 kamer głębinowych obrazuje nakładające się pola widzenia, każdy aparat musi obrazować własny skojarzony laser. Aby zapobiec ingerowaniu laserów w siebie nawzajem, rejestracja obrazów powinna być przesunięta względem siebie o 160 μs lub więcej.
Dla każdego uchwycenia kamery głębi, laser włącza się dziewięć razy i jest aktywny tylko przez 125 μs za każdym razem. Laser jest następnie bezczynny przez 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ą czasów surowych pomiarów 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ć maksymalnie dziewięć dodatkowych kamer głębi, aby każdy laser włączał się, podczas gdy inne lasery są bezczynne.
W oprogramowaniu użyj 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 czasowym 160µs lub ma inne pole widzenia.
Uwaga / Notatka
Rzeczywista szerokość impulsu wynosi 125μs, jednak określamy 160us, aby zapewnić trochę swobody. Biorąc NFOV UNBINNED jako przykład, każdy impuls 125μs jest następnie połączony z 1450μs bezczynności. Suma tych wartości - (9 x 125) + (8 x 1450) - daje czas ekspozycji 12,8 ms. Najbliższe możliwe zsynchronizowanie ekspozycji dwóch urządzeń polega na upewnieniu się, że pierwszy impuls drugiej kamery pojawia się w pierwszym okresie bezczynności pierwszej kamery. Opóźnienie między pierwszą a drugą kamerą może wynosić zaledwie 125μs (szerokość impulsu), jednak zalecamy pewien margines bezpieczeństwa, 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 Zestawu 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 główne
Zazwyczaj każdy zestaw Azure Kinect DK używa własnego komputera hostującego. Można użyć dedykowanego kontrolera hosta, w zależności od sposobu korzystania z urządzenia i ilości danych przesyłanych za pośrednictwem połączenia 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 oparte na systemie Linux przydzielają kontroler 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:
- Edytuj /etc/default/grub.
- Znajdź następujący wiersz:
Zastąp go przy użyciu tego wiersza:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.usbfs_memory_mb=32"Uwaga / Notatka
Te polecenia ustawiają pamięć USB na 32 MB. Jest to przykładowe ustawienie na poziomie dwukrotnie przekraczającym wartość domyślną. Możesz ustawić znacznie większą wartość zgodnie z potrzebami rozwiązania.
- Uruchom sudo update-grub.
- Uruchom ponownie komputer.
Kable
Aby połączyć urządzenia ze sobą i z komputerami-hostami, należy użyć kabla audio 3,5 mm typu męski-męski (znanego również jako kabel audio 3,5 mm). Kable powinny być krótsze niż 10 metrów i mogą być stereo lub mono.
Liczba kabli, które musisz mieć, zależy od liczby urządzeń, z których korzystasz, a także od określonej konfiguracji Twojego urządzenia. Pudełko Azure Kinect DK nie zawiera kabli. Należy je kupić oddzielnie.
Jeśli połączysz urządzenia w konfiguracji gwiazdy, będziesz potrzebować również jednego rozdzielacza słuchawek.
Łączenie urządzeń
Aby połączyć urządzenia Azure Kinect DK w konfiguracji łańcucha daisy
- Połącz każdy zestaw Azure Kinect DK z zasilaniem.
- Połącz każde urządzenie z komputerem hosta.
- Wybierz jedno urządzenie, które ma być urządzeniem głównym, i podłącz kabel audio 3,5 mm do jego portu Wyjście synchronizacji.
- Podłącz drugi koniec kabla do portu Sync in pierwszego podrzędnego urządzenia.
- Aby podłączyć inne urządzenie, podłącz inny kabel do portu Sync out pierwszego podrzędnego urządzenia, a następnie do portu Sync in następnego urządzenia.
- Powtórz poprzedni krok do momentu połączenia wszystkich urządzeń. Ostatnie urządzenie powinno mieć tylko jedno połączenie kablowe. Port Sync Out powinien być pusty.
Aby połączyć urządzenia Azure Kinect DK w konfiguracji gwiazdy
- Połącz każdy zestaw Azure Kinect DK z zasilaniem.
- Połącz każde urządzenie z komputerem hosta.
- Wybierz jedno urządzenie, które ma być urządzeniem głównym, i podłącz pojedynczy koniec rozdzielacza słuchawek do portu wyjście synchronizacji.
- Podłącz audio 3,5 mm do "podzielonych" końców rozdzielaczy słuchawek.
- Podłącz drugi koniec każdego kabla do portu Sync in jednego z podrzędnych urządzeń.
Sprawdź, czy urządzenia są połączone i komunikują się
Aby sprawdzić, czy urządzenia są poprawnie połączone, użyj przeglądarki 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 tej procedurze musisz znać numer seryjny każdego zestawu Azure Kinect DK.
- Otwórz dwa wystąpienia programu Azure Kinect Viewer.
- W obszarze Otwórz urządzenie wybierz numer seryjny urządzenia podrzędnego, które chcesz przetestować.
Ważne
Aby uzyskać dokładne dopasowanie przechwytywania obrazów między wszystkimi urządzeniami, musisz uruchomić urządzenie główne na końcu.
- W obszarze Synchronizacja zewnętrzna wybierz pozycję Sub.
- Wybierz Start.
Uwaga / Notatka
Ponieważ jest to urządzenie podrzędne, przeglądarka Azure Kinect Viewer nie wyświetla obrazu po uruchomieniu urządzenia. Obraz nie jest wyświetlany do momentu odebrania przez urządzenie podrzędne sygnału synchronizacji z urządzenia głównego.
- Po uruchomieniu urządzenia podrzędnego użyj innego wystąpienia programu Azure Kinect Viewer, aby otworzyć urządzenie główne.
- W obszarze Synchronizacja zewnętrzna wybierz pozycję Wzorzec.
- Wybierz Start.
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 jeśli 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 krzyżowej kalibracji urządzeń. Firma Microsoft udostępnia przykładowy kod z zielonym ekranem usługi GitHub, który używa metody OpenCV. Plik Readme dla tego przykładu kodu zawiera więcej szczegółów i instrukcji dotyczących kalibrowania urządzeń.
Aby uzyskać więcej informacji na temat kalibracji, zobacz Korzystanie z funkcji kalibracji zestawu Azure Kinect.
Dalsze kroki
Po skonfigurowaniu zsynchronizowanych urządzeń możesz również dowiedzieć się, jak używać