OpenNI: WindowsでKinectを使う

Kinect wikiを開設したので、最新のインストールガイドはそちらを参照してください。
Kinect wikiはじめました
OpenNI-インストール


Willow Garage News『Kinectの3Dセンサー開発元によるドライバーや骨格トラッキングライブラリーの提供』にあるように、2010年12月8日(水)にKinect開発元によるドライバ・ライブラリ提供が始まりました。
Windowsで動かしてみたので、設定の覚書を書いておきます。

Macの方はこちら→OpenNI: MacでKinectを使う
Kinect for Windows SDKはこちら→Kinect for Windows SDK beta: WindowsでKinectを使う

※以前にlibfreenectからドライバをインストールしてKinectをハックしていた人は、以前のドライバを消去してください。
※必ず以下の順番でインストールしてください。.

1. OpenNIをインストール

OpenNIの公式ページに行き,DownloadsのLatest UnstableページからOpenNIをダウンロードします。
・ OpenNI Unstable Build for Windows x86 (32-bit) v1.1.0.41 Development Edition
をダウンロード・インストールしてください。
※64bitOSの場合も32bit版をインストールしてください。次のSensorKinectが64bit版に対応していないためです。

2. Kinectのドライバをインストール

https://github.com/avin2/SensorKinect/tree/masterからダウンロードして、解凍してください。
avin2-SensorKinect-*******というフォルダができるはずです。
[avin2-SensorKinect-*******]/Platform/Win32/Driverにドライバが入っています。

次に、USBでKinectを接続します。
するとドライバのインストール画面が出るので、手動で選択にし、先ほどの、
[avin2-SensorKinect-*******]/Platform/Win32/Driver
を入力してインストールします。
Kinect Motor, Kinect Camera, Kinect Audioの3種類のドライバインストールを求められますが、このうち、Kinect Motor, Kinect Cameraの2つだけで大丈夫です。(Kinect Audioは未対応)

その後、
[avin2-SensorKinect-*******]/Bin/SensorKinect-Win-OpenSource32-5.0.1.msi
を実行してください。

3. NITEをインストール

OpenNIの公式ページに行き,DownloadsのLatest UnstableページからNITEをダウンロードします.
・PrimeSense NITE Unstable Build for Windows x86 (32-bit) v1.3.1.5 Development Edition
をダウンロードし,インストールしてください.
※64bitOSの場合も32bit版をインストールしてください。SensorKinectが64bit版に対応していないためです。

インストールの際にkeyの入力を求められますが、ここに書かれているので、それを入力すれば大丈夫です。
執筆時点で、
0KOIk2JeIBYClPWVnMoRKn5cdY4=
となっています。

4. 設定ファイルの書き変え

・OpenNIの設定ファイル
[avin2-SensorKinect-*******]/OpenNI/Dataの中身をコピーし、
C:/Program Files/OpenNI/Dataにペーストしてください。

5. サンプルの実行

Microsoft Platform SDKをインストールしていない場合は、インストールします。

サンプルは、
C:/Program Files/OpenNI/Samples
C:/Program Files/Prime Sense/Nite/Samples
以下に入っています。

Bin/Release以下に実行ファイルが既にあるので、ダブルクリックなどして、以下の3つ、
・OpenNIのNIViewer…基本ビューア
・OpenNIのNIUserTracker…スケルトントラッキング
・NITEのSample-PointViewer…ハンドトラッキング
が正常に動くことを確認してください。

6. サンプルのソースコード

Visual Studio2008/2010プロジェクト形式で入っているので、プロジェクトを開いてください。
・C:\Program Files (x86)\OpenNI\Samples\Build\All_2008.sln(またはAll_2010.sln)
・C:\Program Files (x86)\PrimeSense\NITE\Samples\Build\All_2008.sln(またはAll_2010.sln)
を開くと、全てのサンプルプロジェクトを開くことができます。
[プロジェクト]/Source Files/main.cppを開き、
#define SAMPLE_XML_PATH “../../../Data/Sample-User.xml”を、
#define SAMPLE_XML_PATH “../../Data/Sample-User.xml”
に書き変えてください.
後は、ビルドして実行すれば動くはずです。


