class Arbiter(): """ Arbiter controls which states are currently active """ def __init__(self): self.rc_disable = False self.rc_overridden = True rospy.init_node('arbiter') self.sub_rc = rospy.Subscriber('/drone/rc/in', RCIn, self.rc_callback) self.pub_rc = rospy.Publisher('/drone/rc/override', OverrideRCIn, queue_size=10) self.robot = Drone() # Decides which actions need to run self.state = FiducialFollower(self.robot) # self.state = BaseFly(self.robot) # Loops until task has been fully completed def rc_callback(self, data): val = data.channels[5] self.rc_disable = val > 1500 def go(self): r = rospy.Rate(30) while not rospy.is_shutdown() or not self.state.finished(): if not self.rc_disable: self.state.run() self.rc_overridden = True else: self.pub_rc.publish([0]*8) self.rc_overridden = False r.sleep()
def __init__(self): self.rc_disable = False self.rc_overridden = True rospy.init_node('arbiter') self.sub_rc = rospy.Subscriber('/drone/rc/in', RCIn, self.rc_callback) self.pub_rc = rospy.Publisher('/drone/rc/override', OverrideRCIn, queue_size=10) self.robot = Drone() # Decides which actions need to run self.state = FiducialFollower(self.robot)