Синхронизация нескольких устройств Azure Kinect DK

Каждое устройство Azure Kinect DK имеет порты синхронизации 3,5 мм (Синх. входа и Синх. выхода), которые можно использовать для подключения нескольких устройств друг с другом. После подключения устройств ПО может координировать время срабатывания триггера между ними.

В этой статье описывается подключение и синхронизация устройств.

Преимущества использования нескольких устройств Azure Kinect DK

Существует множество причин использования нескольких устройств Azure Kinect DK, включая следующее.

  • Заполнение окклюзии. Хотя преобразование данных Azure Kinect DK создает единое изображение, две камеры (глубина и RGB) на самом деле находятся на небольшом расстоянии друг от друга. Смещение делает возможной окклюзию. Окклюзия возникает, когда объект переднего плана блокирует отображение части фонового объекта для одной из двух камер на устройстве. В полученном цветном изображении кажется, что объект переднего плана отбрасывает тень на фоновый объект.
    Например, на следующей диаграмме левая камера фиксирует серый пиксель "P2". Однако белый объект переднего плана блокирует правую ИК-форму камеры на стороне. На правой камере отсутствуют данные для "P2".
    Diagram shows two cameras directed at the same point with one of them blocked.
    Дополнительные синхронизированные устройства могут предоставлять данные окклюзии.
  • Сканирование объектов в трех измерениях.
  • Увеличьте эффективную частоту кадров до значения, превышающего 30 кадров в секунду (кадров/с).
  • Запишите несколько 4-килобайтных цветовых изображений одной сцены, все из которых должны быть выровнены в пределах 100 микросекунд (мкс) относительно центра экспозиции.
  • Увеличьте покрытие камеры в пределах пространства.

Планирование конфигурации для нескольких устройств

Прежде чем начать, убедитесь, что вы просмотрели спецификации оборудования Azure KINECT DK и уточнили глубину для камеры Azure Kinect DK.

Примечание

Удалите внешнюю пластиковую крышку, чтобы получить доступ ко входу и выходу для синхронизации.

Выбор конфигурацию устройства

Для конфигурации устройства можно использовать один из следующих подходов.

  • Конфигурация по типу последовательной цепочки. Синхронизация одного главного устройства и до восьми подчиненных устройств.
    Diagram that shows how to connect Azure Kinect DK devices in a daisy-chain configuration.
  • Конфигурация по типу звезды. Синхронизация одного главного устройства и до двух подчиненных устройств.
    Diagram that shows how to set up multiple Azure DK devices in a star configuration.

Использование внешнего триггера синхронизации

В обеих конфигурациях основное устройство подает сигнал активации для подчиненных устройств. Однако для триггера синхронизации можно использовать внешний пользовательский источник. Например, этот параметр можно использовать для синхронизации захвата изображений с помощью другого оборудования. В конфигурации по типу последовательной цепочки или звезды источник внешнего триггера подключается к главному устройству.

Источник внешнего триггера должен функционировать так же, как и основное устройство. Он должен доставлять сигнал синхронизации со следующими характеристиками.

  • Активный высокий уровень
  • Ширина импульса: больше 8 мкс
  • TTL/CMOS 5 В
  • Максимальная мощность: не менее 8 мА
  • Поддерживаемые частоты: 30, 15 и 5 кадров/с (частота основного сигнала VSYNC цветной камеры)

Источник триггера должен передать сигнал в порт Синх. входа главного устройства по звуковому кабелю 3,5 мм. Вы можете использовать кабель для стерео- или моносигнала. В Azure Kinect DK замыкает все контакты разъема аудиокабеля и заземляет их. Как показано на следующей схеме, устройство получает сигнал синхронизации только от соединителя.

Cable configurations for an external trigger signal

Дополнительные сведения о работе с внешним оборудованием см. в статье Использование средства записи Azure Kinect с внешними синхронизированными устройствами.

Примечание

Синхронизация выхода — это вертикальная синхронизация камеры RGB. Метки времени для всех устройств устанавливаются на ноль, и начинается отсчет. Корпорация Майкрософт не рассматривает минимальную и максимальную ширину импульса синхронизации и рекомендует имитировать импульс, созданный для синхронизации выхода в Azure Kinect DK.

Планирование параметров камеры и конфигурации программного обеспечения

Сведения о том, как настроить ПО для управления камерами и использования данных изображения, см. в разделе Пакет средств разработки для датчиков Azure Kinect.

В этом разделе описаны некоторые факторы, влияющие на синхронизированные устройства (и не влияющие на отдельные устройства). Программное обеспечение должно учитывать эти факторы.