2011年7月7日:リンク修正
2011年5月9日:ダウンロードファイル変更に伴い修正
2011年1月11日:OpenNI公式ページ変更に伴いリンクなどの変更
2010年12月23日:変更
2010年12月22日:変更及び追記
2010年12月20日:xml書き変え部を追記

Category: Kinect | Tags: , , , 57 comments »

57 Responses to “OpenNI: WindowsでKinectを使う”

  1. totakke

    @mako_1004さんにご指摘頂き,Sample-Scene.xmlとSample-Tracking.xmlの変更部分を追記しました.
    ありがとうございます.

  2. eiji

    3. 環境変数の設定のところで困っています。

    XN_SENSOR_VENDOR_ID=0x045E
    XN_SENSOR_PRODUCT_ID=0x02AE
    XN_HOST_PROTOCOL_ALGORITHM_REGISTRATION=0×40

    を追加する、との事ですが、上記は変数名ですよね?
    値の欄には何を入れればいいのでしょうか?
    お手数ながら教えていただけませんでしょうか。

  3. totakke

    説明不足で申し訳ありません。
    イコールの左側が変数名、右側が値です。
    なので、例えば、
    XN_SENSOR_VENDOR_IDという環境変数を作成し、値に0x045Eを入れるということになります。

  4. mathter

    Kinect Motorのドライバはインストールできたのですが,
    Kinect Cameraがデバイスマネージャに表示されず,
    ドライバをインストールすることができません...
    なぜでしょうか?

  5. totakke

    デバイスマネージャにXbox NUI cameraというデバイスは表示されていますか?
    右クリック→ドライバソフトウェア更新
    から,手動選択で記載通りにやると追加できるかと思います.

  6. mathter

    >Xbox NUI camera
    表示されないんですよね・・・
    何が悪いんでしょうか・・・

  7. totakke

    ボクの周りで同様の症状が出た方は再起動したり,使うUSBポートを他のに変えたりしたら認識できた,ということがありました.
    それでもダメでしたらちょっとボクには分かりません.
    申し訳ありません.

  8. mathter

    再起動はダメでしたね・・・
    USBポートを変えてみます.

  9. mathter

    Kinectの電源が入ってなかったのが原因でした・・・
    いや,ACアダプタがささってなくても電源ランプ光ってたし,
    モーターのドライバーだけは認識してたから全く気づかなかった.
    恥ずかしい・・・

  10. totakke

    認識できて良かったです

  11. seigi

    Windows7の64bit版を使用しているのですが、どうもうまく行きません。
    モーターとカメラは認識されているのですがOpenNIのNIUserTrackerを起動すると
    ウィンドウは開くのですが画像など表示されず黒いままです。
    それから、キネクト本体の緑のLEDは点滅し続けてるのですが、こういうものなのでしょうか?

  12. totakke

    LEDが点滅するのは仕様です.
    動かしているときは常時点灯になったと思います.

    こちら32bit版しか試していないのでなんとも言えません.
    Windows XP,Vista,7の32bit版は動作を確認しています.
    ネット上にはWindows 7 64bitで動いたという報告がちらほら見られますので,やり方が何か違うのかもしれませんが動かせると思います.

    お役に立てず申し訳ありません.

  13. seigi

    お返事ありがとうございます。
    もう1つだけ質問させてください。

    NIUserTrackerなどのソフトを起動したときにキネクト自体のモーターは動作しますか?

  14. totakke

    返事遅れて申し訳ありません.
    動作しないと思います.
    少なくとも,ボクの環境ではモータは動作していませんでした.

  15. f

    「プロシージャエントリポイントxnProductionNodeReleaseがダイナミックリンクライブラリOpenNI.dll~見つかりませんでした」というエラーが表示されてしまい、サンプルを使用できません。どなたか対処法をご存じないでしょうか?

  16. Spielzeug

    windows7 64bitで動作確認
    各種インストールをProgram Files (x86)からProgram Filesに変えたらうまく行きました。
    あと、私の64bit環境は
    http://www.m-tea.info/2010/12/kinectpc1.html
    のサイトのやり方の方が相性いいみたいです。
    原因はわかりません。

  17. ケロケロ

    fさん>
    xnProductionNodeReleaseうんぬんは、
    OpenNI-Bin-Win32-v1.0.0.25.exe (Unstable) をインストールして、
    他のインストールをやり直すと解決しましたよ。

  18. seigi

    返事が遅くなってすいません。

    情報ありがとうございました!
    またチャレンジしてみます!

  19. chengxi

    こんにちは!
    サンプルをbuildすることは問題がないです。ただしdebugするときにglut32.dllを見つけないエラーを表示しました。
    よろしくお願いします。
    ちなみに環境:visual studio 2010 c++

  20. totakke

    glut32.dllを実行ファイルと同じ場所に置いておけば大丈夫だと思います.
    確認してないのですが,Program files/OpenNIのどこかにglut32.dllがあったと思うので,各サンプルプロジェクトディレクトリのDebugの中にコピーしてください.

  21. chengxi

    大変お世話になっております。
    上記指導どおりにglut32.dllをサンプルプロジェクトディレクトリのDebug中にコピーした。“Open failed :File not found!”のエラーを出ました。
    すみません。
    よろしくお願いします

  22. chengxi

    すみませんでした。環境変数の設定の対してどこに設定しますか。
    よろしくお願いします。

  23. totakke

    SamplesConfig.xmlのパスの問題だと思われます.
    ソースコード中の,
    #define SAMPLE_XML_PATH “../../Data/SampleConfig.xml”
    のようになっている部分のパスを変更して正しく合わせてもらえれば動くかと思います.

  24. ChenXi

    いろいろお世話になっております。
    おかげさまで 今できました。
    まことにありがとうございます。
    今後もよろしくお願いします。

  25. nobulover

    はじめまして。
    記載されている内容を行っていると・・・
    —————————————————–
    するとドライバのインストール画面が出るので、手動で選択にし、
    先ほどの、[avin2-SensorKinect-*******]/Platform/Win32/Driver
    を入力してインストールします。
    —————————————————–
    この手順で「Kinect Motor アクセスが拒否されました」と出て困っています。
    (インストールできません。。。)

    ・WinVista(32bit)。USBポートを変えても同じでした。
    ・電源は差しています。ケーブルの方の緑LEDは点灯。
    ・Kinect本体側にも電源ランプがあるんでしょうか?それはついてません。
    ・VistaのUAC制御はOFFってます。
    ・何度も再起動やP-Off/Onはやってみました。

    何が原因なのでしょうか?
    どなたかお助けください(_ _ )

  26. chenxi

    こんにちは!
    いつもお世話になっております。
    glut32.dllに対して良くわからないです。今Visual v++ 2010でsamples-NiViewerをdebug とrunできるためにC:\ProgramFiles\OpenNI\Samples\Bin\Debug\下のglut32.dllをcopyしてC:\Program Files\OpenNI\Samples\NiViewer\Debugにおきました。
    実際にC:\Program Files\OpenNI\Samples\NiViewer\Libs下にglut32.libがあります。このglut32.dllはglut32.libから生成べきですか。
    よろしくお願いします。

  27. totakke

    >nobuloverさん
    申し訳ありません.
    その症状はちょっと見たことがなく,分かりません.

  28. totakke

    >chenxiさん
    exeと同じ場所に置いて動けばそれで大丈夫だと思います.

  29. ooyuu

    ビルドのところでこまっています。

    NiUserVuewerをビルドすると下記のようなエラーがかえってきて失敗します。。
    何が原因なのでしょうか。
    お手数ですが、教えていただけると幸いです。

    1>—— ビルド開始: プロジェクト: NiUserTracker, 構成: Debug Win32 ——
    1>SocketServer.obj : error LNK2019: 未解決の外部シンボル __imp__recv@16 が関数 “int __cdecl connect(void)” (?connect@@YAHXZ) で参照されました。
    1>SocketServer.obj : error LNK2019: 未解決の外部シンボル __imp__accept@12 が関数 “int __cdecl connect(void)” (?connect@@YAHXZ) で参照されました。
    1>SocketServer.obj : error LNK2019: 未解決の外部シンボル __imp__listen@8 が関数 “int __cdecl connect(void)” (?connect@@YAHXZ) で参照されました。
    1>SocketServer.obj : error LNK2019: 未解決の外部シンボル __imp__bind@12 が関数 “int __cdecl connect(void)” (?connect@@YAHXZ) で参照されました。
    1>SocketServer.obj : error LNK2019: 未解決の外部シンボル __imp__socket@12 が関数 “int __cdecl connect(void)” (?connect@@YAHXZ) で参照されました。
    1>SocketServer.obj : error LNK2019: 未解決の外部シンボル __imp__WSAStartup@8 が関数 “int __cdecl connect(void)” (?connect@@YAHXZ) で参照されました。
    1>SocketServer.obj : error LNK2019: 未解決の外部シンボル __imp__htonl@4 が関数 “int __cdecl connect(void)” (?connect@@YAHXZ) で参照されました。
    1>SocketServer.obj : error LNK2019: 未解決の外部シンボル __imp__htons@4 が関数 “int __cdecl connect(void)” (?connect@@YAHXZ) で参照されました。
    1>SocketServer.obj : error LNK2019: 未解決の外部シンボル __imp__send@16 が関数 “int __cdecl send(char * const,char * const,char * const,char * const,char * const)” (?send@@YAHQAD0000@Z) で参照されました。
    1>../Bin/Debug\NiUserTracker.exe : fatal error LNK1120: 外部参照 9 が未解決です。
    ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

  30. totakke

    > ooyuuさん
    SocketServer.objが正しく生成されていない可能性があります。
    プロジェクトをリビルド(あるいはクリーン→ビルド)を行ってみてください。

  31. DevJamMemo | SIFTBRAIN Development Division

    [...] Windowsのドライバ(OpenNI)のインストールはこちらを参考にしました。 http://www.cyber.t.u-tokyo.ac.jp/~take/kinect/openni-windows-kinect.html [...]

  32. らいあん

    お忙しいところ申し訳ありません。
    openniのサイトに1.0.0.23が見当たらないのですが、
    その場合はどうしたら良いでしょうか?

  33. totakke

    OpenNIに更新があったようで,記事の情報が古くなっていたようです.
    確認していないのですが,
    OpenNI Stable Build for Windows x86 (32-bit) v1.1.0.38 Development Edition
    をインストールしてみてください.(64bitOSの場合はx64)
    ご指摘ありがとうございます.
    確認した後で記事のほうを修正致します.

  34. kidou

    はじめまして!

    サンプルのviewerは動くものの、NiUserTracker.exe が動かず

    UserGenerator.Create Failed: Can’t create any node of the requested type!

    というエラーが出るのですが、良かったらアドバイスいただけませんか?

  35. totakke

    SensorKinectのドライバを入れた後に,
    [avin2-SensorKinect-*******]/Bin/SensorKinect-Win-OpenSource32-5.0.1.msi
    は実行されましたでしょうか?
    また,OpenNI→SenesorKinect→NITEの順番で入れないと,正しく動かない可能性があります.
    C:\Program Files (x86)\PrimeSense\SensorKinect
    が存在するかどうかお確かめください.

  36. Ikoha

    はじめまして。
    すべて順番通りに行ったのですがサンプルを実行すると、

    ?NewDataAvailable@XnDeviceStream@@UAEX_KI@ZがダイナミックリンクライブラリXnDDK.dllから見つかりませんでした。

    と、出てきて実行できません。
    よろしければ解決策のアドバイスをいただけないでしょうか?
    よろしくお願いします。

  37. Anonymous

    環境
    windowsXP(32bit)

    インストールしたもの
    OpenNI 1.0.0.23
    avis 4e91f68
    Nite 1.3.0.17

    この状況で環境変数やxmlファイルを変更したのですが
    sampleファイルのNiUserTracker.exeを実行すると、コマンドライン上に

    InitFromXml failed: Got a timeout while waiting for a network command to complet

    と一瞬表示されて、コマンドラインが閉じてしまいます。
    もちろんキネクトも動きません。

    原因わかりますでしょうか?

  38. Anonymous

    上記37の続きですが

    サンプルのNiViewerを実行した場合、

    Open failed: Got a timeout while waiting for a network command to complete!
    Press any key to continue . . .

    と出力され、キネクトを起動できません。

  39. totakke

    > Open failed: Got a timeout while waiting for a network command to complete!
    > Press any key to continue . .
    KinectはUSBだけでなく,きちんとACアダプタにつないで電源を供給していますでしょうか?
    また,現在のSensor Kinectは,OpenNI・NITE共にUnstable版でないと上手く動作しない可能性があります.
    > OpenNI 1.0.0.23
    > avis 4e91f68
    > Nite 1.3.0.17
    バージョンが古いように思います.
    最新のものをインストールしてください.

  40. totakke

    > Ikohaさん
    OpenNI・NITEのバージョンは最新のものを使っていますか?
    古いバージョンをインストールしてしまうと,その症状に陥ることがあります.

  41. kaku

    はじめまして。
    現在、WindowsVistaのノートパソでKinectを操作しようとしています。
    普通にexeから実行すれば動かせるのですが、Visual Studio2008で
    #define SAMPLE_XML_PATH “../../../Data/Sample-User.xml”を
    #define SAMPLE_XML_PATH “../../Data/Sample-User.xml”
    に変えてビルド→デバッグを行うと、
    「OpenNI.dllが見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストールし直すとこの問題は解決される場合があります。」と出て、実行されません。

    インストールもやり直してみましたが一向に改善されません。
    知り合いに相談して、別バージョンではどうかと助言されたので、OpenNIの1.1.0.39とNITEの1.3.1.3のセットで試してみましたが、状況は変わりませんでした。ちなみにこちらのバージョンをインストールしているデスクトップパソの方はVisual Studio2008で編集を行っても問題なくKinectは動作しています。

    パスなども確認して設定がちゃんとできていることも確認しています。
    完全にお手上げ状態です。どうすればいいでしょうか?

  42. kaku

    追記:
    デスクトップの方は、OSがXPです。

  43. totakke

    >kakuさん
    OpenNIインストール時に、Windowsにいくつか環境変数が設定され、そこを参照するようになっています。
    システム環境変数の内の「OPEN_NI_BIN」の値を確認してみてください。
    C:\Program Files (x86)\OpenNI\bin
    になっていると思うのですが、ここの「bin」を「Bin」に直してみてください。
    通常はこのままで大丈夫なはずなのですが、これを行って治ったという事例がありました。

  44. kaku

    >totakkeさん
    環境変数のその部分も確認して変更してはいるのですが、変化はありませんでした。
    他に何か考えられませんか?

  45. totakke

    >kakuさん
    単にOpenNI.dllが見つからないという問題を解決するだけでしたら、実行ファイルの生成されたディレクトリに、OpenNI/Bin/OpenNI.dllをコピペすることで解決できると思うのですが、いかがでしょうか?
    これで無理ですと、申し訳ありませんがちょっと分かりません。

  46. kaku

    >totakkeさん
    このエラーが出た最初のころに考えられる場所数箇所にOpenNI.dllをコピーして試してみましたが、無理でした。
    自分でもうしばらく考えて見ます。色々助言いただきありがとうございます。
    定期的にこのページを覗いてますので、また考えられることがありましたら書き込んでいただきますとありがたいです。

  47. kaku

    荒業ですが、#define SAMPLE_XML_PATH “../../../Data/Sample-User.xml”
    をそのままにして、プログラムソース改変後、ビルドだけ行い、exeファイルから実行すると普通にできました。
    おそらくこれで問題なく使えると思います。お騒がせしました。

  48. yummy

    こんにちは。

    「5. サンプルの実行」なのですが、
    「NIUserTracker…スケルトントラッキング」が
    C:/Program Files/Prime Sense/Nite/Samples/Bin/Release
    の中に見当たりません。
    「Sample-PointViewer…ハンドトラッキング」はあったのですが…。
    お手数ですがご解答をお願いします。

  49. yummy

    連続ですみません。
    もうひとつ質問です。
    「6. サンプルのソースコード」の工程ですが、
    何というソフトを使って、どこにある、どのファイルを開けばよろしいのですか?
    ソースコードを既存のものから書き換える事など一度もやったことのない初心者なので分かりやすく教えて下さると嬉しいです。
    色々注文をつけて恐縮ですがよろしくお願いします。

  50. totakke

    >> yummyさん

    > 「5. サンプルの実行」なのですが、
    > 「NIUserTracker…スケルトントラッキング」が> C:/Program Files/Prime Sense/Nite/Samples/Bin/Releaseの中に見当たりません。
    > 「Sample-PointViewer…ハンドトラッキング」はあったのですが…。
    NIUserTracerはOpenNIのサンプルでした。
    記事が間違っていたため修正いたしました。
    申し訳ありません。

    > 「6. サンプルのソースコード」の工程ですが、
    > 何というソフトを使って、どこにある、どのファイルを開けばよろしいのですか?
    Microsoft Visual Studio 2008、またはMicrsoft Visual Studio 2010を使って開いてください。
    Microsoft Visual C++ 2010 Expressという、無料版でも開けるかもしれません(未確認)。
    開くファイルは、
    ・C:\Program Files (x86)\OpenNI\Samples\Build\All_2008.sln(またはAll_2010.sln)
    ・C:\Program Files (x86)\PrimeSense\NITE\Samples\Build\All_2008.sln(またはAll_2010.sln)
    です。

  51. yummy

    totakke様

    早速解答して下さりありがとうございます。
    Microsoft Visual C++ 2010 Expressで開こうとしましたが、残念ながら開けませんでした。
    Micrsoft Visual Studio 2010のサイトを見たのですが、プログラミング未経験者が試すには価格とともにかなり敷居が高いと感じました。
    開発が進みもう少し手軽に試せるようになる日が来ると良いのですが。

  52. ahiru

    質問お願いします。

    #define SAMPLE_XML_PATH “../../../Data/Sample-User.xml”を
    #define SAMPLE_XML_PATH “../../Data/Sample-User.xml”
    に置き換えてデバック開始すると実行されてすぐ終了してしまいます。
    1~10の数字が並んでるのが見えました。
    手順は間違ってなかったと思います。
    なにか間違っていたんでしょうか?

  53. misako

    こんにちは。misakoと申します。

    初めで詰まっています、質問です。

    openNI→kinect→NITEの順でインストールしたのですが、
    NITEのサンプルのSample-Boxes.exeが三つの枠は出るのですが、手を振っても反応しません・・・。
    OpenNIとNITEのコードを実行しても、
    0x75dfd36f で初回の例外が発生しました: Microsoft C++ の例外: std::runtime_error (メモリの場所 0x001dfc08)
    と出て実行できません。

    お忙しいところ申し訳ございませんが、解決策を教えていただけたら幸いです。

  54. にゃんこ耳スイッチ

    こんにちは

    キネクト購入して2週間たちますが今だに接続できず困っています。
    どうかたすけて下さい。

    「initfromxlfile failed: can’t create any node of the requested type」
    と出ます。
    グーグルで翻訳すると、「initfromxlfileに失敗:要求された型の任意のノードを作成できない」
    と出ます。
    「initfromxlfile」で検索しても何も出ません

    ちなみに
    【動作確認環境】
    PC :富士通 FMV LIFEBOOK AH77/D
    OS :Windows 7 Home Premium 64bit
    OpenNI:OpenNI Unstable Build for Windows x86 (32-bit) v1.3.2.3 Development Edition
    NITE :PrimeSense NITE Unstable Build for Windows x86 (32-bit) v1.4.1.2 Development Edition
    Driver :avin2/SensorKinect.zip
    Kinect :XBOX Kinect

    です

  55. iR

    Kinectのドライバをインストールで、
    貼ってあるリンクへとんだのですが、
    どこをどうすればダウンロードできるのかがわかりません。
    すみませんが、教えていただけるとうれしいです。
    よろしくお願いします。

  56. totakke

    SensorKinectページ上部の「ZIP」と書いてあるボタンを押してダウンロードするか、
    もしくはgitがインストールされていれば、
    git clone https://github.com/avin2/SensorKinect.git
    としてください。

  57. GN

    Visual studio C++2010とkinectを用いて、kinectからの入力画像に法線ベクトルを表示したいのですが、方法がわかりません。

    使用ソフトとファイル
    Visual studio C++2010
    PCL-1.4.0-AllInOne-msvc2010-win32.exe

    環境
    windows7 professional 32bit

    システム環境変数
    Path: C:\Program Files\OpenNI\Bin;C:\Program Files\PCL 1.4.0\bin;

    kinectとwindows,VC++を用いた法線ベクトルを表示した動画を表示するためのソースと詳しい設定方法を教えていただけないでしょうか?


Leave a Reply



Back to top