Table of Contents

Set up ROS

Recommended operating system is Ubuntu 12.04 LTS 64bit or 14.04 LTS 64bit.

Install ROS Indigo or Hydro (see http://wiki.ros.org/indigo/Installation):

Installing RoboSherlock

Last Update: Oct. 29th, 2014

Tested on: Ubuntu 12.04 with ROS Hydro and 14.04 with ROS Indigo

Standard libraries

First of all install some standard libraries

sudo apt-get install automake libxerces-c-dev libicu-dev openjdk-7-jdk libapr1-dev libgphoto2-2-dev mongodb libhdf5-serial-dev protobuf-compiler libtool

Install the necessary ros packages.
ROS Hydro:

sudo apt-get install ros-hydro-openni-camera ros-hydro-openni-launch ros-hydro-rosjava

ROS Indigo:

sudo apt-get install ros-indigo-openni-camera ros-indigo-openni-launch libcppnetlib-dev ros-indigo-pcl-ros

NOTE: For ROS Indigo there is no released rojava package at the moment. You can install it from source following these instructions: http://wiki.ros.org/rosjava/Tutorials/indigo/Installation

Installation location

Choose an installation location

cd $HOME
mkdir 3rdParty

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 TRD_PARTY_WORKSPACE=${HOME}/3rdParty
export UIMA_HOME=${TRD_PARTY_WORKSPACE}/apache-uima
export UIMACPP_HOME=${TRD_PARTY_WORKSPACE}/uimacpp/install  
export PATH=${UIMACPP_HOME}/bin:${UIMA_HOME}/bin:${PATH}
export LD_LIBRARY_PATH=${UIMACPP_HOME}/lib:${LD_LIBRARY_PATH}
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 $TRD_PARTY_WORKSPACE
svn co https://svn.apache.org/repos/asf/uima/uimacpp/trunk/ uimacpp

12.04: 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

14.04: uimacpp is old :(…sadly it looks only for old apr versions so we need to patch it. Download patch and apply it in the root folder of the project.

cd $TRD_PARTY_WORKSPACE/uimacpp
./autogen.sh
./configure --without-activemq --with-jdk=/usr/lib/jvm/java-7-openjdk-amd64/include --prefix=${UIMACPP_HOME} --with-icu=/usr
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_HOME

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

Doing ls $UIMA_HOME should give something like

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

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_robosherlock.git
cd iai-robosherlock
git submodule init
git submodule update

Checkout dependencies and add them to your ROS_PACKAGE_PATH:

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
git clone git@github.com:code-iai/iai_photo.git

Now call

catkin_make

Note: for single core machines run with -j2

DEPRECATED

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