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 Project Download Mailing lists
|
Using Wall Interface Simulator
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 SystemRepeat 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 SimulationEdit the standard config file 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 TypeLet'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)