Openni «Не удалось перечислить один или несколько из следующих узлов»

#computer-vision #kinect #motion-detection #openni #primesense

#компьютерное зрение #kinect #обнаружение движения #openni #primesense

Вопрос:

Я установил последнюю версию openni и NITE в следующем порядке:

Openni 1.3.4.6 unstable development edition x64 NITE 1.4.2.5 unstable development edition x64 Датчик Avin2 kinect x64 из каталога ../platforms/win32

Я использую 64-разрядную версию Windows 7, подключил Kinect и не использую фиктивные узлы. При попытке запуска выдается ошибка: «Не удалось перечислить один или несколько из следующих узлов»

Мой modules.xml содержимое:

 <Modules>
    <Module path="C:OpenNIBin64nimRecorder64.dll" />
    <Module path="C:OpenNIBin64nimMockNodes64.dll" />
    <Module path="C:OpenNIBin64nimCodecs64.dll" />
    <Module path="C:PrimeSenseNITEFeatures_1_3_1Bin64XnVFeatures64_1_3_1.dll" configDir="C:PrimeSenseNITEFeatures_1_3_1Data" />
    <Module path="C:PrimeSenseNITEFeatures_1_4_1Bin64XnVFeatures64_1_4_1.dll" configDir="C:PrimeSenseNITEFeatures_1_4_1Data" />
    <Module path="C:PrimeSenseNITEFeatures_1_4_2Bin64XnVFeatures64_1_4_2.dll" configDir="C:PrimeSenseNITEFeatures_1_4_2Data" />
    <Module path="C:PrimeSenseNITEHands_1_3_1Bin64XnVHandGenerator64_1_3_1.dll" configDir="C:PrimeSenseNITEHands_1_3_1Data" />
    <Module path="C:PrimeSenseNITEHands_1_4_1Bin64XnVHandGenerator64_1_4_1.dll" configDir="C:PrimeSenseNITEHands_1_4_1Data" />
    <Module path="C:PrimeSenseNITEHands_1_4_2Bin64XnVHandGenerator64_1_4_2.dll" configDir="C:PrimeSenseNITEHands_1_4_2Data" />
</Modules>
  

Я также пытался использовать предыдущую версию OpenNI и NITE с тем же результатом. Я также ввел лицензионный ключ в SamplesConfig.xml и в нем нет других изменений. У него есть производственные узлы для изображения и глубины, и это все.

Я хотел бы знать, работают ли драйверы Avin2 sensor kinect с последними версиями openni. Каков порядок установки и какой драйвер мне установить, чтобы kinect работал с openni 1.3.4.6?

Спасибо

-Сиддхартх

Ответ №1:

  1. Проверьте, все ли библиотеки dll существуют
  2. Проверьте правильность вашего лицензионного ключа (для некоторых модулей требуется действующий лицензионный ключ). Зарегистрируйте это с помощью niReg команды
  3. Проверьте, что все configDir существуют, доступны для чтения, с их конфигурационными файлами внутри
  4. Немедленно остановите свою программу после context.InitFromXmlFile(strFileName, scriptNode, pErrors) (чтобы вы могли выполнить следующий шаг)
  5. Прокомментируйте все Module узлы. Ошибка должна исчезнуть, но теперь у вас есть нерабочая программа.
  6. Один за другим демонтируйте модули и проверьте, не появляется ли ошибка. Теперь вы знаете, что такое неисправный модуль.

Комментарии:

1. Извините за задержку с ответом, но вот что я исследовал: 1) Все библиотеки dll действительно существуют, я проверил с предыдущей сборкой openni. 2) Это меня озадачивает. Я думал, что мне не нужен лицензионный ключ для NITE, поскольку новейшие версии не требуют его ввода. В любом случае, я ввел лицензионный ключ в sampleConfig.xml использование тега license. 3) Я сталкивался с этой проблемой раньше, если я устанавливал openni в каталог program files. Я решил эту проблему, установив ее в корневой каталог, например C:OpenNI и C:PrimesenseNITE. Таким образом, у меня здесь нет проблем только для чтения.

2. 4) Сбой при инициализации из XMLFILE, но ошибка существует, даже если отключить kinect от моей системы, заставляя его думать, что это проблема с драйвером. 5 и 6) Сделал это, и я все еще получаю, что устройство primesense не обнаружено, а перечисленные узлы не созданы. Теперь я заметил, что на моем ноутбуке (который является HP elitebook 8760w) установлен USB-накопитель eSATA, 2 USB-накопителя ss и еще 2, которые, как я думаю, являются usb 2.0. После некоторого поиска я обнаружил, что kinect не работает с некоторыми портами usb 3.0?

3. В любом случае, не могли бы вы сообщить мне, в каком порядке вы установили свои openni, nite и драйверы? У вас есть драйверы сенсора kinect, драйверы avin2, в каталоге openni есть установщик драйверов. Что следует установить и в каком порядке? Спасибо

4. Я использую Linux и установил: OpenNI и Sensor. Они работают без карты NITE для глубины и простой точки касания. Когда мне понадобились более продвинутые функции, я установил NITE. Когда я установил NITE, он выдал мне сообщение «Не удалось перечислить один или более из следующих узлов», поскольку для этого требовалась действующая лицензия. Даже если лицензия была в файлах xml, ее необходимо было зарегистрировать в niReg . Вы проверили, какой модуль не может быть перечислен?

5. Я вроде понял, что произошло. Итак, я понял, что мне пришлось установить драйверы avin2, доступные в каталоге Bin, а не те, что в win32 platforms. Но после этого я начал получать ошибки о том, что не удалось создать разделяемую память. Мой ноутбук является офисным ноутбуком, и когда я вошел в систему как системный администратор, я, наконец, смог заставить образцы работать. Но когда я вошел в систему как локальный пользователь, произошел сбой и выдал мне ошибку. Похоже, у меня какие-то проблемы с разрешениями..

Ответ №2:

  1. Удалите все предыдущие драйверы kinect, если таковые имеются
  2. Загрузите драйвер avin2 с https://github.com/avin2/SensorKinect
  3. Выполнить SensorKinect-unstablePlatformWin32Driverdpinst-amd64.exe (или dpinst-x86.exe если ваша система 32-разрядная)

Затем запустите демонстрационную программу (NIViewer), чтобы проверить, все ли в порядке..

Вот и все..

Ответ №3:

В этой версии openni были ошибки с настройками UAC в Windows 7. Последняя версия openni, которая поддерживает калибровку без использования ПО умолчанию, работает «из коробки».

Ответ №4:

Я не знаю почему, но по какой-то причине стабильные версии OpenNI, промежуточного программного обеспечения и аппаратного обеспечения просто несовместимы с драйвером avin2.

Я использую Windows 7 x64, и когда я все удалил и перешел на нестабильные версии OpenNI, Nite и PrimeSense Sensor, он работал с 64-разрядным драйвером avin2 (SensorKinect093-Bin-Win64-v5.1.2.1.msi).

Таким образом, в основном, ИСПОЛЬЗУЙТЕ ТОЛЬКО НЕСТАБИЛЬНЫЕ ВЕРСИИ.