Рекомендации по экспозиции

Если требуется точно управлять временем для каждого устройства, рекомендуется использовать параметры ручной настройки экспозиции. В настройках автоматической экспозиции каждая цветная камера может динамически менять фактическую экспозицию. Так как экспозиция влияет на время, такие изменения прерывают синхронизацию камеры.

В цикле записи изображений не следует неоднократно задавать один и тот же параметр экспозиции. Вызывайте API-интерфейс только один раз, когда он требуется.

Предотвращение помех между несколькими камерами глубины

Если несколько камер глубины создают поля зрения, которые перекрывают друг друга, каждая камера должна получить изображение с соответствующего лазера. Чтобы избежать взаимных помех лазерных лучей, записи камеры должны быть смещены друг от друга на 160 мкс или более.

Для каждой записи на камере глубины лазер поворачивается девять раз и каждый раз включается только на 125 мкс. В зависимости от режима работы лазер бездействует 1450 мкс или 2390 мкс. Такое поведение означает, что начальная точка для вычисления смещения — 125 мкс.

Кроме того, различия между часами камеры и часами встроенного ПО устройства увеличивают минимальное смещение до 160 мкс. Чтобы вычислить более точное смещение, обратите внимание на используемый режим глубины, и посмотрите таблицу Время синхронизации необработанных данных датчика глубины. Используя данные из этой таблицы, можно вычислить минимальное смещение (время выдержки каждой камеры), используя следующее уравнение.

Время экспозиции = (ИК-импульс × ширина импульса) + (период простоя × время простоя)

При использовании смещения на 160 мкс можно настроить до девяти камер глубины таким образом, чтобы каждый лазер включался во время бездействия других лазеров.

В программном обеспечении используйте depth_delay_off_color_usec или subordinate_delay_off_master_usec, чтобы убедиться, что каждый ИК-лазер срабатывает в своем собственном окне 160 мкс или использует другое поле зрения.

Примечание

Фактическая ширина составляет 125 мкс, но мы указываем 160 мкс, чтобы учесть некоторые отклонения. Возьмем в качестве примера NFOV без привязки, после каждого импульса 125 мкс следует промежуток бездействия 1450 мкс. Общая сумма (9 x 125) + (8 x 1450) — дает время на экспозиции 12,8 мс. Вы можете чередовать экспозицию двух устройств, чтобы первый импульс второй камеры попадал в первый период простоя первой камеры. Задержка между первой и второй камерами может составлять всего 125 мкс (ширина импульса), однако мы рекомендуем оставить небольшой свободный промежуток, то есть взять значение 160 мкс. Учитывая значение 160 мкс, можно чередовать периоды экспозиции максимум для 10 камер.

Подготовка устройств и другого оборудования

В дополнение к нескольким устройствам Azure Kinect DK вам могут потребоваться дополнительные главные компьютеры и другое оборудование для поддержки создаваемой конфигурации. Прежде чем начать настройку, используйте сведения в этом разделе, чтобы убедиться, что все устройства и оборудование готовы к работе.

Устройства Azure Kinect DK

Для каждого устройства Azure Kinect DK, которое необходимо синхронизировать, выполните следующие действия.

  • Убедитесь, что на устройстве установлена последняя версия встроенного ПО. Дополнительные сведения об обновлении устройств см. в статье Обновление встроенного по Azure Kinect DK.
  • Снимите крышку, чтобы отобразить порты синхронизации.
  • Запишите серийный номер для каждого устройства. Этот номер будет использоваться позже в процессе установки.

Главные компьютеры

Как правило, каждый Azure Kinect DK использует собственный главный компьютер. В зависимости от способа использования устройства и объема данных, передаваемых через USB-подключение, можно использовать выделенный контроллер узла.

Убедитесь, что на каждом главном компьютере установлен пакет средств разработки для датчиков Azure Kinect. Дополнительные сведения об установке этого пакета см. в статье Краткое руководство. Настройка Azure Kinect DK.

Компьютеры Linux: память USB на Ubuntu

По умолчанию главные компьютеры под управлением Linux выделяют для контроллера USB только 16 МБ памяти ядра для передачи данных по USB. Обычно этого объема достаточно для поддержки одного устройства Azure Kinect DK. Однако для поддержки нескольких устройств USB-контроллеру требуется больше памяти. Чтобы увеличить объем памяти, выполните следующие действия.

  1. Edit /etc/default/grub.
  2. Найдите следующую строку:
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    
    Замените ее, используя следующую строку:
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.usbfs_memory_mb=32"
    

    Примечание

    Эти команды устанавливают для USB-памяти значение 32 МБ. Это в два раза больше значения по умолчанию. Можно задать и гораздо большее значение, соответствующее вашему решению.

  3. Выполните команду sudo update-grub.
  4. Перезагрузите компьютер.

