nikuyoshiのブログ

記事の内容については個人の見解であり、所属企業の意見を代表するものではありません

OpenNIでKinectのチルトモーターを動かす

OpenNIでKinectのチルトモーター(首)を動かす | akatukisiden's blog

チルト角を動かすサンプルプログラムを発見したので早速試してみました。
動作環境:MacBookAir (OSX10.7)

Kinect_Tilt.cpp

#include <XnUSB.h>

enum
{
 VID_MICROSOFT = 0x45e,
 PID_NUI_MOTOR = 0x02b0
};

XN_USB_DEV_HANDLE dev;

int main() {

    int angle = キネクトの首の地面からの角度;
    const XnUSBConnectionString* pastrDevicePaths = NULL;
    XnUInt32 nCount = 0;
    XnUChar empty[1];

    xnUSBInit();
      xnUSBEnumerateDevices(VID_MICROSOFT, PID_NUI_MOTOR,&pastrDevicePaths,&nCount);
        xnUSBOpenDeviceByPath(*pastrDevicePaths, &dev);

          xnUSBSendControl
          (
             dev,
             XN_USB_CONTROL_TYPE_VENDOR,
             0x31,(XnUInt16)angle * 2,
             0x0, empty, 0x0, 0
          );

        xnUSBCloseDevice(dev);
      xnUSBFreeDevicesList(pastrDevicePaths);
    xnUSBShutdown();

    return 0;
}
g++ -o a.out -I/usr/include/ni Kinect_Tilt.cpp -lOpenNI
./a.out

ログ
f:id:nikuyoshi:20111212005457p:image

ちなみに、チルトレンジは-30°〜+30°ですのでご注意を。