Top > Kinect > ExtendKinectLibrary > HowToUse > ExtensionsOfElevationAngleFunctions
Last-modified: Thu, 14 Jun 2012 07:07:07 HADT
Counter:2992 Today:1 Yesterday:3 Online:3
このエントリーをはてなブックマークに追加

角度制御に関する機能拡張

About

 「KinectSensorクラス」では接続されたKinectのチルト角(ElevationAngle)を取得・設定するための機能が提供されています。実際にKinectに対してチルト角を設定する実装を行う場合、設定できなかった場合に生じる例外処理を書かなければなりません。Exceptionの実装を連続するのは見栄えが悪いので、その辺りを拡張メソッドで解決しています。基本的には、任意の角度に設定できない場合に、bool型のfalseを返すようになっています。また連続した角度変更のためのメソッドを逐一実装するのも面倒なので、そのためのメソッドを拡張メソッドとして実装しています。

TiltKinectメソッド

Description
 Kinectを任意の角度だけ"追加して"チルトします。チルト出来ないとき、falseが返ります。上下方向に最大角を超える値が設定された場合には、Kinectはその最大角までチルトします。(ex.4を引数に取るとき、4度分角度が上昇する。27度を超えた角度になるとき、Kinectは27度に静止する。)

Sample

kinect.TiltKinect(-6);

SetTiltAngleメソッド

Description
 Kinectのチルト角を任意の角度に設定します。チルト出来ないとき、falseが返ります。(ex.引数に4を指定したとき、Kinectの角度は上方向4度に設定されます。)

Sample

kinect.SetTiltAngle(20);

TiltUpメソッド

Description
 Kinectを2度、上にチルトします。チルト出来ないとき、falseが返ります。

Sample

     kinect.TiltUp();

TiltDownメソッド

Description
 Kinectを2度、下にチルトします。チルト出来ないとき、falseが返ります。

Sample

kinect.TiltDown();

References

捕捉

 「TiltUp」および「TiltDown」が2度ずつの変化であるのには二つ理由があります。まず、KinectForWindowsSDK1.0時点で、1度ずつの角度変更が実行されなかった場合があること。ElevationAngleの数値を出力すれば分かりますが、連続して取得できる値が1度程度ずつ乱れています。その影響あってのことだと推測されます。次に、1度ずつの変更では微々たる変化しか現れないこと。Kinectの角度を連続して徐々に徐々に変更する需要はありますが、1度ずつでは刻み過ぎです。しかも時間内の変更回数が定められているKinectでは拍車をかけて変化が遅くなるので、2度ずつで実装してあります。