Kinect 2セミナー
-
Upload
akira-hatsune -
Category
Education
-
view
96 -
download
0
Transcript of Kinect 2セミナー
![Page 1: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/1.jpg)
Kinect 2 セミナー2014.12.17 初音玲
1
![Page 2: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/2.jpg)
セッションの目的とゴール
セッションの目的
Kinect 1とKinect 2の違いを理解する
セッションのゴール
Kinect 2アプリが作れるようになる
2
![Page 3: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/3.jpg)
自己紹介Microsoft MVP / Oracle ACE / Tokyo Motion Control Network
初音玲twitter:@hatsune_
http://blogs.wankuma.com/hatsune/
3
![Page 4: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/4.jpg)
自己紹介
仕事略歴
システム企画
インフラ構築
業務アプリ構築
DB設計、構築、各種支援
略歴
Microsoft MVP (2008/04-2015/03)
Oracle ACE (2008/04-:日本で2人目)
@hatsune_
4
![Page 5: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/5.jpg)
最近の著作
5
![Page 6: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/6.jpg)
AEDオープンデータプラットフォーム
https://www.facebook.com/AEDSearch
全国のAED情報を一元管理(世界対応済)
オープンデータ無償利用可能【 CC BY 3.0 】
REST/JSONインターフェース県単位一覧、市町村区単位一覧、直近AED検索、周辺AED検索
登録用APIあり(現在は特定アプリにのみ公開し実証実験中)
対応アプリケーション (2014.9.1時点)
AED検索 for Windows 8 / for Windows Phone 8.1
AED検索Web版 (酢酸さん作)
http://aedmap.catchball.co/
6
![Page 7: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/7.jpg)
アジェンダ
Kinect v2とは
Kinect v2アプリ開発基礎
Kinect v2ハンズオン
Kinect v2データの扱い方
7
![Page 8: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/8.jpg)
Kinect v2とは
8
![Page 9: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/9.jpg)
9
IRカメラRGBカメラ
マイクアレイマイクアレイマイクアレイマイクアレイ
IRプロジェクタ
![Page 10: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/10.jpg)
システム要件
Kinect v1 Kinect v2
OS Windows 7~ Windows 8~
CPU Dual Core 2.66GHz~ Core i7 2.5GHz~
Memory 2GB~ 4GB~
USB USB 2.0 USB 3.0
GPU Direct X 9.0c~ Direct X 11.0~
開発環境 VS2010~ VS2012~
10
![Page 11: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/11.jpg)
v1.8からの相違点
v1.8 v2.0DP
カラー解像度 640x480 1920x1080
深度データ解像度 320x240 512x424
深度センサー方式 Light Coding Time of Flight
深度センサー測定可能距離
0.8m~4.0m (通常)
0.5m~3.5m (近接)
0.5m~4.5m (モード切替なし)
センサー視野角度(垂直/水平)
57度/43度 70度/60度
スケルトントラッキング 2人 6人
関節データ数 20か所 25か所
複数アプリの同時使用 × ○
手のひらの開閉 △Developer Toolkit ○
11
![Page 12: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/12.jpg)
接続
対応OS
Windows 8 (x64) / Windows 8.1 (x64)
Windows Embedded Standard 8 (x64)
対応SDK
Kinect for Windows SDK 2.0
12
Kinect 2 PCUSB3
.0
分離ボックス
電源
測定データ
電力
![Page 13: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/13.jpg)
ソフトウェア構成
新型Kinect
VB.NET
C#
C++
SDKKinect
Service
13
![Page 14: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/14.jpg)
Kinect SDK v1のデータの流れ
カラーデータ
深度データ SDK v1
ColorFrame
DepthFrame
SkeletonFrame
14
![Page 15: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/15.jpg)
Kinect SDK v2のデータの流れ
カラーデータ
深度データ SDK v2
ColorFrame
DepthFrame
BodyFrame
BodyIndexFrame
InfraredFrame
LongInfraredFrame
15
![Page 16: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/16.jpg)
Kinect v1のプログラミングの流れ
Sensor Stream Frame Data
16
![Page 17: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/17.jpg)
Kinect v2のプログラミングの流れ
Sensor Source ReaderReferen
ceFrame Data
17
![Page 18: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/18.jpg)
Kinect v2アプリ開発基礎
18
![Page 19: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/19.jpg)
映像系データ
ColorFrame
ColorFrameReader
ColorFrameSource
19
![Page 20: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/20.jpg)
デモKinect2ColorSample
20
![Page 21: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/21.jpg)
距離データ
DepthFrame
DepthFrameReader
DepthFrameSource
21
![Page 22: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/22.jpg)
デモKinect2DepthSample
22
![Page 23: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/23.jpg)
骨格データ
Body
BodyFrame
BodyIndex
BodyIndexFrame
23
![Page 24: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/24.jpg)
Kinectで身長を測ろう!
1.544-(-0.12)
=1.664m
24
![Page 25: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/25.jpg)
25
ElbowLeft
X=1.0
Y=0.8
Z=2.5
Z=4.5
-Y
+Y
-X
+X
ElbowRight
X=-1.4
Y=0.8
Z=2.5
X軸とY軸の原点はKinect 2の正面
Z=0.5
![Page 26: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/26.jpg)
3つのボーンの位置関係を判定せよ
26
ShoulderLeft
ElbowLeft
HandLeft
Y-Z判定 X判定
![Page 27: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/27.jpg)
デモKinect2BodySample
27
![Page 28: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/28.jpg)
デモKinect2Sample
29
![Page 29: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/29.jpg)
Kinect v2ハンズオン
30
![Page 30: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/30.jpg)
チェック
Microsoft Windows 8.1 (x64)
Visual Studio Community 2013
Kinect for Windows SDK v2.0
http://www.microsoft.com/en-
us/kinectforwindows/ ⇒[download]
![Page 31: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/31.jpg)
KineMissile
![Page 32: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/32.jpg)
不要なファイルの削除
![Page 33: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/33.jpg)
3つのフォルダを作成
Models
ViewModels
Views
【Views】画面定義などを記述
【ViewModels】複数のModelをまとめるなど
【Models】KinectやUSB機器と接続するコードを記述
![Page 34: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/34.jpg)
ViewsフォルダにMainPage.xamlを作成
フォルダ右クリック[追加]-[新しい項目]
![Page 35: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/35.jpg)
appmanifestの機能の設定
![Page 36: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/36.jpg)
ここでビルド
![Page 37: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/37.jpg)
コンパイルエラーの対応
![Page 38: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/38.jpg)
コンパイルエラーの対応
MainPage
![Page 39: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/39.jpg)
ソリューションエクスプローラープロジェクト名を右クリック⇒[追加]-[参照]
Kinect for Windows SDK v2への参照設定追加
![Page 40: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/40.jpg)
メニューバーの[ビルド]-[構成マネージャー]
Kinect SDKはx64専用なので実行時はx64
Visual Studioはx86専用なので編集時はx86
![Page 41: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/41.jpg)
教材をコピー
![Page 42: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/42.jpg)
フォルダ右クリック⇒[追加]-[既存の項目]
教材の2ファイルをそれぞれ所定のフォルダに追加
![Page 43: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/43.jpg)
ここでビルド
![Page 44: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/44.jpg)
<Grid.RowDefinitions><RowDefinition Height="140"/><RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="1"><Grid>
<Viewbox Height="700" Width="1024"><Image Source="{Binding ColorImageElement}" Stretch="UniformToFill" />
</Viewbox>
</Grid></StackPanel>
MainPage.xamlの編集
ここにコードを書く
こう書かれている部分を探す
![Page 45: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/45.jpg)
<Grid.RowDefinitions><RowDefinition Height="140"/><RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="1"><Grid>
<Viewbox Height="700" Width="1024"><Image Source="{Binding ColorImageElement}" Stretch="UniformToFill" />
</Viewbox>
</Grid></StackPanel>
MainPage.xamlの編集
![Page 46: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/46.jpg)
Private Model As New ViewModels.MainViewModel
Public Sub New()InitializeComponent()Me._navigationHelper = New Common.NavigationHelper(Me)AddHandler Me._navigationHelper.LoadState, AddressOf NavigationHelper_LoadStateAddHandler Me._navigationHelper.SaveState, AddressOf NavigationHelper_SaveState
Me.DataContext = Me.ModelEnd Sub
Private Sub NavigationHelper_LoadState(sender As Object, e As Common.LoadStateEventArgs)Me.Model.KinectConnect()
End Sub
Private Sub NavigationHelper_SaveState(sender As Object, e As Common.SaveStateEventArgs)Me.Model.KinectDisConnect()
End Sub
MainPage.xaml.vbの編集
![Page 47: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/47.jpg)
ここでビルド
![Page 48: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/48.jpg)
Kinectをつないでみよう
![Page 49: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/49.jpg)
ここで実行⇒カラーカメラの画像表示
![Page 50: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/50.jpg)
<StackPanel Grid.Row="1"><Grid>
<Viewbox Height="700" Width="1024"><Image Source="{Binding ColorImageElement}" Stretch="UniformToFill" />
</Viewbox>
<Viewbox Height="700" Width="1024"><Canvas Name="BodyCanvas" Height="1080" Width="1920"
DataContext="{Binding BodyImageElement}"><Rectangle Stroke="Red"
StrokeThickness="30" Width="200" Height="200"Canvas.Top="{Binding Top}" Canvas.Left="{Binding Left}" />
</Canvas></Viewbox>
</Grid></StackPanel>
MainPage.xamlへの追加編集
![Page 51: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/51.jpg)
頭部のボーンの取得コード例(KinectModel.vb)
カラー画像とボーンでは座標系が違う
座標をカラー画像に合わせる⇒MapCameraPointToColorSpace
Dim headPos = Me.Kinect.CoordinateMapper.MapCameraPointToColorSpace(born.Joints(JointType.Head).Position)
Me.BodyImageElement = New PosRect With {.Top = headPos.Y - 200 / 2,.Left = headPos.X - 200 / 2}
![Page 52: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/52.jpg)
ここで実行⇒画像の顔部分に赤い四角を表示
![Page 53: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/53.jpg)
腕を振り下ろすと機器操作のコード例(KinectModel.vb)
If (born.Joints(JointType.HandLeft).Position.Y > born.Joints(JointType.Head).Position.Y) Then
Me.IsUp = True
ElseIf (born.Joints(JointType.HandLeft).Position.Y < born.Joints(JointType.Head).Position.Y + 10) Then
If (Me.IsUp) Then
'ミサイル発射Me.IsUp = False
End If
End If
![Page 54: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/54.jpg)
FIN
55
![Page 55: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/55.jpg)
スタイリッシュなモーションとは
56
![Page 56: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/56.jpg)
57
ElbowLeft
X=1.0
Y=0.8
Z=2.5
Z=4.5
-Y
+Y
-X
+X
ElbowRight
X=-1.4
Y=0.8
Z=2.5
X軸とY軸の原点はKinect 2の正面
Z=0.5
![Page 57: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/57.jpg)
3つのボーンの位置関係を判定せよ
58
ShoulderLeft
ElbowLeft
HandLeft
Y-Z判定 X判定
![Page 58: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/58.jpg)
かっこよく左手を前に出すには?
59
![Page 59: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/59.jpg)
かっこよく左手を前に出すには?
60
![Page 60: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/60.jpg)
かっこよく左手を前に出すには?
61
![Page 61: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/61.jpg)
スタイリッシュモーション対応はスタイリッシュモーション限定ではない
62
スタイリッシュであればあるほどかっこいい出力(たとえば素早く)
普通のときは普通の出力(たとえば遅く)
![Page 62: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/62.jpg)
より素早い旋回へ
スタイリッシュな入力はスタイリッシュな出力へ
63旋回 信地旋回 超信地旋回
![Page 63: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/63.jpg)
より素早い旋回へ
どこで判定するのか
手がどれくらい前にでているか?
64旋回 信地旋回 超信地旋回
![Page 64: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/64.jpg)
より素早い旋回へ
何に対して手が前にどれくらいでている?
左肩からの距離?
65旋回 信地旋回 超信地旋回
体幹からの距離
![Page 65: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/65.jpg)
まとめ
66
![Page 66: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/66.jpg)
Kinect 2 SDKを使えば接続は簡単
WPFアプリやストアアプリで作ればかっこいい画面が作れる
もちろんUnityでも考え方は同じ。でも、.NET Frameworkのバージョンが…
かっこいいポーズは特撮/アニメに学ぼう
相対位置で考える。何に対して相対か?
67
![Page 67: Kinect 2セミナー](https://reader033.fdocuments.net/reader033/viewer/2022052700/55a202741a28ab3d268b46d1/html5/thumbnails/67.jpg)
FIN
68