You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在未安装ROS的情况下用Python读取.db3/.mcap格式的rosbag文件?

无需安装ROS读取rosbag文件的实用库

下面列出几个无需依赖完整ROS环境,就能读取并解析rosbag消息的适配库:

  • pyrosbag:纯Python实现的rosbag解析库,支持ROS1的.bag格式,无需安装ROS。可解析常见ROS消息类型(如sensor_msgs/Image、nav_msgs/Odometry等),也支持通过提供.msg文件路径解析自定义消息。

    • 安装命令:pip install pyrosbag
    • 基础使用示例:
      from pyrosbag import Bag
      
      with Bag('your_bag_file.bag') as bag:
          for topic, msg, t in bag.read_messages(topics=['/camera/image_raw']):
              # 直接访问消息字段
              print(f"Image timestamp: {t}, width: {msg.width}")
      
  • rosbag_parser:轻量级解析工具,专注于将rosbag消息转换为字典或JSON格式,方便快速处理数据。支持大部分标准ROS消息类型,无需ROS环境。

    • 安装命令:pip install rosbag-parser
    • 基础使用示例:
      from rosbag_parser import Parser
      
      parser = Parser('your_bag_file.bag')
      messages = parser.get_messages('/odom')
      for msg in messages:
          print(f"Pose x coordinate: {msg['pose']['pose']['position']['x']}")
      
  • bagpy:可通过独立Python包安装,无需完整ROS环境。支持将rosbag数据导出为CSV、JSON格式,同时能解析消息结构;遇到自定义消息时,需手动提供对应的.msg定义文件。

    • 安装命令:pip install bagpy
    • 基础使用示例:
      from bagpy import bagreader
      
      b = bagreader('your_bag_file.bag')
      # 生成指定话题的CSV文件
      csv_path = b.message_by_topic('/scan')
      # 直接读取消息对象
      for topic, msg, t in b.reader.read_messages('/scan'):
          print(f"Scan data points count: {len(msg.ranges)}")
      

注意:如果处理自定义消息类型,上述库通常需要你提供对应的.msg文件路径,以确保消息结构解析准确;若遇到罕见消息类型解析问题,可结合库提供的原始字节接口,手动编写序列化/反序列化逻辑。

内容的提问来源于stack exchange,提问作者Ravi Kiran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 00:26:14