订阅者 ROS 节点上的数学运算
Mathematical operation on subscriber ROS node
我正在接收来自主题的数据,
我在一个单独的节点中订阅了这个主题
我想对这些数据进行一些数学运算,但出现错误
这是代码
def __init__(self):
rospy.init_node('extreme_values', annonymous=True)
self.x= rospy.subscriber('x_values', float32, callback)
self.y= rospy.subscriber('y_values', float32, callback)
self.theta= rospy.subscriber('theta_values', float32, callback)
self.extreme = (self.x - self.y) + ((self.x * self.y) * cos(self.theta))
你做错了,你可以尝试类似下面的方法,
import rospy
from std_msgs.msg import Float32
class Handler():
def __init__(self):
rospy.subscriber('x_values', Float32, self.callback_xvalues)
rospy.subscriber('y_values', Float32, self.callback_yvalues)
rospy.subscriber('theta_values', Float32, self.callback_zvalues)
self.extreme_pub = rospy.publisher('extreme/results', Float32, queue_size = 10)
self.x = None
self.y = None
self.theta = None
def callback_xvalues(self, data):
self.y = data
def callback_yvalues(self, data):
self.y = data
def callback_zvalues(self, data):
self.y = data
if((self.x is not None) and (self.theta is not None)):
self.extreme = (self.x - self.y) + ((self.x * self.y) * cos(self.theta))
info = Float32()
info.data = self.extreme
self.extreme_pub.publish(info)
rospy.init_node('extreme_values', annonymous=True)
node_ = Handler()
rospy.subscriber
不会 return 任何东西,但是当消息到达相应的回调时,即 callback_xvalues,被触发,所以你的逻辑应该在其中一个回调中实现,即, callback_zvalues。不要为不同的主题注册相同的回调,不推荐。让我知道你明白了
我正在接收来自主题的数据, 我在一个单独的节点中订阅了这个主题 我想对这些数据进行一些数学运算,但出现错误 这是代码
def __init__(self):
rospy.init_node('extreme_values', annonymous=True)
self.x= rospy.subscriber('x_values', float32, callback)
self.y= rospy.subscriber('y_values', float32, callback)
self.theta= rospy.subscriber('theta_values', float32, callback)
self.extreme = (self.x - self.y) + ((self.x * self.y) * cos(self.theta))
你做错了,你可以尝试类似下面的方法,
import rospy
from std_msgs.msg import Float32
class Handler():
def __init__(self):
rospy.subscriber('x_values', Float32, self.callback_xvalues)
rospy.subscriber('y_values', Float32, self.callback_yvalues)
rospy.subscriber('theta_values', Float32, self.callback_zvalues)
self.extreme_pub = rospy.publisher('extreme/results', Float32, queue_size = 10)
self.x = None
self.y = None
self.theta = None
def callback_xvalues(self, data):
self.y = data
def callback_yvalues(self, data):
self.y = data
def callback_zvalues(self, data):
self.y = data
if((self.x is not None) and (self.theta is not None)):
self.extreme = (self.x - self.y) + ((self.x * self.y) * cos(self.theta))
info = Float32()
info.data = self.extreme
self.extreme_pub.publish(info)
rospy.init_node('extreme_values', annonymous=True)
node_ = Handler()
rospy.subscriber
不会 return 任何东西,但是当消息到达相应的回调时,即 callback_xvalues,被触发,所以你的逻辑应该在其中一个回调中实现,即, callback_zvalues。不要为不同的主题注册相同的回调,不推荐。让我知道你明白了