• 検索結果がありません。

Caution 本資料に掲載されている情報は 開発中の製品および技術に関するものも含まれております これらは今後 変更される可能性もあります 当日のセミナーで使用する資料は 内容の変更やスライドの追加を行っている場合があります 最新のプレゼンテーション資料は以下のサイトからダウンロードして下さい h

N/A
N/A
Protected

Academic year: 2021

シェア "Caution 本資料に掲載されている情報は 開発中の製品および技術に関するものも含まれております これらは今後 変更される可能性もあります 当日のセミナーで使用する資料は 内容の変更やスライドの追加を行っている場合があります 最新のプレゼンテーション資料は以下のサイトからダウンロードして下さい h"

Copied!
31
0
0

読み込み中.... (全文を見る)

全文

(1)

Kinect for Windows SDK

~ Xbox 360® Kinect™ センサー プログラミング概要 ~

日本マイクロソフト株式会社 パートナーソリューション営業統括本部 パートナーテクノロジー本部 プリンシパル テクノロジーアドバイザー ジニアス平井(平井昌人) masath@microsoft.com

(2)

Caution

本資料に掲載されている情報は、開発中

の製品および技術に関するものも含まれ

ております。これらは今後、変更される

可能性もあります。

当日のセミナーで使用する資料は、内容

の変更やスライドの追加を行っている場

合があります。最新のプレゼンテーショ

ン資料は以下のサイトからダウンロード

して下さい。

http://www.MasatoHirai.com/

(3)

自己紹介

平井 昌人(ジニアス平井)

マイクロソフト株式会社 パートナーソリューション営業統括本部 パートナーテクノロジー本部 プリンシパル テクノロジーアドバイザー 0x2F 歳、横浜市在住。類い稀なプログラミング能力とデザイン センスを持った天才児?1993年に開発言語のサポートエンジニア としてマイクロソフトに入社。現在は SE として開発ベンダー、 SIer へ講演活動や技術支援を行っている。社歴は長いものの権限 とお金をまったく持っていないという技術オタクである。

メールアドレス

masath@microsoft.com

Twitter アカウント

@GeniusHirai

個人サイト

http://www.MasatoHirai.com

(4)

アジェンダ

Xbox® 360 + Kinect™

What’s Kinect™

Kinect Sensor Details

Kinect for Windows SDK

How to Install SDK & Setup

Welcome to Kinect Programing

Enjoy Sample Applications

(5)

Xbox 360® + Kinect

~ 世界累計販売台数が 1000 万台突破! ~

2011年 3月で 1000万台突破!(世界累計販売台数)

 発売 90日で 80万台! 

Xbox 360® 4GB + Kinect™

 希望小売価格 29,800円(税込) 

Xbox 360® 250GB + Kinect™

 希望小売価格 39,800 円(税込) 

Xbox 360® Kinect™ センサー

 希望小売価格 14,800 円 (税込)

(6)

What’s Kinect ?

(7)

What’s Kinect ?

(8)

Kinect センサーの構造

~ カメラ2台、マイク4台、赤外線レーザー1台 ~

MOTORIZED TILT RGB CAMERA MULTI-ARRAY MIC 3D DEPTH SENSORS

(9)

Kinect センサーの内部

(10)

Kinect センサーの仕様

~ 深度センサーによるモーションチャプチャーが特徴的 ~

Depth Sensor(近赤外線プロジェクタ)

 近赤外線を広範囲にレーザー照射  レーザー波長 830nm, 出力 60mW

RGB Camera(RGBカメラ)

 USB カメラと同じで映像センサーの役割

 32-bit Color VGA(640x480)30fps

Depth Sensor(近赤外線カメラ)

 照射されたレーザーの近赤外線パターン

を撮影するカメラ

 16-bit Mono QVGA(320x240)

 2m の位置で 1cm 以内の誤差

 視野角 水平57度、垂直43度、感知範囲 1.2m~3.5m

