无法访问另一个函数中的类属性



import rospy
from sensor_msgs.msg import Imu
class ImuData:
def __init__(self):
#self.data = None
pass
def get_observation(self):
rospy.Subscriber('/imu', Imu, self.imu_callback)
imuData = self.data
print(imuData)
def imu_callback(self, msg):
self.data = msg.orientation
print(self.data)

if __name__ == '__main__':
rospy.init_node('gett_imu', anonymous= True)
idd = ImuData()
idd.get_observation()

在上面的代码中,我想从get_observation函数访问imu_callback中定义的self.data。问题是我得到了一个错误,说ImuData没有属性data。我该如何解决此问题?

注意:我觉得这个问题与python类有关,而与Ros和rospy无关。

这里发生了一些事情。评论中提到的一点是,您应该在__init__中初始化属性。您看到的错误部分是因为Python和self.data实际上还没有初始化。

第二个问题是在哪里设置订阅者。这也应该在__init__中进行,并且只能进行一次。传感器将以相当恒定的速率发布,因此实际接收有关该主题的任何数据都需要时间。此外,如果您计划多次调用get_observation,您将创建一个新的订阅,但这是您不想要的。

以以下代码为固定示例:

def __init__(self):
rospy.Subscriber('/imu', Imu, self.imu_callback)
self.data = None
def get_observation(self):
imuData = self.data
print(imuData)

相关内容

  • 没有找到相关文章

最新更新