示例#1
0
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()
示例#2
0
    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)