我真的不明白我做错了什么。。我试图从另一个方法获取一个值对象。。这是我的密码
#!/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弯头. 在
错误提示
self.posisi_pan_servo
不存在。您似乎只在posisi_ax12_pan()
中定义了这个变量。这意味着当您试图在operasikan_servo()
内访问该属性时,posisi_ax12_pan()
方法尚未被调用。在我想在构造函数中调用
posisi_ax12_*
方法之前,应该先调用posisi_ax12_*
方法。在显然posisi_ax12_pan和posisi_ax12_tilt调用时间比operasikan_servo晚(在您订阅的事件发生后),因此,您应该初始化此属性-自位置伺服以及自定位倾斜伺服公司名称:
相关问题 更多 >
编程相关推荐