[ros-users] Bag file recording / playback asynchronous in RViz

Armin Hornung HornungA at informatik.uni-freiburg.de
Wed Sep 1 14:58:57 UTC 2010


Hi!

I have recorded a few bag files which seem to get asynchronuous when 
played back. The bag files were recorded on the "master" PC to which a 
robot was connected over wireless, sending out mainly joint state (25 
dim.) and laser scans (Hokuyo-URG, 10Hz). The messages themselves seem 
to be OK, a later processing e.g. through localization produces the 
right results as all timestamps are read from the message headers. In 
the bagfiles however, sometimes the scans or joint angles "hang" for a 
few seconds and then arrive accelerated (the Hokuyo rate goes up to 
20Hz). Unfortunately, this leads to a nonlinear visualization, jumps and 
random hangs in rviz which gets worse when correcting robot poses 
through MCL which uses the laser as main callback. Occasionally, even 
the robot model gets disconnected, e.g. its base link disintegrates from 
arms or head. Is this a result of recording over the wireless link 
(which unfortunately, I can't change)?

This looks like rosbag plays back the messages just as they are stored 
in the bag file, and rviz displays things immedately as they arrive, 
regardless of eventual timestamps in the messages. Is there a 
postprocessing step, playback option or similar I could try to get a 
smooth linear close-to-realtime visualization? I tried "rosrun rosbag 
bagsort.py" to at least sort the messages, but that currently results in 
a python error (cturtle, used to work in boxturtle):

   File "/opt/ros/cturtle/ros/tools/rosbag/scripts/bagsort.py", line 65, 
in <module>
     sortbags(sys.argv[1], sys.argv[2])
   File "/opt/ros/cturtle/ros/tools/rosbag/scripts/bagsort.py", line 43, 
in sortbags
     schedule = [(t, i) for (topic, msg, t) in 
enumerate(rosbag.Bag(inbag).read_messages(raw=True))]
ValueError: need more than 2 values to unpack

Maybe there's already a tool available which buffers a few messages and 
sends them out at the correct frequency by their timestamp in the 
header? If not, then that's probably what I need to hack up ;)

Cheers,
Armin

-- 
Armin Hornung                              Albert-Ludwigs-Universität
www.informatik.uni-freiburg.de/~hornunga   Dept. of Computer Science
HornungA at 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




More information about the ros-users mailing list