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 ...
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