ROS:发布主题不需要3秒闭锁 [英] ROS: Publish topic without 3 second latching

查看:10
本文介绍了ROS:发布主题不需要3秒闭锁的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

我正尝试发布几条RoS消息,但每次发布都会收到消息发布并锁定3.0秒的消息,看起来像是被阻止了3秒。

我将为您提供一个如何发布一条消息的示例:

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

我还尝试使用以下参数:-r 10,它将消息频率设置为10 Hz(它确实是这样做的),但仅针对第一条消息,即它保持每秒重新发送第一条消息10次。

基本上,如果可能的话,我希望在不锁存的情况下发布消息,这样我就可以一秒发布多条消息。我的邮件源源不断,我需要以最快的速度将它们全部发布。

CLI

问题的一部分是rostopic推荐答案工具实际上是调试/测试的帮助器。它有你现在看到的某些限制。遗憾的是,您不能删除锁定3秒的消息,即使是单次发布。相反,这是针对实际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:发布主题不需要3秒闭锁的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