1
私は問題があります。私は2つのノード、ノード1とノード2を持っています。ここで、node1はnode2に浮動小数点数を送り、node2はnode1に浮動小数点数を送ります。関数コールバックでは、受け取った情報を他の値と合計し、変数を更新したい。しかし、問題は、私はノード1とノード2Rospyのグローバル変数を更新
Node1
!/usr/bin/env python
import rospy
import time
from std_msgs.msg import Float64
global x1
global a
x1 = 1.5
def callback(msg):
#print 'Sto ricevendo informazioni da %s nel tempo %s' % (msg.data, time.ctime())
#print "%f"%msg.data
a = msg.data
info_nodo2 = a + 0.5
x1 = info_nodo2
print "%f"%x1
def nodo():
pub = rospy.Publisher('chatter1', Float64)
rospy.init_node('nodo1', anonymous=True)
rospy.loginfo("In attesa")
rospy.Subscriber('chatter2', Float64, callback)
rate = rospy.Rate(1) # 10hz
while not rospy.is_shutdown():
for i in range(1,51):
#rospy.loginfo(num)
pub.publish(x1)
rate.sleep()
rospy.spin()
if __name__ == '__main__':
try:
nodo()
except rospy.ROSInterruptException:
pass
Node2
import rospy
import time
from std_msgs.msg import Float64
global x2
global a
x2 = 2.4
def callback(msg):
#print 'Sto ricevendo informazioni da %s nel tempo %s' % (msg.data, time.ctime())
#print "%f"%msg.data
a = msg.data
info_nodo1 = a + 0.5
x2 = info_nodo1
print "%f"%x2
def nodo():
pub = rospy.Publisher('chatter2', Float64)
rospy.init_node('nodo2', anonymous=True)
rospy.loginfo("In attesa")
rospy.Subscriber('chatter1', Float64, callback)
rate = rospy.Rate(1) # 10hz
while not rospy.is_shutdown():
for i in range(1,51):
# num = "%s" % (x2)
#rospy.loginfo(num)
pub.publish(x2)
rate.sleep()
rospy.spin()
if __name__ == '__main__':
try:
nodo()
except rospy.ROSInterruptException:
pass
ため これらのコード出力のみ最初のアップデートで、端末のプリントが(2 2.0をノード1のために私は2.9を取得し、ノード)ので、送信された情報を成功していないということです