年末年始にKinect V2を使ってデモプログラムを作ろうかと思って、自宅のデスクトップPCに機材をそろえて接続を試みるも動作しなかった。残念な結果ではありますが、参考のために失敗環境例として記します。
結論から言うと、USB3.0インターフェースを接続したPCIバスではスペック(リソース)が足りずにNGでした。Kinect V2は要求環境が厳しいですね。
Kinect V2の要求スペックは下記の通り:
- 64-bit (x64) processor Physical dual-core 3.1 GHz (2 logical cores per physical) or faster processor
- USB 3.0 controller dedicated to the Kinect for Windows v2 sensor or the Kinect Adapter for Windows for use with the Kinect for Xbox One sensor
- 4 GB of RAM
- Graphics card that supports DirectX 11
- Windows 8 or 8.1, Windows Embedded 8, or Windows 10
それに対し、自宅の生活用PCはLenovo ThinkCentre m57p [6064 SFF]でした。RAMは6GBまで拡張してあり、Windows8.1が動いています。dxdiag.exeを実行するとDirectX11と出るので、USB3.0化だけすれば良いのではと思って着手することにしました。
まずKinect SDKをインストールすると、SDK Browser V2.0というプログラムを実行できるようになります。このプログラムはサンプルプログラムのランチャーなのですが、その中に"Kinect Configuration Verifier"というメニューがあります。これを実行すると、Kinect V2の要件を満たしているかどうかを確認することができます。
下記は拡張インターフェースを付けた事後の結果です。USBコントローラがNGになっています。その前の状態では、グラフィックカード(Graphics Processor)も×になっており、変更が必要であることが示されました。どうやらチップセット内蔵のグラフィック(Intel Graphics Media Accelerator 3100)では対応できないもよう。したがって、グラフィックカードの追加も必要となりました。
m57pの拡張スロットは、PCE-E x16が1スロット(Low Profile)とPCIが1スロット(Low Profile)です。それに応じて、必要なものと対応を整理すると、
- グラフィックカード: PCI-E x16 (Low Profile)
- USB3.0拡張: PCI (Low Profile)
今回は下記のものを揃えました。結果的に玄人志向で統一されてしまいましたが、値段とパフォーマンス、そして制約を掛け合わせた結果です。
- 玄人志向 GALAXY ビデオカード Geforce GT730搭載 GF-GT730-LE1GHD/D5
Low ProfileかつPCI-E1スロット分の大きさ。DirectX12対応(要Windows10)。ファンレスではないですが、パフォーマンスと価格のバランスが取れた商品だと思います。 - 玄人志向 インターフェースボード USB3.0 PCI接続 LowProfile対応 USB3.0R-P2-LPPCI
Low ProfileかつPCI接続のボード。コントローラチップはRenesas μPD720202。この拡張IF自体の動作は問題なし(メモリカードからの転送などOK)。 - AINEX シリアルATA用二股電源ケーブル [ 15cm ] S2-1506SAB
USB3.0拡張IFへの電源供給用。電源供給をしなくてもUSB3.0で動作していた。電源供給をしても、残念ながらKinectへのリソース不足のエラーは解消されなかった。
グラフィックカード、USB3.0拡張IFを接続したところ、デバイス自体は認識されていますが、
Kinect Configuration Verifierを見たところ…
ということで、USB3.0(5Gbps)をPCI(1Gbps)で支え切れていないということでアウトのようでした。USB3.0拡張IFに電源供給をしても症状は変わりませんでしたので、スペック不足ということでやむをえず。
古いPCでのKinect V2よりも素直に新しいPCのほうがよさそうです。
公式ドキュメントにUSB3.0の補足がありました ( https://msdn.microsoft.com/en-us/library/dn782035.aspx )
返信削除USB 3.0
◦ If you’re adding USB 3.0 functionality to a current system by installing a USB 3.0 host adapter (PCIe), verify that the USB 3.0 host adapter supports Gen-2. Note that you may have to try different PCI-e slots to find one that provides the USB bandwidth required by the sensor. We’ve found that plugging the host adapter into one of the graphics slots works best.
◦ If you receive a notification from the OS that there are not enough resources for this device, it means there are other devices which are reserving bandwidth on your controller, and the Kinect cannot currently function. First, try removing high bandwidth devices, such as a webcam, from that controller. If this does not resolve the problem, try to reboot. For integrated controllers, this will often solve the issue. If the problem persists, you may have to add a discrete USB3 controller to your system, or explicitly disable whatever device is causing the conflict.