首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不多次调用rosbag filter的情况下将一个rosbag拆分成几个文件?

如何在不多次调用rosbag filter的情况下将一个rosbag拆分成几个文件?
EN

Stack Overflow用户
提问于 2018-01-31 23:09:24
回答 1查看 3.1K关注 0票数 2

我想把一个100 GB的玫瑰花袋分成100个1 GB的袋子。我尝试使用rosbag过滤器,但它需要很长时间,因为我必须手动运行每个过滤器,每次,它都会扫描整个袋子。有没有更好的方法来执行这种拆分(通过命令行或Python脚本)?

EN

回答 1

Stack Overflow用户

发布于 2018-07-17 22:25:07

您可以简单地使用如下函数将您的包文件拆分成块:

代码语言:javascript
复制
import rosbag

def extract_chunks(file_in, chunks):
    bagfile = rosbag.Bag(file_in)
    messages = bagfile.get_message_count()
    m_per_chunk = int(round(float(messages) / float(chunks)))
    chunk = 0
    m = 0
    outbag = rosbag.Bag("chunk_%04d.bag" % chunk, 'w')
    for topic, msg, t in bagfile.read_messages():
        m += 1
        if m % m_per_chunk == 0:
            outbag.close()
            chunk += 1
            outbag = rosbag.Bag("chunk_%04d.bag" % chunk, 'w')
        outbag.write(topic, msg, t)
    outbag.close()

请注意,此方法使用消息数量来执行拆分,因此生成的块包文件不一定具有相同的大小。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48545368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档