Tuesday, April 19, 2011

Getting the Kinect to Play Nice with the BeagleBoard

We were a little skeptical at first about getting the Kinect to work with the BeagleBoard because we are working with ARM. Everything up till now was compiled for x86 for everything on the Kinect. Luckily the Kinect uses the standard USB library, so once we had the driver installed all the data could be read with relative ease.

We found another blog that outlined the steps we needed to follow in order to get the Kinect to work with Ubuntu 10.10. On the same blog in a post a few days later, we found instructions on how to install Kinect on the BeagleBoard.

Steps we took:

1. In the terminal install the required packages for Kinect

sudo apt-get install git-core cmake libglut3-dev pkg-config gcc g++ build-essential libxmu-dev libxi-dev libusb-1.0-0-dev doxygen graphviz git

2. Create a new dir for Kinect files

mkdir ~/kinect cd ~/kinect

3. Download and OpenNI from the git repo

git clone https://github.com/OpenNI/OpenNI.git

4. Edit the make file in ~/kinect/OpenNI/Platform/Linux-x86/Build:

Comment out the lines:

CFLAGS += -malign-double

and

ifeq ($(SSE_GENERATION), 2)
CFLAGS += -msse2
else
ifeq ($(SSE_GENERATION), 3)
CFLAGS += -msse3
else
($error "Only SSE2 and SSE3 are supported")
endif
endif

The -malign-double and -msse3 flags are only for x86 and will not work for gcc on ARM

5. Next install OpenNI

cd OpenNI/Platform/Linux-x86/Build
make && sudo make install

6. After this is done install the Kinect driver by giting (sp?) the sensor and Kinect driver git repo

cd ~/kinect/
git clone https://github.com/boilerbots/Sensor.git
cd Sensor
git checkout kinect

7. Finally install the sensor and Kinect driver

cd Platform/Linux-x86/Build
make && sudo make install

8. We did not have to install NITE, the middleware that allows for skeleton and gesture detection, because we are only processing raw depth data. If you want to install NITE see this blog.

All of the non-graphical examples will run, but any example with glut (an OpenGL command for displaying images on the screen) will seg fault. We have yet to find a way around this, but for our project, it is not necessary to see what the Kinect is seeing.

We only have around 86MB left on our 2GB MicroSD card after installing everything. In the middle of the Kinect installation we had to uninstall things in Gnome like the screensaver and audio applications so that the files could compile. Hopefully we do not need to transfer our information to a larger SD card...