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://github.com/schacon/kinectaby.git $ cd kinectaby $ rake compile $ rake test
require 'kinectaby' context = Kinectaby::Context.new context.num_devices context.shutdown 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 device.close # synchronous video/depth capture (i can get about 30fps) dframe = Kinectaby::Frame.new vframe = Kinectaby::Frame.new while true do puts "depth" Kinectaby.get_depth(dframe) puts frame.point(x, y) # 0 to 2047 puts "video" Kinectaby.get_video(vframe) puts frame.point(x, y) end
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.
- Scott Chacon firstname.lastname@example.org
MIT. See LICENSE file.