Capturing Rawlogs Using BABEL Modules (deprecated)

Note 1: This tutorial is mainly intended for reference to researchers at our University of Malaga's Lab.

Note 2: The following applies for the current versions of MRPT and BABEL at the time of writing (April 2008).

Note 3: For an alternative, cross-platform program to grab datasets, see rawlog-grabber.

1. Overview

The goal is to record a log of all robot sensors as it moves, in this case guided by hand through a wireless Joystick. The log will be saved in the MRPT rawlog format. The software architecture to be used here is based on the BABEL development system.

Basically, there exist a number of BABEL modules, each one having a well-defined task like avoiding obstacles, interfacing some hardware device, and so on. In the current CORBA-based, distributed implementation, each module runs in a separate process. The BABEL system allow each module to execute user code within services and monitors, as well as to invoke services from other modules.

There exist three fundamental tools in the BABEL system:

  • Module Designer (BABEL_MD): An editor of BABEL modules (stored in .ice files), from which one can defines the services a module has and modify their implementation (e.g. in C++).
  • Execution Manager (BABEL_EM): It manages execution list and invoke them. This is the main utility when launching a robotic software application.
  • Debugger (BABEL_D): Useful to load logs of communications within a BABEL application.

To grab a rawlog only the BABEL_EM is needed.

2. Steps

2.1 1. Preparing the list of modules

Open the program BABEL_EM:



Note there are two lists of modules in this interface:

  • the one at the left hand is a list of all known BABEL modules, while
  • the list on the right is the current execution list.

We want to define an execution list with all the required modules, in the correct order to avoid problems with dependencies: that is, if A calls B, B must precede A in the list.

We can add to a list only those modules that already are in the "known ones" list. Add modules to that list by the button "Register", then picking the executable file. Once all the modules are registered, as in the next screenshot, it is a good idea to save that list as default.bml so BABEL_EM will load it at startup in the future.



Now add modules to the execution list by selecting them and clicking on >. These are the list of modules that should be added for each robot:

Sancho

  • ICE_InterfazCORBA_project(Pioneer).exe --> Interface to Pioneer Mobile Base.
  • ICE_PLS_project(SICK).exe
  • ICE_PLS_URG_project.exe

Picasso

  • ICE_InterfazCORBA_project(Pioneer).exe --> Interface to Pioneer Mobile Base.
  • ICE_PLS_project(SICK).exe
  • ICE_PLS_URG_project.exe
  • ICE_eNoses2007_project.exe

SENA

  • ICE_InterfazCORBA_project(SENA).exe --> Interface to robotic wheelchair base.
  • ICE_PLS_project(SICK).exe
  • ICE_PLS_URG_project.exe

Simulator

  • ICE_InterfazCORBA_project(Simulador).exe

+Robot-independent modules (Add these ones after the robot-dependant ones above)

  • ICE_JoystickRobotControl_project.exe
  • ICE_RawLogs_Grabber_project.exe

After adding all the modules, remember to program delay between them by clicking on Delay:



At this point the execution list can also be saved to a file for future use.

2.1 2. Running

To run the application, first launch the CORBA servers by clicking Launch... in BABEL_EM. These servers shouldn't be shut down until all BABEL modules have finished. Next, click Run to start launching the modules one by one. When all the modules are up, bring the GUI of the RawlogGrabber module to the front:



Tick the sensors you want to grab, and the maximum frequency at which data is to be gathered, then press start to begin saving all data to the selected ".rawlog" file. Finally, press stop to finish the process. The robot is commanded via the wireless Joystick in the meanwhile.

To shut down the entire BABEL application, go back to BABEL_EM and press Kill, or alternatively, if there are a few modules you can close them by hand one by one by typing 1 a enter at each one's console.

After closing all the modules, press Stop CORBA servers in BABEL_EM.

The result is a .rawlog file that can be processed by classes in the MRPT C++ library or visualized with the GUI application RawLogViewer.

Syndicate content

The Mobile Robot Programming Toolkit (MRPT) initiative (C) 2012