ROS Bag包的修复
如果因为版本不兼容,引起的ros bag错误,可以采用如下步骤修复:
1: 生成迁移文件
rosbag check bad.bag -g repair.bmr
2: 手动修改repair.bmr
a): 修改状态,将valid从False改为True
valid = True
b): 根据就消息和新消息,手动修改数据,举例如下:
def update(self, old_msg, new_msg):
self.migrate(old_msg.header, new_msg.header)
new_msg.height = old_msg.height
new_msg.width = old_msg.width
new_msg.distortion_model = old_msg.distortion_model
#No matching field name in old message
new_msg.D = old_msg.d
new_msg.K = old_msg.k
3: 用迁移文件修复 bag
rosbag fix bad.bag ok.bag repair.bmr
ok.bag即为修复之后的bag包。