Skip to content
This repository has been archived by the owner on Feb 21, 2021. It is now read-only.

Getting Started with JdeRobot

Shivang Tripathi edited this page Mar 1, 2017 · 4 revisions

For both users and developers, it's highly recommended to read this wiki page to get better understanding about JdeRobot.

What is JdeRobot

JdeRobot is a collection of components that communicate between them through ICE middleware. These components use a set of defined interfaces to interact with each other, being this the only coupling mechanism between components. This way we can achieve what we were trying with older versions of JdeRobot, a components-based architecture, but without the drawbacks of trying to program middleware related code.

For better and deep understanding about JdeRobot, reading papers are highly recommended, such as Jderobot open source framework for robotic, computer vision and home automation applications and Recent advances in the JdeRobot framework for robot programming, more publications can be found here.

JdeRobot Dependencies

JdeRobot has different external dependencies to build its structure. There are two types of dependencies: necessary dependencies and optional dependencies. The necessary ones are needed to compile and install the basics of JdeRobot, that is, all its libraries and interfaces that are needed for the components or to develop components that use JdeRobot. The optional ones are needed just for some components, but are not really necessary unless you want to use some feature coming with some specific component. For instance, the component gazeboserver uses Gazebo, a 3D robot simulator, so to use this component you must install Gazebo first.

Some libraries are required to compile, link and run JdeRobot. As for JdeRobot 5, below are the following commands to install dependencies, note that the versions may vary as time goes by or you are using a different Linux distro or different Operating System, make the changes according to your own settings please. Here we use Ubuntu as our host machine for example.

Basic libraries:

sudo apt-get install build-essential libtool cmake g++ gcc

OpenGL libraries:

sudo apt-get install freeglut3 freeglut3-dev libgl1-mesa-dev libglu1-mesa

GTK2 libraries:

sudo apt-get install libgtk2.0-0 libgtk2.0-bin libgtk2.0-cil libgtk2.0-common libgtk2.0-dev libgtkgl2.0-1
sudo apt-get install libgtkgl2.0-dev libgtkglext1 libgtkglext1-dev libglademm-2.4-dev libgtkmm-2.4-dev
sudo apt-get install libgtkextra-x11-2.0-1 libgtkextra-x11-2.0-dbg libgtkextra-x11-2.0-dev libgnomecanvas2-0
sudo apt-get install libgnomecanvas2-dev libgtkglext1 libgtkglext1-dev libgtkglext1-doc libgnomecanvasmm-2.6-dev
sudo apt-get install libgnomecanvasmm-2.6-1c2a libgtkglextmm-x11-1.2-0 libgtkglextmm-x11-1.2-dev

Gtk3 libraries:

sudo apt-get install libgoocanvasmm-2.0-6 libgoocanvasmm-2.0-dev

GSL libraries:

sudo apt-get install libgsl0ldbl libgsl0-dev

LibXML:

sudo apt-get install libxml++2.6-2 libxml++2.6-dev

Eigen:

sudo apt-get install libeigen3-dev

GStreamer:

GStreamer is a streaming media framework, based on graphs of filters which operate on media data. Applications using this library can do anything from real-time sound processing to playing videos, and just about anything else media-related. Its plugin-based architecture means that new data types or processing capabilities can be added simply by installing new plug-ins.

This framework is used for Camera component interface implementations. JdeRobot 5.0 Components, such us cameraserver requires this libraries and development packages.

sudo apt-get install libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev

Ice

The new version of JdeRobot requires this GNU component as a feature for communicating different JdeRobot components in order to make them work together in a distributed system environment.

Ice, stands for Internet Communications Engine. The software consists of a set of services that allows multiple processes running on one or more machines to interact. It is an object-oriented middleware that provides object-oriented Remote Procedure Call, grid computing and Publish/Subscribe functionality developed by ZeroC and dual-licensed under the GNU GPL and a proprietary license. As a high-performance Internet communications platform, Ice includes a wealth of layered services and plug-ins.

Ice is built on concepts which will be familiar to CORBA programmers, and supports a wide variety of programming languages and runtime platforms. Slice is the interface description language used in Ice.

What is Ice

Ice(or Internet Communications Engine) is a modern object-oriented middleware with support for C++, .NET, Java, Python, Objective-C, Ruby, and PHP. Ice's most important new concepts are: Slice, IceGrid and IceStorm. We'll see all details.

Slice

It's the Specification Language for Ice.

sudo apt-get install ice34-slice

Ice Translators

You must install Slice translators. It lets you get translation like: [Slice definitions->Your desired language].

sudo apt-get install ice34-translators

Ice Services

Ice is more than just an RPC platform. Besides fully-featured and high-performance RPC, Ice provides a number of services. These services supply functionalities that most distributed applications require, such as event distribution or persistence. See here for more details.

IceGrid

It basically decouples clients from their servers. For example: if you're gonna use some ICE camera server component you don't need to care about its IP address.

IceStorm

It's an efficient publish/subscribe service for Ice applications.

First, ice34-slice component has to be installed (ice*-slice). This package installs the Slice language definitions of standard Ice services on /usr/share/slice. You will find further information in the ZeroC home page and in the non-free package zeroc-ice-manual.

It's also necessary to install ICE translator module, ice34-translators(ice*-translators). For a developing environment, it's also required the installation of libzeroc-ice34-dev package with any dependency. Finally, if any ICE service, such us, Icegrid or Icestorm, is going to be used, ice34-services (ice*-services) is required.

sudo apt-get install ice34-slice ice34-translators libzeroc-ice34-dev ice34-services

Other Dependencies

Here you can see some other dependencies that are needed just for some components, but they aren't the JdeRobot 5 kernel. Please, visit the table of components, libraries and tools to see what dependencies you need to install.

Fireware:

sudo apt-get install libdc1394-22 libdc1394-22-dev

USB:

sudo apt-get install libusb-1.0-0 libusb-1.0-0-dev

CWIID:

sudo apt-get install libcwiid-dev

Vtk:

sudo apt-get install libvtk5.8 libvtk5-dev

OpenNI and NITE