<p>如果要订阅具有五种不同消息类型的五个不同主题,最好的方法是使用五个不同的回调函数,一个用于发布自定义消息的publisher1,一个用于发布自定义消息的publisher2,一个用于发布自定义消息的publisher3,一个用于发布自定义消息的publisher4,以及一个用于发布float64消息的float_publisher。</p>
<p>在回调函数中,参数数据基本上是一个包含消息头中声明的所有组件的结构。您得到的错误是因为正在使用custom_msg4类型的数据调用回调函数,它正在其中查找名为Float64的组件。</p>
<pre><code>def callback1(data):
rospy.loginfo (" Publisher1 Value %s ", data.custom_string1)
def callback2(data):
rospy.loginfo (" Publisher2 Value %s ", data.custom_string2)
def callback3(data):
rospy.loginfo (" Publisher3 Value %s ", data.custom_string3)
def callback4(data):
rospy.loginfo (" Publisher4 Value %s ", data.custom_string4)
def callback5(data):
rospy.loginfo (" float_publisher value %f ", data.Float64)
def python_code():
rospy.init_node("python_code")
rospy.Subscriber("float_publisher",Float64,callback5)
rospy.Subscriber("publisher1", custom_msg1,callback1)
rospy.Subscriber("publisher2", custom_msg2,callback2)
rospy.Subscriber("publisher3", custom_msg3,callback3)
rospy.Subscriber("publisher4", custom_msg4,callback4)
rospy.loginfo(" Test: start spinning!")
rospy.spin()
rospy.loginfo("node has shutdown!")
</code></pre>