【2018年版】MacでKinectV1をプログラムで動かす『ZigFu』のダウンロードと導入方法
Kinect をさまざまなプログラムから扱えるようになるのが、ZigFu ライブラリです。ZigFu ライブラリは数年前はKinect を扱う際に活発に使われていましたが、最近では公式サイトも閉鎖されてしまっています。Macでも KinectV1 を扱えるのは便利なので、2018年現在でも使える導入方法を解説します。
ZigFuのダウンロード
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
MacへのZigFuのインストール方法
/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 をつけて実行しても、ほとんどファイルコピーがうまくいっていません。このようなエラーが出る原因は下記リンクに詳しく書かれています。
- OS X 10.11 El Capitanより追加されたセキュリティ機能 SIP(System Integrity Protection)によってガードされている。
- /bin /sbin /System 配下でルートユーザでも書き込みできない。
がファイルコピーができない原因です。
root でMacOSのシステム関連ディレクトリにアクセスできるようにする
上記の問題を解決するためには、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)
上記のように表示されれば、インストールは完了です。
Kinect未接続時のテストスクリプトの実行結果
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接続時のテストスクリプトの実行結果
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単体版)が使えます。かなり古いライブラリですが、参考にしてみて下さい。
コメント