如何从python中的另一个方法获取valueobject

2024-09-27 23:21:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我真的不明白我做错了什么。。我试图从另一个方法获取一个值对象。。这是我的密码

#!/usr/bin/env python


class tracksendi():
    def __init__(self):
        rospy.on_shutdown(self.shutdown)

        rospy.Subscriber('robotis/servo_head_pan_joint',
                         Float64, self.posisi_ax12_pan)
        rospy.Subscriber('robotis/servo_head_tilt_joint',
                         Float64, self.posisi_ax12_tilt)
        rospy.Subscriber('robotis/servo_right_elbow_joint',
                         Float64, self.posisi_ax12_elbow)

        while not rospy.is_shutdown():
            self.operasikan_servo()
            rate.sleep()

    def posisi_ax12_pan(self,pan):
        self.posisi_pan_servo = pan.data   
        return

    def posisi_ax12_tilt(self,tilt):
        self.posisi_tilt_servo = tilt.data
        return     

    def posisi_ax12_elbow(self,elbow):
        self.posisi_elbow_data = elbow.data
        return

    def ambil_timestamp(self,waktu):
        self.data_time_joint_states = waktu.header.stamp
        return             

    def operasikan_servo(self):
    # Lengan Kanan
        try:

            vektor_n_rs = self.posisi_pan_servo - self.posisi_tilt_servo
            vektor_re_rs = self.posisi_tilt_servo - self.posisi_elbow_data

        except KeyError:
            pass


if __name__ == '__main__':
    try:
        tracksendi()
    except rospy.ROSInterruptException:
        pass

但是,我得到了这个错误

vektor_n_rs = self.posisi_pan_servo - self.posisi_tilt_servo  

AttributeError: tracksendi instance has no attribute 'posisi_pan_servo'

那个问题是怎么解决的???在

注:

在rospy订户('robotis/伺服头万向节’,Float64,自我定位ax12)在

在rospy订户(“机器人/伺服头倾斜关节”,Float64,自动倾斜)在

在rospy订户(“机器人/伺服右肘关节”,Float64,自定位ax12弯头)在

在rospy订户为插入Float64数据的行命令自我定位ax12方法,自定位轴12倾斜方法和自定位ax12弯头. 在


Tags: 定位selfdatareturndefrospypanfloat64
3条回答

错误提示self.posisi_pan_servo不存在。您似乎只在posisi_ax12_pan()中定义了这个变量。这意味着当您试图在operasikan_servo()内访问该属性时,posisi_ax12_pan()方法尚未被调用。在

我想在构造函数中调用posisi_ax12_*方法之前,应该先调用posisi_ax12_*方法。在

显然posisi_ax12_panposisi_ax12_tilt调用时间比operasikan_servo晚(在您订阅的事件发生后),因此,您应该初始化此属性-自位置伺服以及自定位倾斜伺服公司名称:

   def __init__(self):
        rospy.on_shutdown(self.shutdown)
        self.posisi_pan_servo = 0 # or any number you want
        self.posisi_tilt_servo = 0 # or any number you want
        #....

相关问题 更多 >

    热门问题