About the Depth Camera Controller

The Nitrogen Logic Depth Camera Controller is a standalone network interface for USB depth-sensing cameras such as Microsoft's Kinect. It can be used to add support for additional cameras to an Automation Controller, or as an addition to other automation systems.

Sensor Placement

To get the most from a Depth Camera Controller system, the placement of the depth sensor (such as a Kinect) must be considered carefully. In most rooms, placement in a corner will give optimum coverage. However, in areas with very high ceilings, overhead placement is ideal. In extreme cases, placement at an odd angle is permissible, but ideally the sensor should be either parallel or perpendicular with the ground.

Kinect for Xbox 360

The Kinect's built-in motor mount is a bit unstable over time, so it should be mounted by its body. Take care not to obstruct any vents, cameras, or microphone openings. Note that microphones are not supported by the Depth Camera Controller at this time.

At its limit with the Depth Camera Controller, the Kinect can see objects about 7m away on a 7m by 5m plane. The visible area is, of course, smaller at closer distances. At maximum distance, the horizontal and vertical resolution is about 1cm, while the distance resolution is about 10cm. These limits are reduced in areas with lots of infrared light (e.g. incandescent or halogen lamps, indirect sunlight). The Kinect barely works at all in direct sunlight.

Control Parameters

The following parameters are available for each zone:

occupied
Whether the zone is occupied. Zone occupation is determined by param and related parameters, with the default being presence detection using zone population.
bright
The brightness of the RGB image within the zone's pixel boundaries.
sa
The approximate surface area of the zone's contents, in mm².

xc
The zone's horizontal center of mass, in meters relative to the sensor.
yc
The zone's vertical center of mass, in meters relative to the sensor.
zc
The zone's perpendicular center of mass, in meters away from the sensor.
xmin
The zone's minimum X (horizontal) coordinate, in meters relative to the sensor.
xmax
The zone's maximum X (horizontal) coordinate, in meters relative to the sensor.
ymin
The zone's minimum Y (vertical) coordinate, in meters relative to the sensor.
ymax
The zone's maximum Y (vertical) coordinate, in meters relative to the sensor.
zmin
The zone's minimum Z (depth) coordinate, in meters away from the sensor.
zmax
The zone's maximum Z (depth) coordinate, in meters away from the sensor.

px_xmin
The zone's minimum X coordinate on screen, in pixels.
px_xmax
The zone's maximum X coordinate on screen, in pixels.
px_ymin
The zone's minimum Y coordinate on screen, in pixels.
px_ymax
The zone's maximum Y coordinate on screen, in pixels.
px_zmin
The zone's minimum Z coordinate on screen, in nonlinear depth units.
px_zmax
The zone's maximum Z coordinate on screen, in nonlinear depth units.

pop
Zone population. The number of sensor pixels with values inside the zone.
maxpop
Maximum population. The maximum number of pixels the zone may contain.
negate
Whether the zone's occupied parameter should be inverted.
param
The parameter that determines whether a zone is occupied.
on_level
The minimum value of the parameter specified by the zone's param parameter before the zone becomes occupied.
on_delay
The minimum number of frames param's value must be above on_level before the zone becomes occupied.
off_level
The minimum value of the parameter specified by the zone's param parameter before the zone becomes un-occupied.
off_delay
The minimum number of frames param's value must be below off_level before the zone becomes un-occupied.

Demonstration Video

The complete Depth Camera Controller setup process is documented in the following video: