INTRODUCTION
Overview
Download and Install
Quick Start
Documentation
Publications

NONFRAMEWORK CODE
Driver Interfaces
Drivers
Libraries
Utilities

FRAMEWORK CODE
Interfaces
Components
Libraries
Utilities

Full Software Listings

DEVELOPER
Tutorials
Examples
Dev Guide
Dashboard

PEOPLE
Contributors
Users

SourceForge.net Logo
Project
Download
Mailing lists

 

         

Using Wall Interface Simulator

Note:
Reviewed for release 2.10.0.

In this tutorial we will demonstrate the use of orca_util_wall utility -- a configurable interface simulator. This utility is useful during component development. It lets the developer to setup all required interfaces in one component. The capabilities of this utility are limited. It generally does NOT let you debug the algorithms, for this you can work from logged data (see LogRecorder) or use a simulator such as Player/Stage. Nevertheless, sometimes all you need from an interface is just to "be there" -- in those cases Wall is exactly what you need.

Let's say you require an implementation of orca_interface_laserscanner2d and orca_interface_localiser2d. A component which provides these two does not (currently) exist. You could run Laser2d using a Fake driver. None of the existing localisers have fake drivers. Instead you could run Robot2d with a Fake driver and then convert its orca_interface_odometry2d with FaithLocaliser. This is possible but rather complicated. Instead, we will configure orca_util_wall to simulated the two interfaces we need.

Start Up the Infrastructure and a System

Repeat the instructions of Quick-Start Guide for starting up IceGrid Regisry and the IceBox/IceStorm combination.

Create a new system directory and copy Orca sample files.

$ mkdir -p ~/sys/tutewall; cd ~/sys/tutewall
$ cp [ORCA-INSTALL]/share/orca/cfg/wall.cfg .

Configuring Interface Simulation

Edit the standard config file wall.cfg so that it looks like this (comments are removed).

Wall.Platform=local
Wall.Component=wall

Wall.Provides.LaserScanner2d0.Name=laserscanner2d0
Wall.Provides.Localise2d0.Name=localise2d0

Wall.Config.FactoryLibNames=libOrcaWallFactory.so
Wall.Config.LaserScanner2d0.Driver=random
Wall.Config.LaserScanner2d0.MaxRange=200.0
Wall.Config.Localise2d0.Driver=random

Run the utility:

$ wall

You can verify that the interfaces we wanted are available by using Probe or IcePing or by connecting LaserMon to the laser interface. The output of Probe utility is shown below:

Component : agave/wall
-------------------------------------------------------
Select an interface from the list:
 0 *  orca.agave.wall/Home              ::orca::Home
 1 *  tracer                            ::orca::Tracer
 2 *  status                            ::orca::Status
 3 *  localise2d0                       ::orca::Localise2d
 4 *  laserscanner2d0                   ::orca::LaserScanner2d
-------------------------------------------------------

Adding an Interface of the Same Type

Let's add another orca_interface_laserscanner2d interface. This is possible because we use indeces at the end of interface tags (exactly the same as in config files for LogRecorder). Append the following lines to the config file (line order in config files is not important).

Wall.Provides.LaserScanner2d1.Name=laserscanner2d1
Wall.Config.LaserScanner2d1.Driver=random

Restart the Wall utility. Verify that two LaserScanner2d interfaces are now provided.

 

Webmaster: Tobias Kaupp (tobasco at users.sourceforge.net)


Generated for Orca Robotics by  doxygen 1.4.5