当我们想要在一个节点中同时订阅多个话题时,我们可以如下做法。
#!/usr/bin/env python
import rospy
from std_msgs.msg import String
def callback_1(data):
rospy.loginfo(rospy.get_caller_id() + "I heard %s", data.data)
def callback_2(data):
rospy.loginfo(rospy.get_caller_id() + "I heard %s", data.data)
def listener():
# In ROS, nodes are uniquely named. If two nodes with the same
# name are launched, the previous one is kicked off. The
# anonymous=True flag means that rospy will choose a unique
# name for our 'listener' node so that multiple listeners can
# run simultaneously.
rospy.init_node('listener', anonymous=True)
rospy.Subscriber("chatter_1", String, callback_1)
rospy.Subscriber("chatter_2", String, callback_2)
# spin() simply keeps python from exiting until this node is stopped
rospy.spin()
if __name__ == '__main__':
listener()
<