def fly(self):
        if self.buttons:
            #RTL
            if self.buttons[0]:
                self.RTL()

            # Arm drone(s)
            if self.buttons[2]:
                self.arm()

            # Disarm drone(s)
            if self.buttons[3]:
                self.disarm()

            #set mission
            if self.buttons[10]:
                self.waypoints = mission_parser.get_mission(0)
                #self.continue_mission() #keep drone from landing at end of mission
                success = self.push_waypoints()  #push to drone

            if self.buttons[11]:
                self.clear_waypoints()
            '''
            #set new waypoints - in flight, ignore existing waypoints and start new mission
            if self.buttons[9]:
                self.waypoints = mission_parser.get_mission(1)
                #self.continue_mission()
                self.push_waypoints()
                self.restart_mission()
            '''
            #save map points to mission
            if self.buttons[9]:
                self.set_mission_to_map()
            '''
            #add waypoints
            if self.buttons[8]:
                self.add_waypoints([[42.293394, -71.263916],[42.293357, -71.263997]])
            '''
            if self.buttons[8]:
                self.save_mission_to_file()

            #enter guided mode/toggle guided waypoints
            if self.buttons[1]:
                self.guided_function()

            if self.buttons[4]:
                self.begin_mission()

            if self.buttons[5]:
                self.end_mission()

            if self.buttons[6]:
                self.set_guided_to_map()

            if self.buttons[7]:
                self.launch_map()

            time.sleep(0.01)

        #joystick control for manual
        if self.drones[0].armed and self.mode[0] == 'manual':
            rc_msg = OverrideRCIn()

            x = 1500 - self.axes[0] * 300
            y = 1500 - self.axes[1] * 300
            z = 1000 + (self.axes[3] + 1) * 500
            yaw = 1500 - self.axes[2] * 200

            (rc_msg.channels[0], rc_msg.channels[1], rc_msg.channels[2],
             rc_msg.channels[3]) = (x, y, z, yaw)
            print z

            self.pub_rc[0].publish(rc_msg)
    def fly(self):
        if self.buttons:
            #RTL
            if self.buttons[0]:
                self.RTL()

            # Arm drone(s)
            if self.buttons[2]:
                self.arm()

            # Disarm drone(s)
            if self.buttons[3]:
                self.disarm()

            #set mission
            if self.buttons[10]:
                self.waypoints = mission_parser.get_mission(0)
                #self.continue_mission() #keep drone from landing at end of mission
                success = self.push_waypoints() #push to drone

            if self.buttons[11]:
                self.clear_waypoints()

            '''
            #set new waypoints - in flight, ignore existing waypoints and start new mission
            if self.buttons[9]:
                self.waypoints = mission_parser.get_mission(1)
                #self.continue_mission()
                self.push_waypoints()
                self.restart_mission()
            '''
            #save map points to mission
            if self.buttons[9]:
                self.set_mission_to_map()

            '''
            #add waypoints
            if self.buttons[8]:
                self.add_waypoints([[42.293394, -71.263916],[42.293357, -71.263997]])
            '''
            if self.buttons[8]:
                self.save_mission_to_file()

            #enter guided mode/toggle guided waypoints
            if self.buttons[1]:
                self.guided_function()

            if self.buttons[4]:
                self.begin_mission()

            if self.buttons[5]:
                self.end_mission()

            if self.buttons[6]:
                self.set_guided_to_map()

            if self.buttons[7]:
                self.launch_map()

            time.sleep(0.01)


        #joystick control for manual
        if self.drones[0].armed and self.mode[0] == 'manual':
            rc_msg = OverrideRCIn()
            
            x = 1500 - self.axes[0]*300
            y = 1500 - self.axes[1]*300
            z = 1000 + (self.axes[3]+1)*500
            yaw = 1500 - self.axes[2]*200
            
            (rc_msg.channels[0], rc_msg.channels[1], rc_msg.channels[2], rc_msg.channels[3]) = (x, y, z, yaw)
            self.pub_rc[0].publish(rc_msg)

        if self.BOUNDEDFLIGHT and self.drones[0].armed and self.mode[0] != 'RTL':
            pos = [self.drones[0].latitude, self.drones[0].longitude]
            if pos != [0, 0]:
                if not InPoly.isInPoly(self.bounds, pos):
                    self.RTL()

        def kill_handler(signum, frame):
            rc_msg = OverrideRCIn()
            killmessage = 65535
            [killmessage for msg in rc_msg.channels]
            self.pub_rc[0].publish(rc_msg)
            print 'handing control back'
            quit()
        signal.signal(signal.SIGINT, kill_handler)
    def fly(self):
        if self.buttons:
            # Arm drone(s)
            if self.buttons[2]:
                for i in xrange(self.num_drones):
                    self.srv_arm[i](True)
                print "Arming drones"

            # Disarm drone(s)
            if self.buttons[3]:
                for i in xrange(self.num_drones):
                    self.srv_arm[i](False)
                print "Disarming drones"

            # Push waypoints
            if self.buttons[10]:
                waypoints = mission_parser.get_mission(0)
                success = True
                for i in xrange(self.num_drones):
                    res = self.srv_wp_push[i](waypoints)
                    success &= res.success
                
                if success:
                    print "Pushed waypoints"
                else:
                    print "Failed to push waypoints"

            # Clear waypoints
            if self.buttons[11]:
                success = True
                for i in xrange(self.num_drones):
                    res = self.srv_wp_clear[i]()
                    success &= res.success

                if success:
                    print "Cleared waypoints"
                else:
                    print "Failed to clear waypoints"

            # Begin mission
            if self.buttons[4]:
                self.mode[0] = 'auto'
                self.srv_mode[0](0, '3')
                rc_msg = OverrideRCIn()
                (rc_msg.channels[0], rc_msg.channels[1], rc_msg.channels[2], rc_msg.channels[3], rc_msg.channels[4]) = (1500, 1500, 1250, 1500, 1400) 
                self.pub_rc[0].publish(rc_msg)
                print "Beginning mission"

            # End mission
            if self.buttons[5]:
                self.mode[0] = 'manual'
                print "Ending mission"

        if self.drones[0].armed and self.mode[0] == 'manual':
            rc_msg = OverrideRCIn()
            
            x = 1500 - self.axes[0]*300
            y = 1500 - self.axes[1]*300
            z = 1000 + (self.axes[3]+1)*500
            yaw = 1500 - self.axes[2]*300
    
            (rc_msg.channels[0], rc_msg.channels[1], rc_msg.channels[2], rc_msg.channels[3], rc_msg.channels[4]) = (x, y, z, yaw, 1500)
            self.srv_mode[0](0, '5')

            self.pub_rc[0].publish(rc_msg)
    def fly(self):
        if self.buttons:
            #RTL
            if self.buttons[0]:
                self.RTL()

            # Arm drone(s)
            if self.buttons[2]:
                self.arm()

            # Disarm drone(s)
            if self.buttons[3]:
                self.disarm()

            #set mission
            if self.buttons[10]:
                self.waypoints = mission_parser.get_mission(0)
                #self.continue_mission() #keep drone from landing at end of mission
                success = self.push_waypoints() #push to drone

            if self.buttons[11]:
                self.clear_waypoints()

            '''
            #set new waypoints - in flight, ignore existing waypoints and start new mission
            if self.buttons[9]:
                self.waypoints = mission_parser.get_mission(1)
                #self.continue_mission()
                self.push_waypoints()
                self.restart_mission()
            '''
            #save map points to mission
            if self.buttons[9]:
                self.set_mission_to_map()

            '''
            #add waypoints
            if self.buttons[8]:
                self.add_waypoints([[42.293394, -71.263916],[42.293357, -71.263997]])
            '''
            if self.buttons[8]:
                self.save_mission_to_file()

            #enter guided mode/toggle guided waypoints
            if self.buttons[1]:
                self.guided_function()

            if self.buttons[4]:
                self.begin_mission()

            if self.buttons[5]:
                self.end_mission()

            if self.buttons[6]:
                self.set_guided_to_map()

            if self.buttons[7]:
                self.launch_map()

            time.sleep(0.01)


        #joystick control for manual
        if self.drones[0].armed and self.mode[0] == 'manual':
            rc_msg = OverrideRCIn()
            
            x = 1500 - self.axes[0]*300
            y = 1500 - self.axes[1]*300
            z = 1000 + (self.axes[3]+1)*500
            yaw = 1500 - self.axes[2]*200
            
            (rc_msg.channels[0], rc_msg.channels[1], rc_msg.channels[2], rc_msg.channels[3]) = (x, y, z, yaw)
            print z

            self.pub_rc[0].publish(rc_msg)