-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME
85 lines (65 loc) · 3.42 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
Kinect Management Server
The Kinect Management Server (KMS) is a service for the "Pursuit" game that detects and manages up to four
players using two Microsoft Kinect sensors via Annonymous Pipes.
Design:
The KMS is composed of four modules:
- The main KinectManagementServer
- The KinectClient
- The GestureModule
- The SocketServer
Kinect Management Server:
This is the entry point for the service. During initialization, the KMS searches for all Kinects connected to the
system via USB. For each Kinect found, the service will spawn a Kinect Client that will manage that Kinect. The
KMS will also create a GestureModule for detecting and reporting player poses and gestures. Finally, the KMS connects
to a Unity game instance via the Socket Server component.
Kinect Client:
The Kinect Client is responsible for starting and managing one Kinect sensor. After starting the sensor, the Kinect Client
streams live skeleton data to the KMS by means of Interprocess Communication. Right now, the Kinect Client can stream to
the server via Annomymous Pipes or TCP sockets.
Gesture Module:
The Gesture Module is responsible for analysing the skeleton data received from the Kinect Clients and determining whether
a pose or gesture has been executed by a player. The Gesture Module will then post these events to the KMS for transmittal
to the Unity game via the Socket Server.
Socket Server:
The Socket Server is responsible for gathering the pose and gesture events, parsing them to a JSON string, which is then
streamed via a socket to an instance of the Unity game. The Unity game can then act appropriately on these events.
Changelog:
02/17/2012: Daniel Kennedy
- Created the solution for the KMS
- Added projects for the four modules
- Finished documenting the Kinect Client and organised the code
- Updated the README with the general design for the KMS
- Configured the GIT repository settings (gitignore)
02/19/2012: Daniel Kennedy
- Started preliminary design. Will use a Scheduler design pattern
- Implemented inter-thread communication between the pipe threads and the main thread
- Some cleanup and commenting
02/20/2012: Yuxin Ma
- Added GestureModule related classes
- Made further effort towards making GestureModule compatible with KMS
02/21/2012: Daniel Kennedy
- Cleanup and added preprocessor commands for console notifications.
02/21/2012: Yuxin Ma
- Further effort into getting GestureModule to work with KMS
- Fixed GestureModule related redlines
02/23/2012: Daniel Kennedy
- Finished integrating the Gesture thread into the KMS.
02/24/2012: Yuxin Ma
- Refactored GestureModule to get rid of cross reference issues
- Made so that GestureModule.ProcessPlayer return GestureEvent
02/25/2012: Bailey Hayes
- Refactored GestureEvent ToString to JSON format and contains new event properties
- Refactored DemoClient to send JSON formatted strings with concatenated GestureEvents
02/25/2012: Daniel Kennedy
- Refactored the Pose classes to handle the new GestureEvent class
- Finished setting up the UnityInterface
- Refactored the UnityInterface class
- Documented the UnityInterface class
02/28/2012: Yuxin Ma
- Made a temporary hack to PoseRightHandUp changed message to "handup" to help demo
- Made PoseLeanRight PoseLeanLeft PoseLeanStop classes
03/11/2012: Daniel Kennedy
- Refactored the KMS code to make use of properties
- Fixed player management
03/15/2012: Daniel Kennedy
- Pushing Yuxin's updated Gesture Module.