【问题标题】:How to get Function to Access Varibles in Another Function如何让函数访问另一个函数中的变量
【发布时间】:2020-06-25 21:14:56
【问题描述】:

我有多种功能。一个函数(估计)调用另一个函数(回调)的变量以执行计算。但是,有几个问题。

  1. 似乎变量没有通过,而且...
  2. 似乎永远不会调用函数(估计)来运行,我不知道为什么。

我想要的是打印出估算结果,但什么都没有打印出来。

如果有人能让我知道我做错了什么,我将不胜感激。

前:

#!/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()

【问题讨论】:

  • 您将需要详细说明究竟出了什么问题。
  • 请注意,在 estimation 中,您调用 callback(),但这并没有在该范围内定义......完全不清楚您希望这样做。
  • 好的,谢谢,我会更新它。但要在这里回答你的问题,什么都没有打印。我想估计打印,但我什么也没得到。
  • 好吧,你还没有提供minimal reproducible example。您正在使用某个库,但至少 oyu 需要描述您希望该库做什么,为什么您期望 .estimation 被调用?

标签: python function oop ros


【解决方案1】:

您没有在对象上调用估计函数。你可以通过做这样的事情来做到这一点

s_e = S_E()
s_e.estimation()

【讨论】:

  • 另一个问题,我能够调用该函数。但是,我收到一个错误:quat,a_rate = callback(),因为它说名称“回调”未定义 - 所以我无法访问变量。你知道我该如何解决这个问题吗?
  • 任何时候你想调用一个作为类的一部分的函数,唯一的“访问”方法就是用那个类的对象来调用它。如果你从该类的函数中调用它,那么对象就是 self。在你的情况下,你会做self.callback()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
相关资源
最近更新 更多