Multi-Array Microphone(内蔵マイク)

 音声認識、音源の位置や方向を検知

(11)

プレイスペース

~ 正直かなり広いスペースが必要なんです ~

GOOD SPACE

ENOUGH SPACE

NO SPACE

DANGER SPACE

(12)

Kinect の設置

~ PC で利用する場合は USB 延長ケーブルが欲しい ~

プレイスペース

Kinect 本体は 60~180cm の高さ

一人プレイは 1.8m / 二人プレイは 2.5m 以上離れる

ZOOM for Xbox 360 (NYKO)

 Kinect 用のアタッチメントレンズ

 必要な距離を約 40 %カット

 狭い部屋の方はこれが便利かも  Amazon で 2,499 円

(13)

Kinect for Windows SDK

~ Kinect for Windows SDK from Microsoft Research ~

2011.04.13:SDK の リリースをアナウンス

 MIX11 イベントで発表 

2011.06.17:Beta1 リリース

 一般公開&無償ダウンロード開始 

2011.07.29:Beta 1 Refresh

 バグ修正などドライバーの強化  プログラミング ガイドとウォークスルーなどのドキュメント拡充 

2011.11.04:Beta2 リリース

 Skeletal Frame 取得の高速化  x64 ビルドに対応(これまでは x86 のみ)  サンプルを追加(KinectAudioDemo, KinectWpfViewers) ※ 旧バージョンで作成したプロジェクトは、参照設定のやり直しと再ビルドが 必要なので注意 http://social.msdn.microsoft.com/Forums/en-US/kinectsdk/thread/da651816-78e5-4fba-916f-d08982f5ec19

(14)

Kinect SDK システム要件

~ Windows 7 が快適に動いている環境であれば OK ~

XBOX360 Kinect センサー

 USB 電源ケーブルで PC の USB ポートに接続可能であること

OS:Windows 7(32ビット、64ビット)

 Windows XP, Windows Vista には未対応  Windows 8 Developer Preview 対応

CPU:デュアルコア 2.66GHz 以上

 Kinect センサー内部だけでなく PC 側でも処理が必要なため

メモリ:2GB 以上

ビデオカード:DirectX 9.0c 対応のもの

開発ツール

 Visual Studio 2010(Express 可)

(15)

Kinect USB 電源ケーブル

~ Xbox 360 + Kinect 版をご購入の方はこれが必要 ~

USB の形状が微妙に違う

 そのままでは PC の USB ポートに 刺さらない  新型 Xbox360 では Kinect 専用の ポートがあるため 

USB 電源ケーブルを別途購入

 Xbox カスタマーサポートに TEL して注文  http://support.xbox.com/ja-jp/Pages/default.aspx  0120-220-34  シリアルNo  Xbox  Kinect  3,830 円  支払い方法  クレジット  代金引換

(16)

SDK のダウンロード

~ Step-by-Step ~

Kinect for Windows SDK のダウンロード

 http://www.kinectforwindows.org/download/

 KinectSDK-v1.0-beta2-x86.msi  KinectSDK-v1.0-beta2-x64.msi

 32-bit 版と 64-bit 版があるのでインストールする Windows 7 と

同じもの

ライセンス

 このバージョンでは

(17)

SDK のインストール

~ Step-by-Step ~

ダウンロードした msi ファイルを起動

 KinectSDK-v1.0-beta2-x86.msi または KinectSDK-v1.0-beta2-x64.msi  32-bit, 64-bit を間違えてもインストーラにはじかれる  既定のインストール先

 C:¥Program Files¥Microsoft SDKs¥Kinect¥v1.0 Beta2

インストール時の注意点

 他の Kinect ドライバーや古い SDK はアンインストールしておく  SDK のドライバーが正しくインス トールされない  Kinect センサーは絶対に USB ポートに接続しておかないこと  Visual Studio は終了しておく

(18)

Kinect センサードライバー認識

~ Step-by-Step ~

