Как настроить OpenNI2 и NITE с помощью libfreenect2 для отслеживания скелета в OSX?

Я только что установил libfreenect2 на OSX 10.11.5 и могу успешно запустить демонстрацию Protonect, отображающую потоки RGB/IR/глубины, но Я также хотел бы использовать OpenNI/NITE для отслеживания скелетов.

Я следовал инструкциям в файле README репозитория для OpenNI, но когда я попытался запустить NiViewer, я получил следующее:

NiViewer 
openDevice failed:
    DeviceOpen using default: no devices found

Press any key to continue . . .

В настоящее время я решаю проблемы с libfreenect2 на github и документирую свои попытки и результаты здесь. Любые подсказки/подсказки полезны.

Как проще всего настроить и протестировать OpenNI/NITE с libfreenect2 с помощью Kinect v2 на OSX?

Оказывается, я использовал NiTE 1.5 вместо NiTE 2.2. Я просто скопировал libfreenect2-openni2.0.dylib из libfreenect2/build/lib в NiTE-MacOSX-x64-2.2/Samples/Bin/OpenNI2/Drivers/, затем запустил образец SimpleUserTracker, и все заработало!

Есть еще одна загвоздка: образцы, которые просто выводят на консоль, запускаются, а те, которые открывают окно и рендерятся, не работают. Окно не отображается, как будто этот поток каким-то образом заблокирован. Это когда я использую встроенный графический процессор Intel. Если я использую дискретный графический процессор nVidia, приложение вылетает:

./UserViewer 
   124095 INFO       New log started on 2016-08-30 20:32:19
   124114 INFO       --- Filter Info --- Minimum Severity: VERBOSE
   126001 VERBOSE    No override device in configuration file
   126029 VERBOSE    Configuration has been read from '/Users/George/Downloads/Grouped/Projects/code+libs/NiTE-MacOSX-x64-2.2/Samples/Bin/OpenNI.ini'
   126034 VERBOSE    OpenNI 2.2.0 (Build 21)-MacOSX (May 29 2013 14:03:30)
   126038 VERBOSE    Using '/Users/George/Downloads/Grouped/Projects/code+libs/NiTE-MacOSX-x64-2.2/Samples/Bin/OpenNI2/Drivers' as driver path
   126042 VERBOSE    Looking for drivers in drivers repository '/Users/George/Downloads/Grouped/Projects/code+libs/NiTE-MacOSX-x64-2.2/Samples/Bin/OpenNI2/Drivers'
   161329 INFO       New log started on 2016-08-30 20:32:19
   161447 INFO       --- Filter Info --- Minimum Severity: VERBOSE
   161457 VERBOSE    Initializing USB...
   166761 INFO       USB is initialized.
   286714 INFO       New log started on 2016-08-30 20:32:19
   286762 INFO       --- Filter Info --- Minimum Severity: VERBOSE
   286781 VERBOSE    Initializing USB...
   286804 INFO       USB is initialized.
