QConTokyo 2013のKINECTセッション資料

QConTokyo 2013で私のKINECTセッションに参加された方、ありがとうございました。 当日の資料は、http://sdrv.ms/ZQpR9Z から公開します。KINECT for Windows Sensorを組込み系で使ってみたい方、ご一読を。 ※KINECTセンサーでアプリを組んでいいのは、Windows 7、Windows 8、またはそれらをベースにしたWindows Embedded OS、と KINECT for Windows SDKの組合せだけです。LinuxやMac OS、Open NIなど、それ以外の組合せでは使えないので、ご注意くださいね。  

0

Kinect for Windows SDK + XNA Studio on Windows 8

今日はQConTokyo 2013でKinectに関する講演を行うわけですが、Kinect for Windows SDKに関する小ネタを一つ。 SDKに含まれるサンプルでXNAを使う、マッチョマンアバターのデモがありますが、あれは、単にSDKをインストールしただけだと、動かすことができません。 このデモを動かしたい場合、XNA Studioのインストールが必要になります。Windows 8の場合は、以下の手順でXNA Studioをインストールしてみてください。 1.Games for Windows マーケットプレイスクライアントをインストールまず、http://www.xbox.com/ja-jp/LIVE/PC/DownloadClient からソフトをダウンロードしてインストールしてください。これを入れないと、XNA Studioのインストールが失敗します。 2.XNA Studio 4.0 RefleshのインストールRefleshの方をインストールしてください。ダウンロードは http://www.microsoft.com/en-us/download/details.aspx?id=27599 から。 残念ながら、このサンプルはデフォルトではVisual Studio 2010でしか動きません。勿論他のサンプルはVisual Studio 2012でも動きますので、そこのところ間違いなきよう。 以上。

0

Kinect for Windows SDK 1.6の新機能

この間の月曜日(2012/10/8)に、Kinect for Windows SDKの最新版、1.6がリリースされました。興味のある方は早速、 http://www.microsoft.com/en-us/kinectforwindows/ からSDKをダウンロードして試してみてください。 色々とアップデートがあるのですが、ここでは、主要な新機能だけ紹介しておきます。 まず、Windows 8のデスクトップアプリ開発で使えるようになりました。Visual Studio 2012でもKinectを活用したデスクトップアプリが開発可能になっています。 次に、深度センサーの計測値が4m以上の値も測れるようになっています。 それから、赤外線の生データをゲットすることができるようになっています。 また、センサー筐体の傾きを測る、加速度センサーが追加されています。3軸の値が得られるので、センサーを水平に置いたり、計測中のセンサーの傾きから、重力方向に対する補正ができます。 他に、Hyper-Vなどバーチャルマシン上でもKinectが使えるようになりました。 詳しくは、http://msdn.microsoft.com/en-us/library/jj663803.aspx#SDK_1pt6_M2 を見てくださいね。 最後に、インストールの手順を紹介しておきます。 冒頭に紹介したURLのページで、 先ず、DOWNLOAD LATEST SDKをクリックして、SDKをインストールします。 次に、DOWNLOAD TOOLKITをクリックして、TOOLKITをインストールします。 インストールが終わったら、”Kinect for Windows Developer Toolkit ver 1.6.0”を起動します。 SDKsタブをクリックして、Speech SDKや、XNA Studioなど必要なものを更にインストールしておきましょう。 手っ取り早く、すべての機能を確認したい方は、Toolsタブの Kinect Explorerの”Run”を起動してみてください。Installボタンをクリックすれば、このサンプルアプリの全コードの参照も可能です。  

0

Kinect for Windows Sensor + SDK – その6 Skeleton Tracking

さて、漸くSkeleton Trachingを解説します。これもかなり興味深い機能です。 Skeletonの機能をおさらいしておきましょう。Kinectセンサーで取得できる人体の部位は、以下の20点です。 頭 – Head 肩中央 – ShoulderCenter 左肩 – ShoulderLeft 右肩 – ShoulderRight 鳩尾(背骨) – Spine 左肘 – ElbowLeft 右肘 – ElbowRight 左手首 – WristLeft 右手首 – WristRight 左手のひら – HandLeft 右手のひら – HandRight おしり中心 – HipCenter おしりの左 – HipLeft おしりの右 – HipRight 左膝 – KneeLeft 右膝 – KneeRight 左足首 – AnkleLeft 右足首…

0

