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 usingbag-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
andSIGTERM
to thebag-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- A Spread daemon running on the local machine and listening on port 4803
- Image, Sound and Proprioception message are published (for example by running the streaming components for Nao) on the RSB channels
/nao/vision/top
/nao/audio/all
/nao/proprioception
- Image, Sound and Proprioception message are encoded using the Robotics Systems Types data types
./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()'