Kinect センサーの取り付け

 電源を入れた状態で Kinect センサーを USB ポートに接続  自動的にドライバーのインストールが開始される  Kinect センサーの 緑 LED ランプが点滅していれば OK 

Kinect ドライバー

 Microsoft Kinect Device

 Microsoft Kinect Audio Control  Microsoft Kinect Camera

(19)

Kinect センサーの動作確認

~ サンプルアプリの Skeletal Viewer で確認 ~

Sample Skeletal Viewer で動作確認

 [すべてのプログラム]-[Microsoft Kinect 1.0 Beta2

SDK]-[Sample Skeletal Viewer]を起動

 Kinect センサーからかなり離れないと認識不能(1.8m以上)  立ち上がった状態で体を動かす

 センサーの上下角度は自分で調整(壊さないようにね)  Skeletal View に骨格が表示されれば OK

(20)

Speech SDK のインストール

~ 次は音声認識もやっておこう ~

Microsoft Speech Platform Runtime

 x64 環境では 32-bit, 64-bit の両方をインストール

Microsoft Speech Platform - Software

Development Kit

 環境に合わせて x64 / x86

をインストール

Kinect for Windows

Language Pack

 日本語環境でも OK

サンプルで動作確認

 [Sample Kinect Audio Demo]  レッド/グリーン/ブルー

(21)

サンプルゲームで準備体操

~ プログラミングする前に準備体操をしましょう! ~

Sample Shape Game で体を慣らす

 [すべてのプログラム]-[Microsoft Kinect 1.0 Beta2

SDK]-[Sample Shape Game]を起動

(22)

プロジェクトの準備

~ Managed Code で Hello Kinect 的ものを作ろう ~

