On 09/01/2010 05:49 PM, Tim Field wrote:
Sure.  It may be easier to just use rosbag play on a bag in which the message timestamps have been rewritten to their header timestamp (if available), i.e.

import roslib; roslib.load_manifest('rosbag')
import sys, rosbag
outbag = rosbag.Bag(sys.argv[2], 'w')
try:
    for topic, msg, t in rosbag.Bag(sys.argv[1]).read_messages():
        outbag.write(topic, msg, msg.header.stamp if msg._has_header else t)
finally:
    outbag.close()

Great, thanks Tim! That's exactly the postprocessing that I was looking for (and I wasn't even aware of that nice Python rosbag API)!

I just had to filter out "rosout" because a few messages from way in the past delayed the real messages for too long, but otherwise all looks fine at a first glance.

Is that worth adding as a full script to rosbag, or at least to mention it in the wiki somewhere? I will definitely use that more often to get better screencaptures in RViz from bagfiles.

Cheers,
Armin
-- 
Armin Hornung                              Albert-Ludwigs-Universität
www.informatik.uni-freiburg.de/~hornunga   Dept. of Computer Science
HornungA@informatik.uni-freiburg.de        Humanoid Robots Lab
Tel.: +49 (0)761-203-8010                  Georges-Köhler-Allee 79
Fax : +49 (0)761-203-8007                  D-79110 Freiburg, Germany