如何让函数访问另一个函数中的变量
How to get Function to Access Varibles in Another Function
我有多种功能。一个函数(估计)调用另一个函数(回调)的变量以执行计算。但是,有几个问题。
- 似乎变量没有被传递,而且...
- 似乎函数(估计)从未被调用到 运行,我不知道为什么。
我想要的是打印估价结果,但是什么也没有打印出来
如果有人能告诉我我做错了什么,我将不胜感激。
EX:
#!/usr/bin/env python3
import rclpy
from rclpy.node import Node
import math
from geometry_msgs.msg import Quaternion
from sensor_msgs.msg import Imu
import numpy as np
from rclpy.qos import qos_profile_sensor_data
class S_E(Node):
def __init__(self):
super().__init__('s_e')
self.sub = self.create_subscription(Imu, '/imu', self.callback, qos_profile=qos_profile_sensor_data)
def callback(self, msg):
quat = self.quat = msg.orientation # x,y,z
a_rate = self.a_rate = msg.angular_velocity # x,y,z
return quat, a_rate
def estimation(self):
print("Hello")
quat, a_rate = callback()
estimate = (0.5 * a_rate) * quat
print(estimate)
def main(args=None):
rclpy.init(args=args) # initialize ROS2 Library
s_e = S_E() # make an object of class
try:
while (1):
rclpy.spin(s_e)
except Exception as e:
print("Exception: {}".format(e))
rclpy.spin(s_e)
rclpy.shutdown()
if __name__ == '__main__':
main()
您没有在您的对象上调用估算函数。你可以通过做这样的事情来做到这一点
s_e = S_E()
s_e.estimation()
我有多种功能。一个函数(估计)调用另一个函数(回调)的变量以执行计算。但是,有几个问题。
- 似乎变量没有被传递,而且...
- 似乎函数(估计)从未被调用到 运行,我不知道为什么。
我想要的是打印估价结果,但是什么也没有打印出来
如果有人能告诉我我做错了什么,我将不胜感激。
EX:
#!/usr/bin/env python3
import rclpy
from rclpy.node import Node
import math
from geometry_msgs.msg import Quaternion
from sensor_msgs.msg import Imu
import numpy as np
from rclpy.qos import qos_profile_sensor_data
class S_E(Node):
def __init__(self):
super().__init__('s_e')
self.sub = self.create_subscription(Imu, '/imu', self.callback, qos_profile=qos_profile_sensor_data)
def callback(self, msg):
quat = self.quat = msg.orientation # x,y,z
a_rate = self.a_rate = msg.angular_velocity # x,y,z
return quat, a_rate
def estimation(self):
print("Hello")
quat, a_rate = callback()
estimate = (0.5 * a_rate) * quat
print(estimate)
def main(args=None):
rclpy.init(args=args) # initialize ROS2 Library
s_e = S_E() # make an object of class
try:
while (1):
rclpy.spin(s_e)
except Exception as e:
print("Exception: {}".format(e))
rclpy.spin(s_e)
rclpy.shutdown()
if __name__ == '__main__':
main()
您没有在您的对象上调用估算函数。你可以通过做这样的事情来做到这一点
s_e = S_E()
s_e.estimation()