VS 2010 で新規プロジェクト(C# or VB)

 WPF アプリケーション 

Microsoft.Research.Kinect の参照

 GAC に入っているので [.NET]タブ  Microsoft.Research.Kinect.dll 

Kinect の初期化と終了処理

using Microsoft.Research.Kinect.Nui;

private Microsoft.Research.Kinect.Nui.Runtime nui;

private void Window_Loaded(object sender, RoutedEventArgs e) {

nui = Runtime.Kinects[0]; // 接続された Kinect のインデックス

nui.Initialize(RuntimeOptions.UseColor | RuntimeOptions.UseDepth |

RuntimeOptions.UseDepthAndPlayerIndex | RuntimeOptions.UseSkeletalTracking); }

private void Window_Unloaded(object sender, RoutedEventArgs e) { nui.Uninitialize();

(23)

RGBCamera イメージの取得

~ ライブ画像(生カメ)の取得と表示 ~

VideoStream のオープン

イベントハンドラ

Image コントロールへの描画

 XAML に Image コントロールを配置

nui.VideoStream.Open(ImageStreamType.Video, 2,

ImageResolution.Resolution640x480, ImageType.Color);

nui.VideoFrameReady +=

new EventHandler<ImageFrameReadyEventArgs>(nui_VideoFrameReady);

PlanarImage img = e.ImageFrame.Image; Image1.Source = BitmapSource.Create(

img.Width, img.Height, 96, 96, PixelFormats.Bgr32, null, img.Bits, img.Width*img.BytesPerPixel);

(24)

DepthCamera イメージの取得

~ 深度データイメージとプレイヤー判定 ~

DepthStream のオープンとイベントハンドラ

ビットデータの変換(単純な画像イメージでない)

 Walkthrogh の convertDepthFrame ヘルパ関数を参照  下位 3ビット = Player Index  残りのビット = 深度(ミリメートル単位) 

Image コントロールへの描画

nui.DepthStream.Open(ImageStreamType.Depth, 2,

ImageResolution.Resolution320x240, ImageType.DepthAndPlayerIndex); nui.DepthFrameReady +=

new EventHandler<ImageFrameReadyEventArgs>(nui_DepthFrameReady);

void nui_DepthFrameReady(object sender, ImageFrameReadyEventArgs e) { PlanarImage img = e.ImageFrame.Image; byte[] b = convertDepthFrame(img.Bits); Image1.Source = BitmapSource.Create( img.Width, img.Height, 96, 96,

PixelFormats.Bgr32, null, b, img.Width * 4); }

(25)

Skelton Data の処理

~ これぞ! Kinect プログラミング ~

SkeletonFrameReady イベントハンドラの定義

スケルトンデータの解析

 SkeletonFrame.Skeletonsプロパティで取得 

Canvas コントロールへ描画

 Polyline コントロール生成して Canvas に Add するパターン nui.SkeletonFrameReady +=

new EventHandler<SkeletonFrameReadyEventArgs>(nui_SkeletonFrameReady);

void nui_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) {

SkeletonFrame skeletonFrame = e.SkeletonFrame;

foreach (SkeletonData data in skeletonFrame.Skeletons) {

// ここに解析&表示用ポリゴンを記述

} }

(26)

Skeleton Joints

~ 骨格(スケルトン)は 20 か所のポイントが測定 ~

スケルトンジョイントポイント

 列挙型の JointID で示される JointID 人体の位置 Head 頭 ShoulderCenter 首元(両肩の間) Spine 胴(脊柱) HipCenter 腰 JointID 人体の位置 JpintID HandRight 手 HandLeft WristRight 手首 WristLeft ElbowRight 肘 ElbowLeft ShoulderRight 肩 ShoulderLeft HipRight 尻 HipLeft KneeRight 膝 KneeLeft AnkleRight 足首 AnkleLeft FootRight 足 FootLeft

(27)

Kinect PPT リモコンのコード例

~ スケルトンデータの座標や距離から動作・ポーズを判断 ~

 SkeletonFrameReady イベントハンドラで左右の手と頭の位置を利用  頭と右手が 右へ 45cm 離れたら [→]キーを送信 頭と左手が 左へ 45cm 離れたら [←]キーを送信  右手を頭に重ねたら[ESC]キーを送信

var head = m.Joints[JointID.Head];

var rightHand = m.Joints[JointID.HandRight];

var leftHand = m.Joints[JointID.HandLeft]; MyGesture(head, rightHand, leftHand);

if (rightHand.Position.X > head.Position.X + 0.45) { System.Windows.Forms.SendKeys.SendWait("{Right}"); }

if (leftHand.Position.X < head.Position.X - 0.45) { System.Windows.Forms.SendKeys.SendWait("{Left}"); }

if (Math.Abs(rightHand.Position.X - head.Position.X) < 0.05 && Math.Abs(rightHand.Position.Y - head.Position.Y) < 0.05) { dynamic obj = CreateObject("WScript.Shell");

obj.SendKeys("{Esc}"); }

(28)

CodePlex サンプル群

~ 後は色々なサンプルを見て理解を深めよう ~

敷居は低くないぞ!

 3D の知識(Camera, ViewPort, …)  ビット処理

Kinect Earth Move

Kinect Paint

(29)

モーションキャプチャーの時代へ

(30)
(31)

アンケートにご協力ください。

本セッション専用のアンケート用紙がございます。

お手数をお掛けしますが、ご協力ほどお願いします。

参照

関連したドキュメント

jGrants上にご登録されている内容から自動反

この資料には、当社または当社グループ(以下、TDKグループといいます。)に関する業績見通し、計

の知的財産権について、本書により、明示、黙示、禁反言、またはその他によるかを問わず、いかな るライセンスも付与されないものとします。Samsung は、当該製品に関する

「系統情報の公開」に関する留意事項

① 新株予約権行使時にお いて、当社または当社 子会社の取締役または 従業員その他これに準 ずる地位にあることを

はありますが、これまでの 40 人から 35

弊社または関係会社は本製品および関連情報につき、明示または黙示を問わず、いかなる権利を許諾するものでもなく、またそれらの市場適応性

荒天の際に係留する場合は、1つのビットに 2 本(可能であれば 3