【2018年版】MacでKinectV1をプログラムで動かす『ZigFu』のダウンロードと導入方法

Kinect をさまざまなプログラムから扱えるようになるのが、ZigFu ライブラリです。ZigFu ライブラリは数年前はKinect を扱う際に活発に使われていましたが、最近では公式サイトも閉鎖されてしまっています。Macでも KinectV1 を扱えるのは便利なので、2018年現在でも使える導入方法を解説します。

ZigFuの公式ダウンロードサイトは、 http://zigfu.com/ ですが、2018年3月時点では公式サイトが閉鎖されており、ZigFuのダウンロードができません。下記のサイトにZigFuのアーカイブがあるので、こちらからダウンロードします。

MacOSX版は、OpenNI Package Installer for MacOSX で、ZigfuOpenNIMac.tar.gz というファイル名。ファイルサイズは、25.5MBです。
ファイルを解凍すると、下記のようなスクリプトが同梱されています。

ZigfuOpenNIMac アーカイブのファイル一覧
/Users/user/Downloads/ZigfuOpenNIMac% ls -al
 
drwx------@  7 user  staff   238  1 28 03:04 .
drwxr-xr-x+ 54 user  staff  1836  1 28 03:04 ..
drwx------@ 12 user  staff   408  1 28 03:04 NITE
drwx------@ 11 user  staff   374  1 28 03:04 OpenNI
drwx------@  9 user  staff   306  1 28 03:04 SensorKinect
-rw-r--r--@  1 user  staff  1716  8 22  2011 install.sh
-rw-r--r--@  1 user  staff   224  8 22  2011 test.sh
/Users/user/Downloads/ZigfuOpenNIMac% sudo sh install.sh
Password:
You Know What You Doing (Installing OpenNI)
Installing OpenNI
****************************
 
copying shared libraries...cp: /usr/lib/libOpenNI.dylib: Operation not permitted
cp: /usr/lib/libOpenNI.jni.dylib: Operation not permitted
cp: /usr/lib/libnimCodecs.dylib: Operation not permitted
cp: /usr/lib/libnimMockNodes.dylib: Operation not permitted
cp: /usr/lib/libnimRecorder.dylib: Operation not permitted
OK
copying executables...cp: /usr/bin/niLicense: Operation not permitted
cp: /usr/bin/niReg: Operation not permitted
OK
copying include files...mkdir: /usr/include/ni: Operation not permitted
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
       cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
OK
creating database directory...OK
registering module 'libnimMockNodes.dylib'...install.sh: line 113: /usr/bin/niReg: No such file or directory
OK
registering module 'libnimCodecs.dylib'...install.sh: line 113: /usr/bin/niReg: No such file or directory
OK
registering module 'libnimRecorder.dylib'...install.sh: line 113: /usr/bin/niReg: No such file or directory
OK
creating java bindings directory...OK
Installing java bindings...cp: /usr/share/java/org.OpenNI.jar: Operation not permitted
OK
 
*** DONE ***
 
Move Zig (Installing NITE)
cp: /usr/lib/libXnVNite_1_4_1.dylib: Operation not permitted
cp: /usr/lib/libXnVCNITE_1_4_1.dylib: Operation not permitted
cp: /usr/lib/libXnVNITE.jni.dylib: Operation not permitted
cp: /usr/share/java/com.primesense.NITE.jar: Operation not permitted
mkdir: /usr/etc/primesense/Features_1_4_1: Operation not permitted
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
       cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
cp: /usr/lib/libXnVFeatures_1_4_1.dylib: Operation not permitted
install.sh: line 27: niReg: command not found
mkdir: /usr/etc/primesense/Hands_1_4_1: Operation not permitted
cp: /usr/etc/primesense/Hands_1_4_1: No such file or directory
cp: /usr/lib/libXnVHandGenerator_1_4_1.dylib: Operation not permitted
install.sh: line 38: niReg: command not found
Please enter your PrimeSense license key: install.sh: line 79: niLicense: command not found
 
Take Off Every Zig (Installing SensorKinect) Installing PrimeSense Sensor
****************************
 
