Bag-record » History » Version 8

Version 7 (J. Moringen, 08/29/2011 12:52 AM) → Version 8/15 (J. Moringen, 09/04/2011 03:26 PM)

h1. @bag-record@

h2. Introduction

The @bag-record@ 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|bag-play]] for replaying and [[Bag-info|bag-info]] for inspection of log files.

h2. Obtaining @bag-record@

Binaries of the @bag-record@ program can be downloaded from the "continuous integration server":http://ci.cor-lab.org for versions 0.4 and 0.5 of the project:rsb:

* "0.4 i686":https://ci.cor-lab.de/job/cl-rsbag-tools-stable/label=ubuntu_lucid_32bit/
* "0.4 x86_64":https://ci.cor-lab.de/job/cl-rsbag-tools-stable/label=ubuntu_lucid_64bit/
* "0.5 i686":https://ci.cor-lab.de/job/cl-rsbag-tools/label=ubuntu_lucid_32bit/
* "0.5 x86_64":https://ci.cor-lab.de/job/cl-rsbag-tools/label=ubuntu_lucid_64bit/

After the download, the @bag-record@ file has to be made executable in most cases. This can be done for example by executing
<pre>
chmod +x bag-record
</pre>
in the download directory.

h2. Checking Versions and Displaying Help

Version and help information is displayed when the @--version@ and @--help[-all]@ @--help@ commandline options are specified:
<pre>
./bag-record --version
./bag-record --help
./bag-record --help-all
</pre>
The output of @--help[-all]@ @--help@ includes a list of supported file formats.

h2. 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, 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

h3. 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":https://code.humavips.eu/projects/naorsb/wiki/Components) on the RSB channels
** @/nao/vision/top@
** @/nao/audio/all@
** @/nao/proprioception@
* Image, Sound and Proprioception message are encoded using the project:rst data types
** rst:source:trunk/rst/proto/rst/ImageMessage.proto
** rst:source:trunk/rst/proto/rst/SoundMessage.proto
** rst:source:trunk/rst/proto/rst/ProprioceptionData.proto

<pre>
./bag-record -o /tmp/nao.tide
'spread:/nao/vision/top?name=4803' &#x27;spread:/nao/vision/top?name=4803;wire-schema=.rst.ImageMessage&#x27;
'spread:/nao/audio/all?name=4803' &#x27;spread:/nao/audio/all?name=4803;wire-schema=.rst.SoundImage&#x27;
'spread:/nao/proprioception?name=4803' &#x27;spread:/nao/proprioception?name=4803;wire-schema=.rst.ProprioceptionData&#x27;
</pre>

*Note: the @wire-schema=NAME@ URL options are stored without further checks.*

*Note: the
file extension ("tide" in this case) determines the used file format backend. Currently, only the "TIDELog":https://retf.info/svn/drafts/rd-0001.txt file format is supported.*

h3. 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

<pre>
./bag-record -o /tmp/nao.tide
'spread://remote:4803/nao/vision/top' &#x27;spread://remote:4803/nao/vision/top?wire-schema=.rst.ImageMessage&#x27;
'spread://remote:4803/nao/audio/all' &#x27;spread://remote:4803/nao/audio/all?wire-schema=.rst.SoundMessage&#x27;
'spread://remote:4803/nao/proprioception' &#x27;spread://remote:4803/nao/proprioception?wire-schema=.rst.ProprioceptionData&#x27;
</pre>