Archivos de Tags: 2.0 RC3 @es

Instalar osgART 2.0 RC3 con OpenSceneGraph 2.8.3 o 2.9.6 y soporte para Collada en Ubuntu 12.04

Antes de instalar osgART tenemos que instalar ARToolKit, collada-dom y OpenSceneGraph así que echar un vistazo a los siguientes post antes de continuar:

Una vez instaladas las dependencias para osgART descargarse el código de osgART 2.0 RC3 de aquí y descomprimirlo. Ejecutar los siguientes comandos:

mkdir build
cd build
cmake .. -DCMAKE_CXX_FLAGS=-fpermissive -DCMAKE_MODULE_LINKER_FLAGS=-lgstreamer-0.10 -DCMAKE_SHARED_LINKER_FLAGS=-lgstreamer-0.10
make
sudo make install

Se puede quitar la opción “-DCMAKE_CXX_FLAGS=-fpermissive” si se añaden los siguientes includes en el fichero “include/osgART/Utils” justo después de “#include <iostream>“:

#include <cstdlib>
#include <limits>

Configurar la variable de entorno ARTOOLKIT_CONFIG (ya deberías tenerla configurada al instalar ARToolKit):

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

Y ejecutar el ejemplo mientras se muestra el marcador de “Hiro” a la cámara:

cd /usr/local/bin/
./osgartsimple

Si te aparece este error:

Plugin '-1' unknown!
Could not initialize video plugin!

Se debe a que no se han copiado correctamente las librerías de osgART a la carpeta de librerías (“/usr/local/lib“) o a la carpeta de librerías de OSG (“/usr/local/lib/osgPlugins-X.X.X“). Verifica que hay un fichero llamado “libosgART.so” en “/usr/local/lib” y que tienes los ficheros “osgdb_osgart.so“, “osgart_tracker_artoolkit2.so” y “osgart_video_artoolkit2.so” en la carpeta de librerías de OSG (que debería ser “/usr/local/lib/osgPlugins-2.8.3“o “/usr/local/lib/osgPlugins-2.9.6” en función de la versión de OSG que instalaste). Ten en cuenta que si instalas varias versiones de OSG es posible que el plugin de osgART no se copie a la carpeta de plugins de la versión de OSG que tu quieres. Ejecuta esto también por si acaso:

sudo ldconfig /etc/ld.so.conf

Si se ve el fondo negro se debe a un pequeño bug en ARToolKit. Se puede arreglar modificando en ARToolKit la función “ar2VideoCapNext” en el fichero “lib/SRC/VideoGStreamer/video.c en la línea 378 par que devuelva un 0 en vez de TRUE O modificando el fichero de osgART “src/osgART/Video/ARToolKit/ARToolKitVideo.cpp” en la línea 310 de esto:

if (0 == ar2VideoCapNext(video))

A esto:

if (ar2VideoCapNext(video))

Para utilizar la opción de ARToolKit donde cada fotograma se compara con los anteriores para obtener un tracking más suave del marker, se debe cambiar una línea de código de osgART. Dentro del fichero “src/osgART/Traker/ARToolKit/SingleMarker.cpp” descomentar la línea 76 y comentar la línea 77. Es decir pasar de esto:

//arGetTransMatCont(markerInfo, patt_trans, patt_center, patt_width, patt_trans);
arGetTransMat(markerInfo, patt_center, patt_width, patt_trans);

A esto:

arGetTransMatCont(markerInfo, patt_trans, patt_center, patt_width, patt_trans);
//arGetTransMat(markerInfo, patt_center, patt_width, patt_trans);

Fuentes: http://projects.springlobby.info/issues/1575
https://github.com/bitcoin/bitcoin/pull/456
https://code.ros.org/trac/opencv/ticket/1020
http://forum.openscenegraph.org/viewtopic.php?t=7755
http://code.google.com/p/chromium/issues/detail?id=108945