[Info] [Freenect2Impl] enumerating devices...
[Info] [Freenect2Impl] 7 usb devices connected
[Info] [Freenect2Impl] found valid Kinect v2 @20:16 with serial 500722542042
[Info] [Freenect2Impl] found 1 devices
  5380695 INFO       Found device freenect2://0
  5380723 INFO       Driver: register new uri: freenect2://0
  5381065 INFO       Device connected: Microsoft Kinect (freenect2://0)
  5381101 INFO       Device state changed: Microsoft Kinect (freenect2://0) to 0
  5381115 INFO       Driver: register new uri: freenect2://0?depth-size=640x480
  5381123 INFO       Device connected: Microsoft Kinect (freenect2://0?depth-size=640x480)
  5381132 INFO       Device state changed: Microsoft Kinect (freenect2://0?depth-size=640x480) to 0
  5381139 INFO       Driver: register new uri: freenect2://0?depth-size=512x424
  5381149 INFO       Device connected: Microsoft Kinect (freenect2://0?depth-size=512x424)
  5381157 INFO       Device state changed: Microsoft Kinect (freenect2://0?depth-size=512x424) to 0
[Info] [Freenect2Impl] enumerating devices...
[Info] [Freenect2Impl] 7 usb devices connected
[Info] [Freenect2Impl] found valid Kinect v2 @20:16 with serial 500722542042
[Info] [Freenect2Impl] found 1 devices
 10381916 VERBOSE    Trying to open device by URI '(NULL)'
 10381940 INFO       deiveOpen: freenect2://0
 10381948 INFO       Opening device freenect2://0
[Info] [Freenect2DeviceImpl] opening...
[Info] [Freenect2DeviceImpl] transfer pool sizes rgb: 20*16384 ir: 4*128*33792
[Info] [Freenect2DeviceImpl] opened
 12312037 VERBOSE    Initialize: Already initialized
 12314810 INFO       Device: createStream(depth)
 12314892 INFO       Freenect2Driver::Device: start()
[Info] [Freenect2DeviceImpl] starting...
[Info] [Freenect2DeviceImpl] submitting rgb transfers...
[Info] [Freenect2DeviceImpl] submitting depth transfers...
[Info] [Freenect2DeviceImpl] started
2016-08-30 20:32:31.847 UserViewer[7575:4995528] GLUT Warning: glutInit being called a second time.
[Info] [VTRgbPacketProcessor] avg. time: 19.633ms -> ~50.9346Hz
[Info] [VTRgbPacketProcessor] avg. time: 19.6306ms -> ~50.9408Hz
[Info] [VTRgbPacketProcessor] avg. time: 19.0744ms -> ~52.4262Hz
[Info] [DepthPacketStreamParser] 417 packets were lost
Segmentation fault: 11

Как я могу обойти эту проблему?


person George Profenza    schedule 24.08.2016    source источник
comment
Вы уверены, что ваш kinect подключен через порт USB 3 ??   -  person Rafaf Tahsin    schedule 30.08.2016
comment
Да, конечно, я могу запустить образец Protonect, поставляемый с libfreenect2, и увидеть потоки RGB/IR и глубины.   -  person George Profenza    schedule 30.08.2016


Ответы (1)


Для справки здесь приведены приведенные выше примечания в качестве ответа. Это то, что я сделал, чтобы получить отслеживание скелета OpenNI2/NITE2.2 с помощью libfreenect2 и его драйвера OpenNI2. У меня есть:

  1. скомпилировал установленный OpenNI2 через homebrew и скомпилировал libfreenect2 с поддержкой OpenNI2 согласно github инструкции в репозитории
  2. загружен NITE2.2 (заменяет Nite1.5, которым я раньше не пользовался)
  3. скопировал драйвер libfreenect2 OpenNI2 (ibfreenect2/build/lib/libfreenect2-openni2.0.dylib) в папку Drivers, где мне нужно было запустить NITE2 (например, NiTE-MacOSX-x64-2.2/Samples/Bin/OpenNI2/Drivers).

Я понял, что путь был неправильным, установив подробный уровень журнала в OpenNI.ini:

[Log]
; 0 - Verbose; 1 - Info; 2 - Warning; 3 - Error. Default - None
Verbosity=0
LogToConsole=1
LogToFile=1

[Device]
;Override=""

[Drivers]
; Location of the drivers specified by a relative path based on OpenNI's shared library or an absolute path.
; Path separator "/" can be used to be portable for any platforms.
; Default - OpenNI2/Drivers
Repository=OpenNI2/Drivers

Саймон Калиски следовал заметкам и написал блестящую Kinect 2 на OSX со скелетом отслеживание сообщения с использованием OpenFrameworks, обязательно проверьте его!

Отслеживание OpenNI2 OpenFrameworks Skeleton с помощью Kinect v2

Кроме того, когда libfreenect2 скомпилирован с поддержкой openni2, его можно даже использовать в Processing, просто поместите libfreenect2-openni2.0.dylib в /Documents/Processing3/libraries/SimpleOpenNI/library/osx/OpenNI2 (в OSX):

Отслеживание скелета Kinect2 SimpleOpenNI

person George Profenza    schedule 31.10.2016