creating config dir /usr/etc/primesense...mkdir: /usr/etc/primesense: Operation not permitted
OK
copying shared libraries...cp: /usr/lib/libXnCore.dylib: Operation not permitted
cp: /usr/lib/libXnDDK.dylib: Operation not permitted
cp: /usr/lib/libXnDeviceFile.dylib: Operation not permitted
cp: /usr/lib/libXnDeviceSensorV2KM.dylib: Operation not permitted
cp: /usr/lib/libXnFormats.dylib: Operation not permitted
OK
copying executables...cp: /usr/bin/XnSensorServer: Operation not permitted
OK
registering module 'libXnDeviceSensorV2KM.dylib' with OpenNI...install.sh: line 106: /usr/bin/niReg: No such file or directory
OK
registering module 'libXnDeviceFile.dylib' with OpenNI...install.sh: line 106: /usr/bin/niReg: No such file or directory
OK
copying server config file...cp: /usr/etc/primesense: No such file or directory
OK
setting uid of server...chown: /usr/bin/XnSensorServer: No such file or directory
chmod: /usr/bin/XnSensorServer: No such file or directory
OK
creating server logs dir...OK
 
*** DONE ***
 
For Great Justice... (type "sh test.sh" to run the UserTracker demo)

sudo をつけて実行しても、ほとんどファイルコピーがうまくいっていません。このようなエラーが出る原因は下記リンクに詳しく書かれています。

  1. OS X 10.11 El Capitanより追加されたセキュリティ機能 SIP(System Integrity Protection)によってガードされている。
  2. /bin /sbin /System 配下でルートユーザでも書き込みできない。

がファイルコピーができない原因です。

上記の問題を解決するためには、Macを再起動し Command + R を押し続けてリカバリーモードにします。上部のバーからターミナルを起動し、下記のようにコマンドを入力します。

$ csrutil status

このコマンドを入力すると、状態が enabled になっているはずですので、この設定を変更し再起動します。

$ csrutil disable
$ reboot

これで、MacOSのシステム関連ディレクトリのファイルの移動や操作ができるようになります。

念の為再起動したら、通常モードで起動した後、下記のコマンドで状態を確認します。

% csrutil status
System Integrity Protection status: disabled.

disabled になっていれば完了です。

/Users/user/Downloads/ZigfuOpenNIMac% sudo sh install.sh                                                                    
Password:
You Know What You Doing (Installing OpenNI)
Installing OpenNI
****************************

copying shared libraries...OK
copying executables...OK
copying include files...OK
creating database directory...OK
registering module 'libnimMockNodes.dylib'...OK
registering module 'libnimCodecs.dylib'...OK
registering module 'libnimRecorder.dylib'...OK
creating java bindings directory...OK
Installing java bindings...OK

*** DONE ***

Move Zig (Installing NITE)
Please enter your PrimeSense license key:
Take Off Every Zig (Installing SensorKinect) Installing PrimeSense Sensor
****************************

creating config dir /usr/etc/primesense...OK
copying shared libraries...OK
copying executables...OK
registering module 'libXnDeviceSensorV2KM.dylib' with OpenNI...OK
registering module 'libXnDeviceFile.dylib' with OpenNI...OK
copying server config file...OK
setting uid of server...OK
creating server logs dir...OK

*** DONE ***

For Great Justice... (type "sh test.sh" to run the UserTracker demo)

上記のように表示されれば、インストールは完了です。

Mac に Kinect を繋げていない場合は、上記のようにメッセージが表示されます。

/Users/user/Downloads/ZigfuOpenNIMac% sh test.sh
Running the Sample-UserTracker demo!/n
Checkout the OpenNI/Samples/Bin/Release directory and NITE/Samples/Bin/Release directory for more fun
One or more of the following nodes could not be enumerated:

Device: PrimeSense/SensorKinect/5.0.3.4: The device is not connected!

Kinectを接続した状態では下記のように表示され、GUIアプリ「Prime Sense User Tracker Viewer」が起動し、Kinectの映像が表示されるようになります。

/Users/user/Downloads/ZigfuOpenNIMac% sh test.sh                                                                
Running the Sample-UserTracker demo!/n
Checkout the OpenNI/Samples/Bin/Release directory and NITE/Samples/Bin/Release directory for more fun
Warning: USB events thread - failed to set priority. This might cause loss of data...
New User 1
New User 2
Lost user 2
Lost user 1

OpenNI を使った ZigFu を使うと、MacOS でも KinectV1(Xbox360単体版)が使えます。かなり古いライブラリですが、参考にしてみて下さい。

メッセージ:
Y G G S M