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

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Armin Hornung
Date:  
To: ros-users
Subject: [ros-users] Bag file recording / playback asynchronous in RViz
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
        Humanoid Robots Lab
Tel.: +49 (0)761-203-8010                  Georges-Köhler-Allee 79
Fax : +49 (0)761-203-8007                  D-79110 Freiburg, Germany