Kinect for Windows Sensor + SDK – その5 深度情報計測とスケルトンの組合せ

さてさて、その4で紹介した画像、よく見るとダブル#が…いやそうでなく、よく見ると円がありますね。これは、スケルトン情報を元に描いている円です。 ベータ版のときからのKinectセンサーユーザーなら、もうスケルトンは既知の内容で、スティックフィギュアを頭に描く人も多いでしょう。このポストでは、深度情報を計測している時に取得できるスケルトン情報を説明します。 その2(だったと思う)で、深度情報で人がいることを感知するには、SkeletonFrameをEnableにする必要があると説明しましたね。一方で深度情報は6人まで認識できますよとも説明しました。では6人識別している時のスケルトン情報って何なの…というのがこのポストの主題です。 Kinect for Windows SDKの場合、Managed APIがあって、C#であっという間にプログラミングが出来るので、理屈や説明は抜きにして、コードを書いて試してみましょう。その4までで説明してきたDepthFrameのDepthFrameReadyイベントのハンドラ内で、スケルトン情報を取り出す方法を以下に説明していきます。 スケルトン情報を取り出すのはとても簡単で、             var skeletonStream = kinectSensor.SkeletonStream; kinectSensor変数は、イベントハンドラの引数で渡されるsenderをもとに             var kinectSensor = (KinectSensor)sender; でOKです。             using (var skeletonFrame = skeletonStream.OpenNextFrame(0))        —- ①            {                if (skeletonFrame != null)        —- ②                {                    Skeleton[] skeletons = new Skeleton[skeletonFrame.SkeletonArrayLength];        —- ③                    skeletonFrame.CopySkeletonDataTo(skeletons);        —- ④                    foreach (var skeleton in skeletons)         —- ⑤                    {                       …

0

Kinect For Windows Sensor + SDK – その4 深度情報と実画像のマッピング

