ROS:发布主题不需要3秒闭锁 [英] ROS: Publish topic without 3 second latching
本文介绍了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屋!
查看全文