Kinect Sensor
Glossary Item Box
Robotics Common: Depth Camera | Webcam Sensor
Microsoft Robotics Developer Studio | Send feedback on this topic |
Kinect Sensor
The Kinect Services support the following features:
- Depth image including Player Index
- RGB image
- Tilt (Get and Set)
- Microphone Array (not in simulation)
- Skeleton Tracking (not in simulation)
You can specify the resolution of the Depth and RGB cameras independently via a config file, as well as the depth camera mode.The config file also specifies whether you want skeleton tracking to be performed or not. If you do not use the skeleton data, you should not track it because there is a performance overhead. You cannot turn skeleton tracking on once the service is running, so it must be selected in the config file.
The Kinect depth sensor range is: minimum 800mm and maximum 4000mm. The Kinect for Windows Hardware can however be switched to Near Mode which provides a range of 500mm to 3000mm instead of the Default range. If you are using an Xbox Kinect with the Kinect for Windows SDK then Near Mode is not supported.
The Kinect uses Infrared so it can see through glass. Therefore it cannot be used reliably for obstacle avoidance if you have glass doors. Also because it uses IR, the Kinect will not work in direct sunlight, e.g. outdoors.
The Kinect service provides the following operations.
Operation | Description |
---|---|
DepthImageToSkeleton | Converts a pixel from Depth Image coordinates to Skeleton coordinates. |
DepthToColorImage | Converts a pixel from Depth coordinates to Color Image coordinates. |
Get | Gets the State of the Kinect service (listed above). |
GetDepthProperties | Gets the values of all the depth properties: Maximum, Minimum, TooFar, TooNear and Unknown. |
HttpGet | Gets the State via a HTTP request, usually from a web browser. |
HttpPost | Updates the State via a HTTP request. Used by the XSLT page to make changes. |
HttpQuery | Used to request different images from a web browser. |
QueryRawFrame | Used to get raw data from the Kinect. You can request any combination of Video, Depth and Skeleton frames. |
SetFrameRate | Sets the desired Frame Rate. |
SkeletonToColorImage | Converts a pixel from Skeleton coordinates to Color Image coordinates. |
SkeletonToDepthImage | Converts a pixel from Skeleton coordinates to Depth Image coordinates. |
Subscribe | Subscribe to notifications. Only SetFrameRate and UpdateTilt generate notifications. |
UpdateSkeletalSmoothing | Used to update the skeletal smoothing parameters and turn smoothing on or off. |
UpdateTilt | Adjusts the tilt angle of the camera. |
You can issue QueryRawFrame requests to the Kinect service and ask for any combination of depth, RGB and skeleton joint data. You cannot obtain this information via notifications.
Use the UpdateTilt operation to tilt the camera up or down. If you want to know the current tilt angle, you can do a Get and read it from the state. Note that the actual angle depends on whether the whole Kinect sensor is tilted or not. It has an accelerometer that allows it to sense the direction of gravity, i.e. which way is down.
The state of a Kinect is represented the following properties.
Name | Type | Description |
---|---|---|
ColorImageFormat | ColorImageFormat* | The format of the Color (Video) image (as an enum value). |
DepthImageFormat | DepthImageFormat* | The format of Depth image (as an enum value). |
DepthStreamRange | DepthRange* | The range to use for Depth data (as an enum value - Default or Near). The Near value can only be used with |
DeviceID | int | The ID of the selected Kinect camera. |
FrameRate | Double | The target frame rate in frames per second (fps). This cannot exceed MaxFrameRate. |
IsDepthServiceUpdateEnabled | bool | Enables notifications on depth images. Turn it off to improve performance and then query the Kinect for data. |
IsWebCamServiceUpdateEnabled | bool | Enables notifications on the video images. Turn it off to improve performance and then query the Kinect for data. |
MaxFrameRate | double | The maximum frame rate that can be set (in fps). This is a constant and cannot be changed. |
SkeletalEngineTransformSmoothParameters | TransformSmoothParameters* | The parameters for skeletal data smoothing. |
TiltDegrees | double | The current camera tilt angle in degrees. The valid range is -27 to +27. |
TransformSmooth | Bool | Enables skeletal data smoothing. |
UseColor | bool | Used to enable the color video stream at startup. See the documentation for the Kinect for Windows SDK. |
UseDepth | bool | Used to enable the Depth stream at startup. |
UseSkeletalTracking | bool | Used to enable Skeleton Tracking at startup. |
Data types marked with an asterisk (*) come from the Kinect for Windows SDK. Refer to the Kinect for Windows SDK documentation for more information.
Note that the state can be set using a config file. Many of the values cannot be modified after the service has been started.
The skeleton data consists of a set of joints. These joints are shown in the diagram below.
The coordinate system for the skeleton data is a full 3D system with values in meters. It is shown in the following diagram.
There are operations for converting between Skeleton Space and Depth Image space. The Kinect for Windows SDK supports up to two players (skeletons) being tracked at the same time. A player index is inserted into the lower 3 bits of the depth data so that you can tell which depth pixels belong to which player. You must take these 3 bits into account when you want to examine the depth values.
For more information about the Kinect, see the Kinect Services for RDS document in the Documentation folder of your RDS installation. Also there are topics describing the Generic Depth Camera and Webcam Sensor contracts which are implemented for the Kinect.
See Also |
Robotics Common: Depth Camera | Webcam Sensor
© 2012 Microsoft Corporation. All Rights Reserved.