【问题标题】:ROS: How to start node and record a rosbag from bash script?ROS:如何启动节点并从 bash 脚本记录一个 rosbag?
【发布时间】:2022-11-27 11:00:01
【问题描述】:

我想启动一个 ROS 节点并记录节点发布的所有主题。我计划通过 bash 脚本来完成此操作。

问题是当我第一次启动节点并记录一个包文件时,处理后生成了包文件但它是空的。我收到此错误消息:

No messages to play on specified topics. Exciting.

到目前为止我的脚本:

#!/bin/bash

# launching my ros node:
roslaunch test test.launch

# [TODO] wait short period of time (until topics are available)

# record all topics via rosbag
rosbag record -a

# [TODO] kill ros node after specific amount of time/close bagfile 

我认为这是因为当我启动节点后直接开始记录时那里没有主题。

也许有人知道如何做到这一点。任何帮助将非常感激。

【问题讨论】:

    标签: bash ubuntu ros rosbag


    【解决方案1】:

    您的问题是因为您将 ROS 节点作为前台进程启动,这意味着 bash 脚本在第一个命令完成之前不会执行第二个命令;这意味着您的记录从未真正开始。而是通过以下方式将节点作为后台进程启动:

    #!/bin/bash
    roslaunch test test.launch &
    rosbag record -a
    

    作为您评论的旁注,记录开始时是否发布任何内容都没有关系。 rosbag record 将等待roscore 开始,然后记录与发布的roscore 时钟时间相关的消息。例如如果核心与rosbag同时启动,并且在消息发布前 10 秒过去,播放将在启动后 10 秒发布第一条消息。

    【讨论】:

      猜你喜欢
      • 2014-06-07
      • 1970-01-01
      • 1970-01-01
      • 2021-07-23
      • 2019-07-10
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      相关资源
      最近更新 更多