bag-record

*The information on this page has been superseded by the RSBag Manual.*

Introduction

The bag-record program can be used to capture certain RSB events in a running system and store them into a log file for later analysis, further processing or replay.

See bag-play for replaying and bag-info for inspection of log files.

Obtaining bag-record

Binaries of the bag-record program can be downloaded from the continuous integration server for versions 0.4 and 0.5 of the Robotics Service Bus:

After the download, the bag-record file has to be made executable in most cases. This can be done for example by executing

chmod +x bag-record

in the download directory.

Checking Versions and Displaying Help

Version and help information is displayed when the --version and --help[-for all] commandline options are specified:

./bag-record --version
./bag-record --help
./bag-record --help-for all

The output of --help[-for all] includes a list of supported file formats.

Recording Events

Some general remarks regarding recording of RSB events using bag-record:
  • The specified output file into which events should be recorded, should not already exist
    • If an empty file of the given name exists, it will be used for recording
    • If a non-empty file of the given name exists, it will be extended as long as it does not already contain any of the channels being recorded
  • The recording process can be terminated gracefully by sending one of SIGINT and SIGTERM to the bag-record process

For details regarding the URI syntax involved in transport and channel specifications, see URI Schema.

Recording from a Nao robot using a local Spread daemon

This example assumes
./bag-record -o /tmp/nao.tide 
             'spread:/nao/vision/top?name=4803' 
             'spread:/nao/audio/all?name=4803'
             'spread:/nao/proprioception?name=4803'

The resulting file will (unless a different channel allocation is specified) contain one channel for each of the three RSB channels.

Note: the file extension ("tide" in this case) determines the used file format backend. Currently, only the TIDELog file format is supported.

Recording from a Nao robot using a remote Spread daemon

This example assumes
  • A Spread daemon running on the machine "remote" and listening on port 4803
  • Same data types as above
./bag-record -o /tmp/nao.tide 
             'spread://remote:4803/nao/vision/top' 
             'spread://remote:4803/nao/audio/all'
             'spread://remote:4803/nao/proprioception'

Remote-Controlling Recording

bag-record can expose an RPC interface that allows starting, stopping and terminating the recording process. This feature is enabled using the --control-uri (-c) commandline option. An URI has to be supplied as an argument of the option to configure the scope and transport through which the RPC interface should be exposed. The interface consists of three methods:

  • start : void -> void
    Restart recording after it has been stopped.
  • stop : void -> void
    Stop recording allowing it to be restarted later.
  • terminate : void -> void
    Terminate the recording process and the program.

Example

./bag-record -c 'spread:/control' -o /tmp/everything.tide spread:

Then, in parallel
./call 'spread:/control/terminate()'