Table of Contents

Set up ROS

Recommended operating system is Ubuntu 12.04 LTS 64bit.

Install ROS Groovy (see http://www.ros.org/wiki/groovy/Installation/Ubuntu):

sudo apt-get install ros-groovy-desktop-full

Installing RoboSherlock

Last Update: May 15th, 2013

Tested on: Ubuntu 12.04 with ROS Groovy

Standard libraries and PCL

First of all install some standard libraries and PCL trunk

sudo apt-get install libicu-dev libxerces-c-dev openjdk-7-jdk libapr1-dev ros-groovy-pcl ros-groovy-openni-camera ros-groovy-openni-launch

For using pcl trunk with groovy see:

http://answers.ros.org/question/62979/how-do-i-use-pcl-17-with-groovy/

Note: you need to enable the RSD feature from the features submodule in pcl. To do this go to pcl root directory cd to features and edit the CMakeLists.txt file. Uncomment the lines contatining rsd.h rsd.cpp and rsd.hpp. Remake the project (don't do clean!!!!)

Installation location

Choose an installation location

cd $HOME
mkdir uima

Set up Bash

Put the right paths into your ~/.bashrc. In the following code, replace $HOME/uima with the location where you actually want your UIMA environment to reside.

export UIMA_WORKSPACE=$HOME/uima
export UIMA_HOME=$UIMA_WORKSPACE/apache-uima
export UIMACPP_HOME=$UIMA_WORKSPACE/uimacpp/install

export PATH=$UIMACPP_HOME/bin:$UIMA_WORKSPACE/apache-uima/bin:$PATH
export LD_LIBRARY_PATH=$UIMACPP_HOME/lib:$UIMA_WORKSPACE/iai-uima/ias-uima-cpp/lib:$LD_LIBRARY_PATH
export CLASSPATH=$UIMA_WORKSPACE/iai-uima/ias_uima_rosjava/build/classes/main

export APR_HOME=/usr
export ICU_HOME=/usr
export XERCES_HOME=/usr  
  
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/ 
export JAVA_INCLUDE=$JAVA_HOME/include

UIMA/C++

Get UIMA/C++ from the SVN & build

cd $UIMA_WORKSPACE
svn co https://svn.apache.org/repos/asf/uima/uimacpp/trunk/ uimacpp

uimacpp will look for libapr-1.0.so which isn't there in Ubuntu, so we need to create a symlink to that:

cd /usr/lib
sudo ln -s libapr-1.so libapr-1.0.so

Note: recent trunk seems to have a different build system setup, I had to do:

cd $UIMA_WORKSPACE/uimacpp
./autogen.sh
./configure --without-activemq --with-jdk=/usr/lib/jvm/java-7-openjdk-amd64/include --prefix=${UIMACPP_HOME}
make install

What this will do is compile everything and create a couple of folders in $UIMACPP_HOME, so ls $UIMACPP_HOME should give you:

bin  data  include  lib

UIMA Java SDK

Get the UIMA Java SDK Binaries. Download and extract latest binaries to $UIMA_WORKSPACE

http://uima.apache.org/downloads.cgi

Doing ls $UIMA_WORKSPACE/apache-uima should give something like

bin  config  docs  eclipsePlugins  examples  issuesFixed  lib  LICENSE  NOTICE  README  RELEASE_NOTES.html

Set up MongoDB

(Might not be needed) Get the server (vs. 2.4.5 64bit). See: http://www.mongodb.org/downloads

Get the client (vs. 2.2-latest) and unpack it to $UIMA_WORKSPACE http://dl.mongodb.org/dl/cxx-driver/

If you don't yet have it, get scons

sudo apt-get install scons

Before compiling the client, uncomment the following line in src/SConscript.client

env.SharedLibrary('mongoclient', clientSource),

Add the env variables for mongo to your .bashrc. Remember to source your newly edited bashrc file.

export MONGODBCLIENT_HOME=$UIMA_WORKSPACE/mongo-cxx-driver-v2.2/
export MONGODBCLIENT_HOME_INCLUDE=$MONGODBCLIENT_HOME/src
export LD_LIBRARY_PATH=$MONGODBCLIENT_HOME:$LD_LIBRARY_PATH

Now cd to MONGODBCLIENT_HOME, call scons

The IAS UIMA Repository

Get the IAS UIMA Repository. Check out code and submodules:

cd $UIMA_WORKSPACE
git clone git@github.com:code-iai/iai-uima.git
cd iai-uima
git submodule init
git submodule update

Checkout dependencies and add them to your ROS_PACKAGE_PATH:

git clone git@github.com:code-iai/iai_perception.git
git clone git@github.com:code-iai/entres.git
git clone git@github.com:code-iai/iai_common_msgs.git
git clone git@github.com:code-iai/designator_integration.git

Setup rosjava

Check out rosjava_core to your catkin ws:

git clone git@github.com:rosjava/rosjava_core.git -b groovy-devel

Details on how to make the project are here:

http://docs.rosjava.googlecode.com/hg/rosjava_core/html/index.html

Now call

catkin_make

Note: for single core machines run with -j2

Now ls $UIMA_WORKSPACE/iai-uima/ias_uima_rosjava/build/classes/main/org/uima/collectionreader should show:

Clock.class

To install apache, php and other things required for the database visualization website, look at $UIMA_WORKSPACE/iai-uima/www/README.txt. To get histograms visualized as graphs, install libphp-jpgraph.

Run Example

roslaunch openni_launch openni.launch
rosrun rqt_reconfigure rqt_reconfigure # enable depth registration and hiRes RGB
cpeGui.sh # use as collection reader ias-uima-java/desc/ClockDescriptor and as analysis engine ias-uima-cpp/descriptors/analysis_engines/iaiGoggles.xml

Troubleshooting

In case the website complains that sorting needs mongodb index do the following…

mongo uima
db.uima.ensureIndex({"scenes.timestamp":-1})
//double check : 
db.uima.getIndexes()

In case your RosKinnectBridge hangs check if depth registered is turned on in openni. You can do this by listening to the topic:

rostopic hz /camera/depth_registered/points

If RosKinectBridge fails check the parameters for tf from, to and camera frames in the description of the annotation.

Known Issues

FeatureClassifierAnnotator does not work if you link it to plc_io or pcl_visualizer. This is due to the incompatibility of the native hdf5 library that comes with Ubuntu and the one used by the icf package