What's New - Still a dummy text...?

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam iaculis adipiscing mi. Nulla vulputate mi at lorem. Fusce tincidunt dui non lectus euismod faucibus.

Learn more…

Quick-Start

July 29, 2010

This is a simple quick-start guide for those who can't wait to build their own distributed applications.

We're using Ubuntu, so grab their latest release and follow the instructions below. The system for sure also works with other distributions (or even on Windows?), but you might need to spend a considerable amount of effort to install all required dependencies - the Ubuntu repositories have them all! Also, if you need further advice, check the links on the right for detailed instructions.

Pre-Installation

June 23, 2010

  1. Setup the latest Ubuntu using one of the installation methods described on their homepage.
  2. Be sure to connect to the internet and install the latest update / upgrades by typing:
    sudo aptitude update
    sudo aptitude safe-upgrade

Third-Party Dependencies

July 29, 2010

For the unpatient of you, simply copy the following command to get them all. All others, who want to know what is needed exactly and what for, here's the step-by-step installation guide with explanations.

sudo aptitude install build-essential ccache cmake cmake-curses-gui libcv4 libcv-dev libcvaux4 libcvaux-dev libhighgui4 libhighgui-dev libqt4-dev libqt4-dbg libsoqt4-dev libcoin60-dev libboost-all-dev libboost-mpi-dev libmpich2-dev eclipse libspnav-dev spacenavd subversion

Downloading and installing all these packages might take a while, depending on your hardware and internet connection.

Eclipse - the IDE

July 29, 2010

We recommend installing three more or less essential (but anyway useful) Eclipse extensions. To do so, add the following update sites:

If you need detailed instructions on how to install Eclipse Plugins, follow our tutorial on configuring Eclipse.

MPI - Message Passing Interface

July 29, 2010

  1. Create the MPI configuration file in your home directory:
    cd $HOME
    touch .mpd.conf
    chmod 600 .mpd.conf
  2. Then use an editor to insert a line like:
    MPD_SECRETWORD=[mysecretword]
  3. Start the MPI-daemon on the master:
    mpd --listenport=[master-port]
  4. Start it on the slaves (make other computers join the ring):
    mpd --host=[master-ip] --port=[master-port] --ifhn=[slave-ip] --listenport=[slave-port]
  5. Check for ring-members with (on any of the computers):
    mpdtrace -l
  6. Start an MPI-application (here: passing local variable LD_LIBRARY_PATH):
    mpiexec -genvlist LD_LIBRARY_PATH [executable] [commandline-arg]*

If you are not that familiar with MPI and need further instructions on setting up and running MPI applications, read our MPI-tutorial.

Building an Application

August 3, 2010

Using the Flexible Robotics Framework, building distributed applications for various tasks becomes suprisingly easy. The following snippet (main.cpp) shows, how simple it can be:

#include <frf.h>

int main(int argc, char **argv)
{
  /// Boot distributed environment
  frf::boot(argc, argv);

  /// Setup processing units
  frf::vision::camera::OpenCVCamera* cam = new frf::vision::camera::OpenCVCamera();
  frf::gui::GuiUnit* gui = new frf::gui::GuiUnit();

  /// Initialize the processing units
  frf::init();

  /// Connect the shared parameters
  unsigned int id;
  id = cam->share<frf::core::data::Image>(frf::vision::camera::OpenCVCamera::LIVE_IMAGE);
  gui->connectTo(id, "Live Images", new frf::gui::feedback::Image("USB Image"));

  /// Run distributed application
  return frf::run();
}

This simple application is discussed in great detail and explained step-by-step in our simple-application tutorial. If you want to learn more about the concepts being used in the application, you ought to read the documentation for further details.

Running an Application

July 29, 2010

Say you compiled the above code into an executable testCamera. You can then execute the program in a distributed environment from the directory your executable is located using the command below. Note that the directory must be available on all computers connected in the MPI-ring:

mpiexec -n 2 ./testCamera

The GUI-unit should then display a live video from a camera. Most likely, you need to specify to which computer the camera is connected to (bypassing the auto-distribution facility). To learn how to enforce physical bindings of certain processing units read the simple-application tutorial.

Otherwise: congratulations, your first distributed application using the Flexible Robotics Framework is done. Now it's time to get started with your very own project.

Of course, there's a lot more to know about the framework. If you're interested, read the documentation. There you find in depth description of the core concepts, especially processing units, data synchronization and sharing, building your own plugins, and so on and so forth...

If you have any problems, comments, criticism, etc. feel free to contact us.