ros发布节点信息python_编写同时具有发布者和订阅者的ros节点?

嗯,我认为这里有很多解决方案,您甚至可以使用python进程,但我建议使用使用ros Timer的ROS方法。

我在python中并没有那么高效,但这段代码可能会让您有点头晕。#!/usr/bin/env python

import rospy

from std_msgs.msg import Empty

from std_msgs.msg import String

import numpy as np

last_data = ""

started = False

pub = rospy.Publisher('/status', String, queue_size=1000)

def callback(data):

print "New message received"

global started, last_data

last_data = data

if (not started):

started = True

def timer_callback(event):

global started, pub, last_data

if (started):

pub.publish(last_data)

print "Last message published"

def listener():

rospy.init_node('control', anonymous=True)

rospy.Subscriber('control_c', String, callback)

timer = rospy.Timer(rospy.Duration(0.5), timer_callback)

rospy.spin()

timer.shutdown()

if __name__ == '__main__':

print "Running"

listener()

在这里,您的回调将更新消息,您的计时器将每0.5秒触发一次并发布最后收到的数据。

您可以通过每隔3秒在“/control\u c”上发布数据并将计时器配置为0.5秒来测试此代码。启动回音打开/状态$ rostopic echo /status

你的信息会以2赫兹的频率发布。

希望能有帮助!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值