Кабели

Чтобы подключить устройства друг к другу и к основному компьютеру, необходимо использовать кабели "штекер-штекер" 3,5-мм (его также называют "звуковой кабель 3,5-мм"). Кабели могут быть моно или стерео, и их длина должна быть меньше 10 метров.

Количество кабелей зависит от количества используемых устройств, а также от конкретной конфигурации устройства. В комплект Azure Kinect DK не входят кабели. Их необходимо покупать отдельно.

При подключении устройств в конфигурации по типу звезда необходимо также иметь один разделитель для наушников.

Подключение устройств

Подключение устройств Azure Kinect DK в конфигурации по типу последовательной цепочки

  1. Подключите каждый Azure Kinect DK к электросети.
  2. Подключите каждое устройство к главному компьютеру.
  3. Выберите одно устройство в качестве главного и подключите звуковой кабель 3,5 мм к его порту Синх. выхода.
  4. Подключите другой конец кабеля к порту Синх. входа первого подчиненного устройства.
  5. Чтобы подключить другое устройство, подключите другой кабель к порту Синх. выхода первого подчиненного устройства и порту Синх. входа следующего устройства.
  6. Повторите предыдущий шаг, пока не будут подключены все устройства. У последнего устройства должно быть только одно кабельное подключение. Порт Синх. выхода должен быть пустым.

Подключение устройств Azure Kinect DK в конфигурацию по типу звезды

  1. Подключите каждый Azure Kinect DK к электросети.
  2. Подключите каждое устройство к главному компьютеру.
  3. Выберите одно устройство в качестве главного и подключите один конец разделителя для наушников к порту Синх. выхода.
  4. Подключите аудиоразъемы 3,5 мм к разъемам разветвителя для наушников.
  5. Подключите другой конец каждого кабеля к порту Синх. входа одного из подчиненных устройств.

Убедитесь, что устройства подключены и обмениваются данными

Чтобы убедиться, что устройства подключены правильно, используйте Средство просмотра Kinect для Azure. При необходимости повторите эту процедуру, чтобы протестировать каждое подчиненное устройство вместе с главным устройством.

Важно!

Для этой процедуры необходимо получить серийный номер каждого устройства Azure Kinect DK.

  1. Откройте два экземпляра средства просмотра Kinect Azure.
  2. В разделе Открытое устройство выберите серийный номер подчиненного устройства, которое требуется протестировать.
    Open device

    Важно!

    Чтобы обеспечить точное согласование захвата изображения для всех устройств, необходимо последним запустить главное устройство.

  3. В разделе Внешняя синхронизация выберите Подчиненный.
    Subordinate camera start
  4. Щелкните Запуск.

    Примечание

    Поскольку устройство является подчиненным, в средстве просмотра Azure Kinect после его запуска изображение не отображается. Изображение не отображается, пока подчиненное устройство не получит сигнал синхронизации от главного устройства.

  5. После запуска подчиненного устройства используйте другой экземпляр средства просмотра Azure Kinect, чтобы открыть основное устройство.
  6. В разделе Внешняя синхронизация выберите Главное.
  7. Щелкните Запуск.

При запуске главного устройства Azure Kinect в обоих экземплярах средства просмотра Azure Kinect должны отображаться изображения.

Калибровка устройств в качестве синхронизированного набора

Если устройства правильно обмениваются данными, их можно откалибровать для создания изображений в одном домене.

Для совместной работы на одном устройстве камеры глубины и RGB откалиброваны на заводе. Однако, когда несколько устройств должны работать вместе, их необходимо откалибровать, чтобы определить, как преобразовать изображение из домена камеры, которая его записала, в домен камеры, которую вы хотите использовать для обработки изображений.

Существует несколько вариантов включения устройств в Azure AD. Корпорация Майкрософт предоставляет пример кода зеленого экрана GitHub, в котором используется метод OpenCV. В файле Readme для этого примера кода содержатся дополнительные сведения и инструкции по калибровке устройств.

Дополнительные сведения о калибровке см. в статье Использование функций калибровки Azure Kinect.

Дальнейшие действия

После настройки синхронизированных устройств можно также узнать о том, как использовать