ROS学习笔记51--rosbag管理工具分享:时间戳过滤话题过滤多包过滤
Posted 鸿_H
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ROS学习笔记51--rosbag管理工具分享:时间戳过滤话题过滤多包过滤相关的知识,希望对你有一定的参考价值。
环境:ubuntu20.04 、ros-noetic、python
前言:这是分享一个自己写的rosbag管理工具,个人感觉实用性很强。
import rosbag
def merge():
bag1 = rosbag.Bag('/home/ylh/dataset/1.bag','r') #包源1
bag2 = rosbag.Bag('/home/ylh/dataset/2.bag','r') #包源2
# bagn = rosbag.Bag('xxx/n.bag','r') #可推广到包源包n
bag_merge = rosbag.Bag('/home/ylh/dataset/merge.bag','w') #新包merge.bag
#给定时间段,根据自己需要更改就行
t1 = 1638932875 #开始时间,单位秒
t2 = 1638932875 + 50 #结束时间,单位秒
#包源1 操作: 时间戳+话题过滤
for topic, msg, t in bag1: # 注意topic、msg、t顺序,从包中解析依次是话题、该话题消息内容、该话题的时间戳,推荐使用所示顺序
tmp = t
tmp = float(str(tmp)) / 1e+9
if float(t1) <= tmp <= float(t2):
if topic == '/topic_1':
bag_merge.write(topic, msg, t)
#如果有其他话题需求,依次叠加,如
if topic == '/topic_2':
bag_merge.write(topic, msg, t)
#包源2: 操作:时间戳过滤
for topic, msg, t in bag2:
tmp = t
tmp = float(str(tmp)) / 1e+9
if float(t1) <= tmp <= float(t2):
bag_merge.write(topic, msg, t)
#包源n: 时间戳 / 时间戳+话题,基本操作样式如上。当然也是可以添加话题类型过滤等等,根据实际需求进行调整即可
#....
bag1.close()
bag2.close()
# bagn.close()
bag_merge.close() #注意,所有打开过的包,都得关闭,否则下次访问可能会失败
if __name__== "__main__":
merge()
如果觉得该工具帮到你的话,记得点赞收藏
#####################
不积硅步,无以至千里
好记性不如烂笔头
以上是关于ROS学习笔记51--rosbag管理工具分享:时间戳过滤话题过滤多包过滤的主要内容,如果未能解决你的问题,请参考以下文章
ROS学习笔记51--rosbag管理工具分享:时间戳过滤话题过滤多包过滤
ROS学习笔记之——基于已有的rosbag重新录制rosbag