Links
PandaBoard
OMAPpedia
OMAPpedia PandaBoard
Ubuntu ARM
 
Related videos
PandaBoard Color Tracking
PandaBoard Face Detection
 
Embedded Computer Vision Platform with PandaBoard

last update 19/03/2012

 
Hello everyone,

On this page I explain how to install and configure PandaBoard with Ubuntu Server, OpenCV, Boost C++ Libraries and Playstation Eye camera.

Software version:
* Ubuntu Server 11.10 (is more faster than desktop version)
* OpenCV 2.3.1
* Boost C++ Libraries 1.46

Tip: I recommend to use sd card class 10 for better performance.

First, download ubuntu-11.10-preinstalled-server-armel+omap4.img.gz from http://cdimage.ubuntu.com/releases/11.10/release/ (Preinstalled server image -> Texas Instruments OMAP4 preinstalled server image)

Copy the image to SD card, see instructions here https://wiki.ubuntu.com/ARM/Server/Install

Setup a serial terminal, see instructions here http://omappedia.org/wiki/Minicom

Connect a keyboard and mouse.
Connect your board on internet using Ethernet port.

Insert the SD card in your platform and turn on the board, wait a few seconds for boot, install and configure the operating system.

The Ubuntu Server has no graphical interface (GUI), so install LightDM and Ubuntu Desktop:
sudo apt-get install lightdm
sudo apt-get install --no-install-recommends ubuntu-desktop

Install OMAP4 Addons, see instructions here http://omappedia.org/wiki/Ubuntu_PPA

SGX Video Acceleration
https://wiki.ubuntu.com/ARM/OMAP/Graphics

Install the following tools:
* chkconfig
* GIT (for OpenCV)
* SVN (optional)
* SSH Server (optional)
sudo apt-get install chkconfig git-core subversion openssh-server
 
PlayStation®Eye Camera
 
Connect your PS EYE camera, and run lsusb, make sure it was detected.

You can use guvcview to test the camera and display the frame rate:
sudo apt-get install gtk2-engines-pixbuf guvcview
guvcview -d /dev/video2 -p 1

Check if guvcview can display camera capture.

Tip: the gtk2-engines-pixbuf is to solving Gtk-WARNING **: Unable to locate theme engine in module_path: "pixmap"
 
Boost C++ Libraries
 
Install Boost C++ Libraries by
sudo apt-get install libboost.*1.46.1 libboost.*1.46-dev

Test if all is ok with this sample code (copy and paste in main.cpp file):
//////////////////////////////////////////////////////////////////////////
#include < boost/thread/thread.hpp >
#include < iostream >

void thread_function(){
std::cout << "Thread" << std::endl;
}

int main(int argc, char **argv){
std::cout << "-------------------------" << std::endl;
std::cout << "Test Boost Library v1.46 " << std::endl;
std::cout << "-------------------------" << std::endl;

boost::thread mythread(&thread_function);

mythread.join();

return 0;
}
//////////////////////////////////////////////////////////////////////////
For compile, run:
g++ -o main main.cpp -lboost_thread
./main

The output should be:
-------------------------
Test Boost Library v1.46
-------------------------
Thread
 
OpenCV
 
The instructions below is a summary of:

* How to install OpenCV 2.3.1 in Ubuntu 11.10 Oneiric Ocelot with Python support
http://thebitbangtheory.wordpress.com/2011/10/23/how-to-install-opencv-2-3-1-in-ubuntu-11-10-oneiric-ocelot-with-python-support/

* A Comprehensive Guide to Installing and Configuring OpenCV 2.3.1 on Ubuntu
http://www.ozbotz.org/opencv-installation/

* OpenCV Installation Troubleshooting Guide
http://www.ozbotz.org/opencv-install-troubleshooting/

* HOWTO: Install and use the latest FFmpeg and x264
http://ubuntuforums.org/showthread.php?t=786095

I adapted the tips above to compile OpenCV in Pandaboard.

* Step 1
sudo apt-get update
sudo apt-get remove ffmpeg x264 libx264-dev libvpx0

* Step 2
sudo apt-get install libgstreamer0.10-0 libgstreamer0.10-dev gstreamer0.10-tools gstreamer0.10-plugins-base libgstreamer-plugins-base0.10-dev gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly gstreamer0.10-plugins-bad gstreamer0.10-ffmpeg

* Step 3
sudo apt-get install build-essential checkinstall git cmake libfaac-dev libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libva-dev libvdpau-dev libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev texi2html yasm zlib1g-dev

* Step 4
Download and install x264
Get the most current source files, compile, and install.
git clone git://git.videolan.org/x264.git
cd x264
./configure --enable-static --enable-pic --enable-shared
make
sudo make install


* Step 5
Install libvpx
This is used to encode and decode VP8 video (WebM).
git clone http://git.chromium.org/webm/libvpx.git
cd libvpx
./configure --enable-static --enable-pic (--enable-shared only supported on ELF for now)
make
sudo make install


* Step 6
Download and install ffmpeg version 0.7.x from http://ffmpeg.org/download.html (version >= 0.8.x is not compatible with OpenCV 2.3) and extract it to a folder. Then enter the folder and configure and build it:
cd ffmpeg
./configure --enable-shared --enable-libvpx --enable-pic --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-nonfree --enable-postproc --enable-version3 --enable-x11grab --disable-ffserver
make
sudo make install


* Step 7
Download and install libjpeg by entering the following command:
sudo apt-get install libjpeg62 libjpeg62-dev

* Step 8
Download and install install v4l (video for linux)
Download v4l-utils-*.*.*.tar.bz2 from http://www.linuxtv.org/downloads/v4l-utils/ (i used v4l-utils-0.8.5.tar.bz2)
Build v4l by entering the following commands in a terminal:
make
sudo make install


* Step 9
Download and install gtk by entering the following command:
sudo apt-get install libgtk2.0-0 libgtk2.0-dev

* Step 10
Download and install OpenCV – download OpenCV 2.3.1 from http://sourceforge.net/projects/opencvlibrary/files/ and extract it to a folder.
Then enter the folder and build it:
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_NEW_PYTHON_SUPPORT=ON -D BUILD_EXAMPLES=ON ..

Check that the output of cmake includes the following text:
¦GTK+ 2.x: YES
¦FFMPEG: YES
¦GStreamer: YES
¦V4L/V4L2: Using libv4l

make
sudo make install


* Step 11
Configure Linux – add the following line to your .bashrc in order to tell linux where the shared libraries for OpenCV are located without having to enter it everytime you start a new terminal:
export LD_LIBRARY_PATH=/usr/local/lib
Using any text editor add the following lines to the end of your /etc/bash.bashrc file:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH


* Step 12
Reboot.

* Step 13
Test OpenCV with this example code (copy and paste in main.cpp file):
//////////////////////////////////////////////////////////////////////////
#include < stdio.h >
#include < cv.h >
#include < highgui.h >

int main(int argc, char **argv)
{
CvCapture *capture = 0;
IplImage *frame = 0;
int key = 0;

capture = cvCaptureFromCAM(2);

if(!capture)
{
fprintf(stderr, "Cannot open initialize webcam!\n");
return 1;
}

cvNamedWindow("result");

while(key != 'q')
{
frame = cvQueryFrame(capture);

if(!frame) break;

cvShowImage("result", frame);

key = cvWaitKey(1);
}

cvDestroyWindow("result");
cvReleaseCapture(&capture);

return 0;
}
//////////////////////////////////////////////////////////////////////////
Compile and run:
g++ `pkg-config --cflags opencv` main.cpp -o main `pkg-config --libs opencv`
./main
Comments