Tag Archives: pkgconfig

Install ARToolKit 2.72.1 in Ubuntu 10.10

Firsts you have to install some dependencies:

sudo apt-get install freeglut3-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libxi-dev libxmu-headers libxmu-dev libjpeg62-dev libglib2.0-dev libgtk2.0-dev

Then download, extract, configure and compile the ARToolKit source code:

wget "http://sourceforge.net/projects/artoolkit/files/artoolkit/2.72.1/ARToolKit-2.72.1.tgz/download" -O ARToolKit-2.72.1.tgz
tar xzvpf ARToolKit-2.72.1.tgz
cd ARToolKit
./Configure
make

When configuring with ./Configure you can choose different video inputs. You should choose GStreamer (option 5):

"1: Video4Linux" for video capturers (with V4L version 1).
"2: Video4Linux+JPEG Decompression (EyeToy)" for Play Station EyeToy camera (with V4L version 1).
"3: Digital Video Camcoder throught IEEE 1394 (DV Format)" for firewire cameras.
"4: Digital Video Camera throught IEEE 1394 (VGA NONCOMPRESSED Image Format)" for firewire cameras.
"5: GStreamer Media Framework" for USB webcams.

Once all is compiled you have to copy the include files to /usr/local/include:

sudo cp -R ./include/AR /usr/local/include/

And the libraries to /usr/local/lib:

sudo cp ./lib/*.a /usr/local/lib/

In order to use pkg-config with ARToolKit we have to create a file in /usr/lib/pkg-config or /usr/lib/pkgconfig (it depends on the Ubuntu version). We have to create a file, while being super user, called AR.pc and fill with this:

prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${exec_prefix}/include

Name: AR
Description: ARToolKit libs and includes
Version: 2.72.1
Libs: -L${libdir} -lARgsub -lARgsub_lite -lARgsubUtil -lARMulti -lARvideo -lAR
Cflags: -I${includedir}/AR

This way we can use pkg-config to create much more easy to use and read Makefile files:

$ pkg-config --cflags AR
-I/usr/local/include/AR
$ pkg-config --libs AR
-L/usr/local/lib -lARgsub -lARgsub_lite -lARgsubUtil -lARMulti -lARvideo -lAR

It is also recommended to add the library location path to the LD_LIBRARY_PATH environment variable. It can be done in “~/.bashrc” file in our home folder:

export LD_LIBRARY_PATH=/usr/local/lib

Before we run any of the example programs in “bin” folder of ARToolKit we MUST export a environment variable with the configuration of our capturing device. For example I use this one:

export ARTOOLKIT_CONFIG="v4l2src device=/dev/video0 use-fixed-fps=false ! ffmpegcolorspace ! capsfilter caps=video/x-raw-rgb,bpp=24 ! identity name=artoolkit ! fakesink"

Look carefully to the device I configured because it may not be yours (devide=/dev/video0). You can also configure the pictures  height and width, although your camera has to support those configurations to work properly.

export ARTOOLKIT_CONFIG="v4l2src device=/dev/video0 use-fixed-fps=false ! ffmpegcolorspace ! capsfilter caps=video/x-raw-rgb,bpp=24,width=640,height=480 ! identity name=artoolkit ! fakesink"

You can also use a input video file for testing purposes or to develops in a computer that doesn’t have a real video device:

export ARTOOLKIT_CONFIG="filesrc location=gstreamer_test_xvid.avi ! decodebin ! ffmpegcolorspace ! capsfilter caps=video/x-raw-rgb,bpp=24 ! identity name=artoolkit ! fakesink"

If you want to be sure that your video device works before going crazy with ARToolKit configuration try the next command:

gst-launch-0.10 v4l2src ! xvimagesink

If you want to use gst-launch-0.10 to try configurations of ARToolKit change fakesink for xvimagesink.

Once configured the ARTOOLKIT_CONFIG variable we can go to the bin folder of ARToolKit and run a test:

cd bin
./simpleTest

If V4L1 is used instead of GStreamer some video cameras don’t give a RGB picture, instead they send a YUV picture that ARToolKit doesn’t expect to receive. To fix this you have to configure the ARTOOLKIT_CONFIG environment variable with the palette option. You can see other V4L1 options in the official documentation.

-palette=YUV420P

Sources: http://www.block4.com/index.php?id=107

http://artoolkit.sourceforge.net/apidoc/video/#VideoLinuxV4L