88
社区成员
发帖
与我相关
我的任务
分享接收信息,通过ROS Topic接收来自其它Node的信息,并通过回调函数处理
通常用于监测系统状态,如当机器人关节到达限位位置时触发运动中断
Topic通信过程为:
Publisher Node Demo
#!/usr/bin/env python
#-- coding:UTF-8 --
import rospy
from std_msgs.msg import String
def push_msgs():
rospy.init_node("push_node", anonymous=False)
push_pub = rospy.Publisher("push", String, queue_size=10)
rate = rospy.Rate(100)
while not rospy.is_shutdown():
msg = "hello world"
push_pub.publish(msg)
rospy.loginfo("send message %s", msg)
rate.sleep()
if __name__ == "__main__":
push_msgs()
Subscriber Node Demo
#!/usr/bin/env python
#-- coding:UTF-8 --
import rospy
from std_msgs.msg import String
def stringSubscriberCallback(data): #data的数据类型与Subscriber接收的Topic对应的消息类型一致
rospy.loginfo('The contents of simple_topic: %s', data.data)
def stringSubscriber():
rospy.init_node('sub_node', anonymous = False) #初始化ROS节点
rospy.Subscriber('push', String, stringSubscriberCallback) #定义Subscriber对象
rospy.spin()
if __name__ == "__main__":
stringSubscriber()
运行一下就是下面的效果
