Indigo, Linux Mint 17
I'm using the commandline rosbag utility to record various topics.
I have two topics /topic1 and /topic2. Topic1 is published before Topic2, like so:
if state==new_state:
publish_topic_1()
publish_topic_2(state)
So topic1 publishes when we are in the new_state and topic2 just publishes the state, whatever it happens to be. After recording I inspect the bag with rqt_bag. I expect to see topic1 always preceding topic2 switching from another state to "new_state". However, this is not what I see. I often will see topic2 transition to "new_state" before topic1 appears. If I explicitly add a sleep statement after publishing topic1 then they appear in the order I expect.
So:
- What should I expect for timing topics? Should I expect them to be received and recorded in order? My understanding was that rosbag would handle synchronization of all my data streams.
- Does adding a Header to each msg type help?
- Is everything fine and rqt_bag is just broken?
Does it all come to the limitations of record/playback as described here? http://wiki.ros.org/ROS/Tutorials/Recording%20and%20playing%20back%20data#rosbag.2BAC8-Tutorials.2BAC8-Recording_and_playing_back_data.The_limitations_of_rosbag_record.2BAC8-play
If so, does anyone have a solution for ensuring accurate timing in a rosbag? Writing it directly myself rather than publishing and letting rosrecord pick it up?
↧