Message changed, md5 checksum; auto migration?

asked 2016-06-29 12:12:26 -0500

HarumanTheHumane gravatar image

Hi there,

we're running a rather big project with many different nodes and messages, and occasionally a msg get extended by a datafield which wasnt there before. Usually its something optional, so the old message would work just fine if the new fields would just be set to 0. At that point, older bagfiles with the old message type will complain because of a md5 checksum mismatch.

This can be manually fixed with "rosbag fix" and a rule I generated with savemsg.py and makerule.py; but we have terabytes of bagfiles and I'd prefer not to post-process all of them whenever theres a change in any of the messages.

On this wiki page about message migrations (link: migration wiki), there's a mention that the rule file can be permanently exported, but it's unclear to me to which ros package these proposed changes to the dependency and the manifest should be added. Is it the one containing the changes message file? Tried that, but "rosbag check" still complains about missing rules to convert.

Basically what I'm looking for and hope it's somehow possible:

  1. Can a message be migrated "on the fly" on playback if there's a rule created for it manually first?
  2. If so, how can this be configured?
  3. If this is not possible, is there some way how changes in messages can be made transparent for other users of the bag files? Some users only wish to use the message but work on totally different parts of the project, so they dont have to do something unrelated to their work whenever someone else changes a message they depend on...

Happy about any input!

Thanks in advance, Wolf

edit retag flag offensive close merge delete