Kinect 3台接続までの道
どういうわけか今Microsoft Kinectを使ったイベント向けのシステムを作っています。3DCGの扱いが簡単なXNA Game Studio4.0上で、Microsoft公式のKinect SDKを使いC#で書いています。
リリースノートによると1台のPC4台まで接続できるようですが、実際にやってみるとハードウェアの相性と思われる問題に多数ぶち当ってしまいました。とりあえず3台までは同時に接続し色・深さ画像が取得できるようになりましたので、ここに記録しておきたいと思います。
CPU intel Core i7-2600(無印) マザーボード MSI Z68A-G43(B3) メモリ Geil EVO CORSA DDR3-1333 8GBx2
上記マザーボードには、USB3.0コントローラとしてRenesas μPD720200 を内蔵しておりKinect1台だけならUSBカードはいりません。
2台以上接続する場合にPCI(2本)またはPCI-E(x16,x4が1本ずつ、x1が2本)にUSBカードを接続することになります。(※伏線)
USBコントローラの種類に注意
上記リリースノートには、
最大 4 台の Kinect センサーのサポート: 同一 PC に最大 4 台までの Kinect センサーを接続することができます。ただし、各センサーがそれぞれ独立した USB コントローラーに接続できるだけの性能を持つ PC であることが前提。(これまで通り、骨格追跡は1 プロセスにつき 1 台の Kinect でしか使用することができませんが、開発者は使用する Kinect センサーを選択することができます。)
と書かれており、Kinectを追加するには PCIまたはPCI-E接続のUSBカードが必要になります。
ところが、USBコントローラチップの種類によってはKinectを全く認識しないものがありました。
メーカー 製品名 PCI/PCI-E USB種別 USBコントローラ Kinectの認識 AREA SD-PEU3E-2E(Due・Sport) PCI-Ex1 USB3.0 Etron × AREA SD-PEU3V-2E2IL(OF2) PCI-Ex1 USB3.0 VLI × 玄人志向 USB2.0N6P-PCI PCI USB2.0 Renesas μPD720101 × 玄人志向 USB3.0R-P2-PCI2 PCI-Ex1 USB3.0 Renesas uPD020202 ○ SilverStone SST-EC04 PCI-Ex1 USB3.0 TI TUSB7340 ○
PCI-Eのスロットの種類にも要注意
こうしてUSBコントローラの種類にも気をつけて別メーカーのコントローラを搭載したUSBカードを入手したのですが、2枚のUSBカードをいずれもPCI-Ex1のスロットに挿していると、2台目のKinectを認識しませんでした。
PCI-Ex1とPCI-Ex16、あるいはPCI-Ex1とPCI-Ex4の組み合わせなら無事認識しました。