在另一个Python文件中使用rostopic的变量
我刚开始使用ROS,想要在一个主题中接收一个整数,然后在另一个Python文件中使用这个整数。listener.py能正确接收到这个整数,但当我在另一个文件中使用它时,它不会更新,只会打印出None。我不知道我哪里出错了。
listener.py
#!/usr/bin/env python
import rospy
from std_msgs.msg import Int32
class listenerPy:
def __init__(self):
self.received_integer = None
def callback(self, data):
self.received_integer = data.data
print(self.received_integer)
def listener(self):
rospy.init_node('listener', anonymous=True)
rospy.Subscriber('chatter', Int32, self.callback)
rospy.spin()
if __name__ == '__main__':
try:
listener = listenerPy() # Instantiate the listenerPy class
listener.listener() # Call the listener method on the instance
except rospy.ROSInterruptException:
pass
其他文件
#!/usr/bin/env python
from listener import listenerPy
from time import sleep
def main():
local_var = listenerPy()
while True:
value = local_var.received_integer
print(value)
sleep(1)
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
pass
1 个回答
0
如果你想让这两个文件独立运行,你需要一些共享的内存。不过在你的例子中,你需要在另一个文件里启动监听器。
def main():
local_var = listenerPy()
local_var.listener()
while True:
value = local_var.received_integer
print(value)
sleep(1)
但是,你在你的ros节点里调用了rospy.spin()
,这个会让程序停住。所以你应该把这个调用从你的节点里去掉。