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…