その3のポストの最後に挙げた写真、注意深く見ると、深度と実画像の重ねあわせが微妙にずれている・・・なんて思いませんか? 実はずれているんです。深度画像のフォーマットと実画像のフォーマットをもう一度おさらいすると、 深度画像 実画像 というデータ列です。縦横のピクセル数を比較すれば一目瞭然、2倍ずつ異なるので、私のような画像処理と数学をちょっとだけ齧ったような輩は「じゃあ深度の各ピクセルを2倍にして重ねればいいじゃん!」なんて浅はかな考えを持ってしまいます。例えばこんな感じ。             for (int i16 = 0; i16 < depthFrame.Length ; i16++, i32 += 4)            {                int player = depthFrame[i16] & DepthImageFrame.PlayerIndexBitmask;                int realDepth = depthFrame[i16] >> DepthImageFrame.PlayerIndexBitmaskWidth;                byte redIntensity = 0;                byte greenIntensity = 0;                byte blueIntensity = 0;                 // playerとrealDepthを元に、各点の色合いを決めて、redintensity,greenIntensity,blueIntensityを決める。詳細は割愛                 int x = i16 % picxelWidth;                int y…

1

Kinect for Windows Sensor + SDK – その3 深度情報

さて、第三弾です。このポストでは、深度情報のセンシングに関する説明を行います。深度だけに、深度情報は奥が深いんだよね… ま、冗談はさておき、このシリーズのその1、その2を踏まえ、実画像に深度画像を組み合わせて表示する方法を説明していきます。単に深度情報を取得するだけではつまらないので、人も認識できるプログラムです。 先ずは、Visual Studioで一つWPFアプリプロジェクトを作ってください。MainWindow.xamlの<Grid></Grid>にImageを追加しておきます。     <Grid>        <Image Name=”ImageFrame” HrizontalAignment=”Center” VerticalAlignment=”Center” Stretch=”Uniform”/>    </Grid> そして、MainWindow.xaml.csのusing宣言に、     using Microsoft.Kinect; を追加します。そして、MainWindowsクラスに、以下のメンバーを追加します。         KinectSensor mySensor; さらに、MainWindowクラスのコンストラクタ、MainWindow()メソッドに、以下の記述を加えます。             if (KinectSensor.KinectSensors.Count > 0)                mySensor = KinectSensor.KinectSensors[0];                 mySensor.ColorStream.Enable(ColorImageFormat.RgbResolution640x480Fps30);  —- ①                mySensor.DepthStream.Enable(DepthImageFormat.Resolution320x240Fps30);         —- ②                mySensor.DepthStream.Range = DepthRange.Near;    —- ③                mySensor.SkeletonStream.Enable();     —- ④                                mySensor.DepthFrameReady +=          —- ⑤                    new EventHandler<DepthImageFrameReadyEventArgs>(mySensor_DepthFrameReady);                 mySensor.Start();                 if (mySensor.ElevationAngle != 0)   …

0

Kinect for Windows SensorとSDK – その2 – ベータ版との違い

さて、調子に乗って続け、ようっ!! SDKのベータ版時代から、アプリを作っていた皆さんにとって、もっとも気になっているのが「APIどう変わったの?」という点でしょう。 Managed版は、かなり変わっています。…ま、かなり整理されて使いやすくなっているので、早く新しいAPIになじんでくださいね。順にベータの時と比較しながら、説明していきます。 1. 名前空間変わりました!! ベータ版までは、名前空間が、”Microsoft.Research.Kinect”、だったのが、”Microsoft.Kinect”に変わっています。…正式版になったな…という感じですね。それに伴い、参照設定のアセンブリ名も変わっているので、ベータ版対応版のアプリを移植する際には、一旦昔のアセンブリの参照を削除して、新しく、Microsoft.Kinectを選択して直してください。 これにより、プログラムの先頭は、 ベータ版 using Microsoft.Research.Kinect; 正式版 using Microsoft.Kinect; に変更してください。 2. センサーオブジェクト ご存知?の通り、Kinect for Windows SDKでは、複数のKinectセンサーを一台のPCにつないで操作可能です。ベータ版の時は”Runtime”というかなり無理やりな名前のクラスからセンサーオブジェクトを取り出すようになっていましたが、正式版では、”KinectSensor”という名前のクラスが用意されています。 取り出すコードは、以下の様になります。 ベータ版 Runtime kinectSensor;if (Runtime.Kinects.Count > 0) { kinectKinect = Runtime.Kinects[0]; 正式版 KinectSensor kinectSensor;if (KinectSensor.KinectSensors.Count > 0){ kinectSensor = KinectSensor.KinectSensors[0]; 3. 各種ストリームの初期化 センサーオブジェクトが取り出せたら、次は各種ストリームの、初期化です。 // 実画像ストリーム kinectSensor.ColorStream.Enable( ColorImageFormat.RgbResolution640x480Fps30); // 深度画像ストリーム kinectSensor.DepthStream.Enable( DepthImageFormat.Resolution320x240Fps30); // スケルトンストリーム kinectSensor.SkeletonStream.Enable(); kinectSensor.DepthStream.Range…

0

Kinect for Windows SensorとSDK正式版 – その1

2/2に販売が開始されたWindows専用のKinect for Windowsセンサー、そして同時にリリースされたKinect for Windows SDK1.0正式版に関する投稿です。 色々説明したいことがあるので、何回かに分けて説明していきます。一回目は、センサー、SDKの概要、変更点です。 先ず見た目。ロゴが変わっています。XBOX版の時は、XBOXというロゴが付いていましたが、シンプルに”KINECT”です。ケーブルがUSBケーブルになっているので、そのままWindows PCに挿入可能です。XBOXのコネクタは形状が異なるので、XBOXに挿入することは出来ません。Microsoftストアー、その他で販売しています。 http://www.microsoftstore.jp/Form/Product/ProductDetail.aspx?shop=0&cat=&swrd=kinect+%e3%82%bb%e3%83%b3%e3%82%b5%e3%83%bc&pid=GME0000142 2012年2月20日現在では、入荷待ちになってますね。 装備されているセンサー類やマイクは、XBOX版と同じです。一番の違いは、40cm~4mまでセンス可能になっているところです。Windows PCで、このセンサーを使ったプログラミングを行うには、Kinect for Windows SDKを利用します。このセンサーとSDKの組合せで作ったアプリケーションや様々なソリューションは、商用利用が可能です。 Kinect for Windows SDKは、http://www.kinectforwindows.org からダウンロード可能です。ロゴの直下の右端の”DEVELOP”をクリックするとDOWNLOAD SDKと書かれたページが表示され、そこからダウンロードしてください。 …多分、このブログを読んでいる人の多くは、ベータ版の時からSDKをインストールしている人ばかりでしょうw。既にベータ版をインストールしている方は、一旦古いSDKをアンインストールしてください。それから、かなりの確率でSpeech SDKをインストールしている人も多かろうと…そんなマニアな方は、Speech SDKのアンインストールも忘れずに。 SDKをインストールすると、”Kinect SDK Sample Browser”というアプリケーションがインストールされます。早速起動してみましょう。 こんな画面が表示されます。ベータ版から比べると、APIはかなりブラッシュアップされて変わっているので、「待ちきれない!!」という人は、上から2番目の”Kinect SDK API Reference”をクリックして新しいAPIを堪能してください。Kinectセンサーが手元になくてもご覧になれます。 幸運にも手元にKinect for Windowsセンサーがある!!、という方、早速PCにつないで、Kinect Explorerの”Run Sample”というボタンをクリックしましょう。 このように、実画像+スケルトン、深度画像+スケルトン、その他諸々の情報が表示されるサンプルが起動されます。実画像+スケルトンの左下の数字は、一秒あたり30フレームで表示していることを示しています。深度画像+スケルトンはの左下にある数字は、1秒あたり、29フレームで表示していることを示しています。その下に帯が二つあって、オレンジ色と赤い色でハイライトグラデーションされている表示がありますね。これは音声が聞こえている方向を表示しています。実画像の右下に青い縞のシャツの肩が映って(筆者です。人として認識されなかったのでスケルトン表示なし、深度情報で色なし)いますが、私が、「はい、ポーズとってね」との話し声をセンスしたことを示しています。 この画面には映っていませんが、左下のKinect Sensorと書かれた文字列の左下にある丸に下向きのアイコンをクリックすると、Kinectセンサーの仰角を操作するUIが表示されます。+10度ぐらい、-10度ぐらいの指示を繰り返すと、まるで、Kinectセンサーが肯いているような制御も可能です。勿論、仰角に合わせて、表示されている領域が上下します。テレビの演出で、カメラマンが出演者に肯いている画像が偶にありますが、あんな感じです。 Kinect SDK Sample Browserの、”Run Sample”ボタンの右横に、”Install”というボタンがありますが、ここをクリックすると、サンプルのコード一式が好みの場所に用意されます。Kinect Explorerは、Kinect SDKの機能をほぼ使っているので、このサンプルコードを熟読してみてください。 他にも、ベータの時から提供されていた、”Shape Game”、”Skeletal Viewer”もこのBrowserアプリから起動やインストールが可能です。他に、”Kinect Audio Demo(C#)”、”Record Audio(C#)、”Speech(C#)”、”Audio Capture…

0

Robotics Developer Studio 4.0 Beta + Kinect for Windows SDK 1.0 Beta 2

Microsoft Researchから、Robotics Developer Studioの最新バージョン4.0のベータ版が公開されています。しかしこのバージョン、2011/11/25現在ではKinect for Windows SDK 1.0 Beta 2に未対応です。 え?RDSってKinectに関係してたっけ・・・ですって?RDS4からセンサーの一種としてKinectセンサーが仲間入りして、Kinectセンサーのシミュレーションサービス、実Kinectセンサー向けサービスが追加されています。Kinectを使ったシミュレーションもサンプルとして用意されています。 しかし、RDS(Robotics Developer Studio)4.0 Betaが公開されて直ぐに、K4W(Kinect for Windows) SDKが1.0 Beta 2にアップデートされてしまったので、そのままでは動きません。また、K4W SDK 1.0 Beta 2をインストールした状態で、RDS4.0 Betaをインストールすると、KinectセンサーをWindows PCが認識しなくなってしまうので、注意が必要です。 以下、RDS4.0 BetaとK4W SDK 1.0 Beta 2を共存させる方法を説明します。※多分、RDSも対応版がそのうちに出ると思うので、このポストの日から随分経った後にこのブログを呼んでいる方は、http://www.microsoft.com/robotics をチェックしてみてください。 既にRDSもK4W SDKもインストール済みの場合は、両方をアンインストール RDS4.0 Betaをインストール K4W SDK 1.0 Beta 2をインストール※ここで一旦Kinectが動くかK4W SDKのサンプルアプリで動作を確認しておきましょう。 http://mrdssamples.codeplex.com/releases/view/76620 からKinectFix.zipをダウンロード KinectFix.zipのブロックを外し、RDSがインストールされたフォルダーに中身(KinectFix.exe)をコピー※RDSのインストール先は、デフォルトで、c:\Users\{UserName}\Microsoft Robotics Dev Studio 4 Beta KinectFix.exeを実行 スタートメニュー→Microsoft Robotics Developer Studio 4…

0