我真的不明白我做错了什么..我尝试从另一种方法获取值对象..这是我的代码
#!/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.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)
rospy.Subscriber 是为 self.posisi_ax12_pan 方法、self.posisi_ax12_tilt 方法和 self.posisi_ax12_elbow 插入 Float64 数据的行命令。