Skip to content
ruby bindings to libfreenect
C Ruby
Find file
Failed to load latest commit information.
examples update readme and simpler gl example
ext/kinectaby fix for data array and crappy opengl example
lib some helper methods
test some helper methods
LICENSE i think this is the opposite, actually
Rakefile basic init, shutdown and device counting working
TODO.txt basic init, shutdown and device counting working
kinectaby.gemspec basic init, shutdown and device counting working

Kinectaby - libfreenect Ruby bindings

Kinectaby is a first pass at Ruby bindings to the amazing Kinect libfreenect driver.


First you need a Kinect.

Then you need to install libfreenect.

Next, you need to install rake-compiler:

$ sudo gem install rake-compiler

Then you need to get and compile this.

$ git clone git://
$ cd kinectaby
$ rake compile
$ rake test


require 'kinectaby'

context =

device = context.open_device(0)
# OR #
device = Kinectaby.device  # will just get the first one
device.led = Kinectaby::LED_RED
device.tilt = 30 # degree tilt, from -30 to 30

# synchronous video/depth capture (i can get about 30fps)

dframe =
vframe =

while true do
  puts "depth"
  puts frame.point(x, y) # 0 to 2047

  puts "video"
  puts frame.point(x, y)


I'm still playing with the values I'm getting back (sorry, I'm kind of new at this), but for now the get_depth() call returns a frame with 640x480 data points, each an 11 bit value (0 to 2047, where 2047 is far away and 0 is close to the camera).

example output from the examples/viewer.rb opengl ruby script looking at the depth data:

and this is how to properly mount the device for optimal image capture:

That opengl script is horribly slow, once I figure out what kind of data I need from each frame, I can do it in C and process them a lot faster.

I'm still playing with the video data, but it's similar. It returns a 32-bit RGB integer value, I believe. I'll try to get an example gl script to show that off too.


So for now only synchronous data capture is possible - eventually I would like to get the async callbacks implemented as well. There are also some log calls and a log callback that should be bound. Finally, there is tilt and accelerometer data you can capture that we should be able to get. I've marked all the calls I haven't bound as 'TODO' in the kinectaby.c file. Eventually I should probably also split that out into seperate files.


Fork schacon/kinectaby on GitHub, make it awesomer (preferably in a branch named for the topic), send me a pull request.



MIT. See LICENSE file.

Something went wrong with that request. Please try again.