27.01.2015 Views

how to get started in Linux with the Microsoft Kinect - Stony Brook ...

how to get started in Linux with the Microsoft Kinect - Stony Brook ...

how to get started in Linux with the Microsoft Kinect - Stony Brook ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Available Framework and Drivers<br />

Up <strong>to</strong> <strong>the</strong> date, <strong>the</strong>re are two platforms for <strong>the</strong> K<strong>in</strong>ect<br />

sensor available for L<strong>in</strong>ux 3 :<br />

OpenNI (Open Natural Interaction) [6]:<br />

A middleware delivered from a collaboration<br />

of PrimeSense <strong>to</strong> develop “natural <strong>in</strong>teraction”<br />

software and devices. It has skeletal track<strong>in</strong>g<br />

and gesture recognition. However, <strong>the</strong> OpenNI’s<br />

features on user track<strong>in</strong>g (<strong>in</strong> which an algorithm<br />

processes <strong>the</strong> depth image <strong>to</strong> determ<strong>in</strong>e <strong>the</strong> position<br />

of all of <strong>the</strong> jo<strong>in</strong>ts of any users <strong>with</strong><strong>in</strong> <strong>the</strong><br />

camera’s range) is not covered by <strong>the</strong> OpenNI<br />

LGPL license. Instead, it is provided by an external<br />

module, called NITE which is not available<br />

under an open source license.<br />

OpenK<strong>in</strong>ect [7]:<br />

This driver is known by its library name<br />

libfreenect and was <strong>the</strong> first K<strong>in</strong>ect driver available<br />

for general use and is fully open-source (dual<br />

Apache 2.0/GPL 2.0 license), cross-platform,<br />

and derived purely from reverse-eng<strong>in</strong>eer<strong>in</strong>g efforts.<br />

libfreenect implements low-level access <strong>to</strong><br />

<strong>the</strong> hardware by directly communicat<strong>in</strong>g <strong>with</strong><br />

<strong>the</strong> K<strong>in</strong>ect’s USB endpo<strong>in</strong>ts.<br />

The OpenK<strong>in</strong>ect driver was chosen for this project<br />

based upon its simple software <strong>in</strong>terface, low-level<br />

hardware access, cross-platform support, and support<br />

for multiple languages. In addition, libfreenect has<br />

<strong>the</strong> ability <strong>to</strong> retrieve uncalibrated depth images from<br />

<strong>the</strong> K<strong>in</strong>ect, for <strong>the</strong> depth calibration.<br />

Install<strong>in</strong>g <strong>the</strong> K<strong>in</strong>ect<br />

Hardware Requirement<br />

All you need <strong>to</strong> <strong>in</strong>stall <strong>the</strong> K<strong>in</strong>ect <strong>to</strong> your computer is<br />

a USB 2.0 hub (K<strong>in</strong>ect will take 70% of it <strong>to</strong> transmit<br />

data), a graphic card capable of hand<strong>in</strong>g OpenGL,<br />

and a mach<strong>in</strong>e that can handle 20MB/second of data.<br />

An additional power supply is needed for <strong>the</strong> K<strong>in</strong>ect<br />

Xbox 360 [4].<br />

3 The <strong>Microsoft</strong> SDK is only available for W<strong>in</strong>dows [1].<br />

Install<strong>in</strong>g <strong>the</strong> OpenK<strong>in</strong>ect on Fedora<br />

1. Install all <strong>the</strong> dependences (yum <strong>in</strong>stall...):<br />

• git-core, cmake, gcc, gcc++.<br />

• freeglut, freeglut-devel (library provided <strong>with</strong><br />

Mesa for creat<strong>in</strong>g w<strong>in</strong>dows conta<strong>in</strong><strong>in</strong>g OpenGL contexts).<br />

• pkg-config (<strong>to</strong>ol used when compil<strong>in</strong>g applications<br />

and libraries).<br />

• libXmu, libXmu-devel (X W<strong>in</strong>dow System library).<br />

• libXi, libXi-devel ( X W<strong>in</strong>dow System client <strong>in</strong>terface<br />

<strong>to</strong> <strong>the</strong> XINPUT extension <strong>to</strong> <strong>the</strong> X pro<strong>to</strong>col).<br />

• libusb1, libusb1-devel (library that gives applications<br />

access <strong>to</strong> USB devices).<br />

2. Create <strong>the</strong> files ”51-k<strong>in</strong>ect.rules” and ”66-k<strong>in</strong>ect.rules” <strong>in</strong><br />

/etc/udev/rules.d/ (see git reposi<strong>to</strong>ry [8]).<br />

3. Do git clone https://github.com/OpenK<strong>in</strong>ect/libfreenect.git<br />

and <strong>the</strong>n, <strong>in</strong>side <strong>the</strong> mkdir build dolder,do cmake .., make,<br />

and make <strong>in</strong>stall.<br />

4. sudo ldconfig /usr/local/lib64/, <strong>to</strong> create <strong>the</strong> l<strong>in</strong>ks and<br />

cache <strong>to</strong> <strong>the</strong> shared libraries <strong>to</strong> <strong>the</strong> dest<strong>in</strong>ation.<br />

5. sudo adduser [YourUserName] video, <strong>to</strong> add yourself <strong>to</strong> <strong>the</strong><br />

video sudoers list.<br />

6. F<strong>in</strong>ally, test: sudo glview or ./b<strong>in</strong>/glview. This should s<strong>how</strong><br />

<strong>the</strong> RGB camera capture and an attempt at fitt<strong>in</strong>g <strong>the</strong> color<br />

camera <strong>to</strong> <strong>the</strong> 3D space.<br />

Libraries: OpenCV and PCL<br />

OpenCV (Open Source Computer Vision) [9]:<br />

Pre-built library of real-time computer vision<br />

functions developed by Intel <strong>in</strong> <strong>the</strong> 90s. The<br />

library has over 500 functions <strong>in</strong> different areas<br />

of vision and image analysis <strong>in</strong>clud<strong>in</strong>g: gesture<br />

recognition, facial recognition, motion track<strong>in</strong>g,<br />

and 3D vision. It’s <strong>the</strong> base of my cameras’<br />

calibration.<br />

PCL (<strong>the</strong> Po<strong>in</strong>t Cloud Library) [10] PCL<br />

handles data acquired from many modern visual<br />

sensors. The scene is created by po<strong>in</strong>ts, and<br />

each po<strong>in</strong>t conta<strong>in</strong>s a position <strong>in</strong> space (x,y,z)<br />

and optional RGB color or gray-scale. Po<strong>in</strong>t<br />

clouds create a three dimensional picture and<br />

PCL merges po<strong>in</strong>t-clouds <strong>to</strong><strong>get</strong>her, filter<strong>in</strong>g out<br />

un<strong>in</strong>terest<strong>in</strong>g data po<strong>in</strong>ts, identify<strong>in</strong>g key po<strong>in</strong>ts<br />

<strong>in</strong> a scene, and sort<strong>in</strong>g data <strong>in</strong><strong>to</strong> tree-hierarchies.<br />

A bridge between <strong>the</strong> OpenK<strong>in</strong>ect driver and<br />

PCL is <strong>in</strong> my git repo [8].<br />

2

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!