【问题标题】:ROS: Publish topic without 3 second latchingROS:发布主题无需 3 秒锁存
【发布时间】:2022-01-06 11:56:22
【问题描述】:

作为前提,我必须说我对 ROS 非常缺乏经验。

我正在尝试发布几条 ros 消息,但每次发布我都会收到“发布和锁定消息 3.0 秒”,这看起来像是阻塞了 3 秒。

我会举一个例子来说明我如何发布一条消息:

rostopic pub -1 /heifu0/mavros/adsb/send mavros_msgs/ADSBVehicle "header: // then the rest of the message

我还尝试使用以下参数:-r 10,它将消息频率设置为 10Hz(确实如此),但仅适用于第一条消息,即它会每秒重新发送第一条消息 10 次。

基本上,如果可能的话,我想在不锁定的情况下发布一条消息,这样我就可以在一秒钟内发布多条消息。我有源源不断的消息流,我需要尽快发布它们。

【问题讨论】:

  • 对我来说,这个问题很不清楚。 “发布和锁定消息 3.0 秒”是什么意思?您能否尝试以清晰/可理解的方式描述当前的行为以及您想要实现的行为?
  • 嗨。对不起,如果我不清楚。我将描述整个问题。我有一个 ADS-B anthena 将数据转储到我的电脑。有了这些数据,我正在生成 mavros_msg/ADSBVehicle 消息。然后我想发布这些消息。我发布的每条消息(成功)我都会在终端中收到一条消息,上面写着“发布和锁定消息 3.0 秒”。我想要的是避免此消息锁定,这样我就可以发布消息而不必在每次发布后等待 3 秒。这清楚/有意义吗?谢谢你的回答。
  • 您尝试通过 CLI 执行此操作是否有任何具体原因?在我看来,这应该只是一个节点。
  • 你的问题还不清楚。您在哪里定义 3 秒的延迟?你应该试着在这里给我们更多的上下文/代码。

标签: ros robotics mavlink


【解决方案1】:

部分问题在于rostopic CLI 工具实际上是用于调试/测试的助手。它有你现在看到的某些限制。不幸的是,您无法删除该锁定 3 秒的消息,即使对于 1-shot 出版物也是如此。相反,这是一个实际 ROS 节点的工作。它可以在几行 Python 中完成,如下所示:

import rospy
from mavros_msgs.msg import ADSBVehicle

class MyNode:
    def __init__(self):
        rospy.init_node('my_relay_node')
        self.rate = rospy.Rate(10.0) #10Hz

        self.status_pub = rospy.Publisher('/heifu0/mavros/adsb/send', ADSBVehicle, queue_size=10)

    def check_and_send(self):
        #Check for some condition here
        if some_condition:
            output_msg = ADSBVehicle()
            #Fill in message fields here
            self.status_pub.publish(output_msg)

    def run_node(self):
        while not rospy.is_shutdown():
            self.check_and_send()
            self.rate.sleep() #Run at 10Hz

if __name__ == '__main__':
    node = myNode()
    node.run_node()

【讨论】:

  • 非常感谢您的深入回答。正如我所提到的,我对 ros 非常陌生,并且不知道 CLI 工具与创建实际节点相比是有限的。我会认为答案是正确的,因为它确实回答了我的问题。如果你不介意的话,我还有一个问题。我有一个转储数据(即 adsb 车辆数据)的程序(一个 c 程序)。如何将该外部程序发布到该节点?这有意义吗?
  • 我想我明白你在问什么。但是,根据 SO 指南,我认为建议您为此创建一个新问题。
  • 会这样做。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-27
  • 2016-11-24
  • 1970-01-01
  • 2021-09-13
  • 1970-01-01
相关资源
最近更新 更多