使用ros_readbagfile脚本提取感兴趣的话题

使用ros_readbagfile脚本轻松地提取感兴趣的话题

来源:这部分教程是根据本文件中首次发表的指引改编的,Python脚本来自:ros_readbag.py。

注意:您可以杀死任何正在运行的进程。比如说连roscore都不需要运行。

  1. 下载并安装`ros_readbag.py`:

    bash 复制代码
    # Download the file
    wget https://raw.githubusercontent.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/master/useful_scripts/ros_readbagfile.py
    # Make it executable
    chmod +x ros_readbagfile.py
    # Ensure you have the ~/bin directory for personal binaries
    mkdir -p ~/bin
    # Move this executable script into that directory as `ros_readbagfile`, so that it will
    # be available as that command
    mv ros_readbagfile.py ~/bin/ros_readbagfile
    # Re-source your ~/.bashrc file to ensure ~/bin is in your PATH, so you can use this
    # new `ros_readbagfile` command you just installed
    . ~/.bashrc
  2. 通过rosbag info命令确定要从bag文件中读取的准确话题名,如上一篇文章的第一步所示。

  3. 然后使用ros_readbagfile,大体格式如下:

    bash 复制代码
    ros_readbagfile <mybagfile.bag> [topic1] [topic2] [topic3] [...]

    要阅读上一篇文章中显示的相同消息,请使用:

    bash 复制代码
    time ros_readbagfile demo.bag /obs1/gps/fix /diagnostics_agg | tee topics.yaml

    就是这样!你会看到它快速打印出所有70条信息。以下是终端输出的最后部分:

    bash 复制代码
            key: "Early diagnostic update count:"
            value: "0"
          - 
            key: "Zero seen diagnostic update count:"
            value: "0"
    =======================================
    topic:           /obs1/gps/fix
    msg #:           30
    timestamp (sec): 1490150297.770734310
    - - -
    header: 
      seq: 4028
      stamp: 
        secs: 1490150297
        nsecs: 744347249
      frame_id: "gps"
    status: 
      status: 0
      service: 1
    latitude: 37.4007565466
    longitude: -122.108159482
    altitude: -6.35130467023
    position_covariance: [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]
    position_covariance_type: 0
    =======================================
    Total messages found = 70.
    DONE.
    
    real  0m2.897s
    user  0m2.457s
    sys 0m0.355s

    现在用你喜欢的文本编辑器打开topics.yaml,看看它从bag文件中提取的所有消息。

    请注意,尽管我给了这个文件一个".yaml"扩展名,但并不代表所有部分都是正确的YAML格式。相反,尽管文件中存储的每条消息都是有效的YAML语法,但是消息之间的标题和行分隔符(例如=====)不是有效的。请记住这一点,避免试图将输出解析为YAML。如果你愿意,也可以很容易地修改ros_readbagfile这个Python脚本来删除这些非YAML特性。

为什么用ros_readbagfile而不是rostopic echo -b呢?

  1. 因为rostopic极其地 慢! 举个例子,就算在高配计算机(4核8线程的奔腾i7和m.2固态硬盘)上运行这个命令,也需要11.5分钟才能读取一个18GB的bag文件!

    bash 复制代码
    time rostopic echo -b large_bag_file.bag /topic1

    而用ros_readbagfile脚本,在相同计算机上只要花费1分钟37秒 就能读取同样的话题和18GB的bag文件!因此ros_readbagfile比rostopic快了11.5/(1+37/60) = 大约7倍!

    bash 复制代码
    time ros_readbagfile large_bag_file.bag /topic1
  2. 因为rostopic一次只能读取单个话题 ,而ros_readbagfile可以同时读取任意多的话题!

    bash 复制代码
    ros_readbagfile <mybagfile.bag> [topic1] [topic2] [topic3] [...] [topic1000]

就酱。

相关推荐
Light Gao1 小时前
LeRobot 全链路原理:用一个“1+1=2“的例子讲透机械臂与模型如何接入
机器人·具身智能·vla·模仿学习·lerobot
张彦峰ZYF2 小时前
越过边界之前:Reward Seeker 实验如何改写智能体安全的时间逻辑
人工智能·ai agent·anthropic·智能体安全·reward seeker·“控制评价过程”泛化跨领域策略·envbom
拓恒技术3 小时前
无人机巡检AI算法的工程化落地:从需求到交付的5个核心环节
人工智能·算法·无人机
罗西的思考5 小时前
AI 时代的 “房谋杜断”:如何培养能力、品味与判断力
人工智能·算法·机器学习
字节跳动视频云技术团队5 小时前
720P 直升 8K,解密 2026 抖音美好奇妙夜巨幕超分黑科技
人工智能·音视频开发
打工仔折腾 AI6 小时前
在 Ubuntu ARM64 部署 Q1 V3.0 MuJoCo 模型:加载、单步推理与执行器响应解析
linux·运维·人工智能·python·深度学习·ubuntu·性能优化
逐米时代6 小时前
从试点验证到协同深化:制造业AI转型三年路线图设计方法
人工智能
GlobalInfo6 小时前
全球及中国风电叶片检测机器人行业研究报告(2026版):市场现状、行业前景与占有率分析
运维·网络·人工智能·机器人
stormzhangV7 小时前
AI 越强,失业越严重
人工智能·aigc
夏文强7 小时前
Rerank 与混合检索:怎么让 RAG 从「能用」变成「好用」
人工智能·大模型·向量数据库·rag·检索增强生成