A module that reproduces in a synchronized way, previously acquired data (using yarpdatadumper: the YARP data recorder) from a source of input.
This module provides the user a simple but informative user-interface in order to manipulate the previously acquired data. When playing it uses the timestamps provided from the time of acquisition to synchronize the sending of the data as if the robot was present.
yarpdataplayer can run with or without the GUI (for server use and commands are sent via the rpc port) For gui run normally yarpdataplayer
. Without GUI run with the extra parameter hidden:
yarpdataplayer --hidden
yarpdatadumper data.log file example:
9566 1324373535.040288 -2.32967 0.043956 1.450549 -0.56044 1.704894 4.136408 etc...
yarpdatadumper info.log file example:
Type: Bottle; [1324373535.040288] /foo/state:o [connected] etc...
Type: is used to identify what kind of data the player is required to send.
The names of the ports open up by the player are initially set up based on the content of info.log file. This can be then changed using the GUI.
--hidden
--withExtraTimeCol index
--name modName
The interface to this module is implemented through dataSetPlayer_IDL.
The player will look, in a recursive way, into directories in order to create the parts needed and retrieve the data.
The data name is the default yarpdatadumper names: data.log and info.log.
An example directory tree containing data (data.log+info.log) can be:
If the directory indicated is either experiment1
or within experiment, the player will successfully load all required data.
The parts name will be taken from each subdirectory of the /experiment1
forder.
Yarpdataplayer allows also to reproduce topics which can be subscribed by ROS nodes. For example, you can record a topic (e.g. /mytopic+@/mynode) as a standard yarp port using the Bottle format provided by yarpdatadumper. The Bottle format is needed because yarpdatadumper is currently not able to automatically detect the type of the incoming messages. After the recording, you have to manually edit the info.log file created by yarpdatadumper and replace the type Bottle with the type of the ROS message you want to publish. For example, if you want to publish a sensor_msgs/LaserScan ROs Message, replace Bottle with sensor_msgs/LaserScan. That's all. When Yarpdataplayer plays the recorded data, it will open the /mytopic+@/mynode port and will publish LaserScan data. The corresponding topic will be visible also by ROS.