Использование Multiple Kinect v2 на одном ПК
В настоящее время я пытаюсь использовать несколько Kinect v2.0s как часть моей диссертации. Я огляделся по этому вопросу и знаю о проблеме с пропускной способностью USB, поэтому два Kinect, которые я сейчас использую, находятся на разных контроллерах USB.
У меня проблема в том, что как часть GetDefault()
Функция (2.0 SDK), как следует из названия, просто получает Kinect по умолчанию. Есть ли способ определить, какой Kinect "получить", или определить, какой Kinect является "по умолчанию"? (Я знаю, что SDK допускает только один, но я исследую идею иметь отдельное приложение, обрабатывающее каждый Kinect).
Спасибо заранее за любые данные.
3 ответа
Используя Microsoft SDK, у вас нет возможности использовать несколько Kinect2 на одном ПК:
Получение и запуск датчиков
Kinect для Windows поддерживает один датчик, который называется датчиком по умолчанию. Класс KinectSensor имеет статические элементы, помогающие настроить датчик Kinect и получить доступ к данным датчика.
Мы пробовали похожие вещи, но в итоге мы остановились на клиент-серверном решении, где дополнительные Kinects подключаются к клиентским ПК. Но даже здесь вы должны быть осторожны, если эти Kinects используются в одной комнате - датчики могут улавливать свет от других излучателей! (см. здесь, например: Помехи между несколькими Kinects).
Еще одна вещь, которую вы должны иметь в виду при работе с клиент-серверным решением - Kinect не очень хорошо обрабатывает подключения к удаленному рабочему столу:
Удаленный рабочий стол
Если вы получаете доступ к Kinect с помощью удаленного рабочего стола, вы должны изменить настройки звука на удаленном рабочем столе, чтобы "играть на удаленном компьютере". Если вы этого не сделаете, среда выполнения не сможет видеть аудиоустройство и может запретить подключение к Kinect. ( 2.0 SDK и известные проблемы разработчика)
Другой способ, которым вы могли бы выбрать, - это использовать OpenKinect, который должен поддерживать несколько камер ( здесь, здесь, здесь,...), но всего этого тоже не так просто достичь. Кроме того, во время наших тестов мы заметили, что значения глубины различаются при использовании официального Microsoft SDK или библиотеки с открытым исходным кодом, поскольку в официальном SDK происходит много волшебства черного ящика.
Рассматривали ли вы параллельную работу виртуальной машины на своей машине? Просто попросите виртуальную машину игнорировать порт USB, на котором включен один из kinects, чтобы виртуальная машина вынуждена была использовать другой.
Это может потребовать гораздо большей вычислительной мощности, чем просто их подключить, но это должно работать, особенно если вы пытаетесь использовать их для двух разных программ.
Kinect для Windows поддерживается только для виртуальных машин (не включая Kinect для Xbox One и Kinect для 360 с адаптерами)