def GPS_Command(drone): "Create a GUI to command the GPS" global gui, last_coord, a a = Log("Drone_GPS.kml", "kml") pos1 = GPS_Coord() pos2 = GPS_Coord() pos3 = GPS_Coord(48.763947, 2.288652) # Stade drone.change_callback( save_gps_coord) # Change the callback so we can save the GPS data gui = ARDroneGUI.ControlWindow(default_action=drone.hover) # Commands gui.add_action("<Up>", drone.forward) gui.add_action("<Down>", drone.backward) gui.add_action("<Left>", drone.left) gui.add_action("<Right>", drone.right) gui.add_action("<z>", drone.up) gui.add_action("<s>", drone.down) gui.add_action("<a>", drone.takeoff) gui.add_action("<space>", drone.land) gui.add_action("<Return>", drone.emergency) gui.add_action("<t>", drone.reset) gui.add_action("<y>", drone.calibrate) ## GPS gui.add_action( "<f>", lambda arg=last_coord: pos1.setPoint(last_coord[1], last_coord[0])) gui.add_action( "<g>", lambda arg=last_coord: pos2.setPoint(last_coord[1], last_coord[0])) gui.add_action( "<h>", lambda arg=last_coord: pos3.setPoint(last_coord[1], last_coord[0])) gui.add_action( "<v>", lambda arg=pos1: ARDroneConfig.goto_gps_point(drone, arg.getPoint()[0], arg.getPoint()[1])) gui.add_action( "<b>", lambda arg=pos2: ARDroneConfig.goto_gps_point(drone, arg.getPoint()[0], arg.getPoint()[1])) gui.add_action( "<n>", lambda arg=pos3: ARDroneConfig.goto_gps_point(drone, arg.getPoint()[0], arg.getPoint()[1])) # Infos gui.add_printable_data("Battery", ("navdata_demo", "battery_percentage")) gui.add_printable_data("Latitude", ("gps_info", "latitude")) gui.add_printable_data("Longitude", ("gps_info", "longitude")) gui.add_printable_data("Altitude", ("gps_info", "elevation")) gui.add_printable_data("HDOP", ("gps_info", "hdop")) gui.add_printable_data("State", ("gps_info", "data_available")) print "Press o to start reception...\nF,G,H - Save GPS point\nV,B,N (key must stay pressed) - GOTO GPS Point" # We don't start change the callback because we would lost gps info outside the gui drone.start_navdata() gui.start() a.close()
def menu_list(drone): "List of function you can perform" print "Choose your command:" print "0 - Emergency" print "1 - Hover" print "2 - Take Off" print "3 - Land" print "4 - Forward" print "5 - Backward" print "6 - Left" print "7 - Right" print "8 - Calibrate sensors" print "a - Reset" print "9 - Quit" result = "" while result != "9": result = raw_input(">") if result == "0": drone.emergency() if result == "1": drone.hover() if result == "2": drone.takeoff() if result == "3": drone.land() if result == "4": drone.forward() if result == "5": drone.backward() if result == "6": drone.left() if result == "7": drone.right() if result == "8": drone.calibrate() if result == "a": drone.reset() if result == "f": ARDroneConfig.activate_AP_mode(drone)
def GPS_Command(drone): "Create a GUI to command the GPS" global gui, last_coord, a a = Log("Drone_GPS.kml", "kml") pos1 = GPS_Coord() pos2 = GPS_Coord() pos3 = GPS_Coord(48.763947, 2.288652) # Stade drone.change_callback(save_gps_coord) # Change the callback so we can save the GPS data gui = ARDroneGUI.ControlWindow(default_action=drone.hover) # Commands gui.add_action("<Up>", drone.forward) gui.add_action("<Down>", drone.backward) gui.add_action("<Left>", drone.left) gui.add_action("<Right>", drone.right) gui.add_action("<z>", drone.up) gui.add_action("<s>", drone.down) gui.add_action("<a>", drone.takeoff) gui.add_action("<space>", drone.land) gui.add_action("<Return>", drone.emergency) gui.add_action("<t>", drone.reset) gui.add_action("<y>", drone.calibrate) ## GPS gui.add_action("<f>", lambda arg=last_coord: pos1.setPoint(last_coord[1], last_coord[0])) gui.add_action("<g>", lambda arg=last_coord: pos2.setPoint(last_coord[1], last_coord[0])) gui.add_action("<h>", lambda arg=last_coord: pos3.setPoint(last_coord[1], last_coord[0])) gui.add_action("<v>", lambda arg=pos1: ARDroneConfig.goto_gps_point(drone, arg.getPoint()[0], arg.getPoint()[1])) gui.add_action("<b>", lambda arg=pos2: ARDroneConfig.goto_gps_point(drone, arg.getPoint()[0], arg.getPoint()[1])) gui.add_action("<n>", lambda arg=pos3: ARDroneConfig.goto_gps_point(drone, arg.getPoint()[0], arg.getPoint()[1])) # Infos gui.add_printable_data("Battery", ("navdata_demo", "battery_percentage")) gui.add_printable_data("Latitude", ("gps_info", "latitude")) gui.add_printable_data("Longitude", ("gps_info", "longitude")) gui.add_printable_data("Altitude", ("gps_info", "elevation")) gui.add_printable_data("HDOP", ("gps_info", "hdop")) gui.add_printable_data("State", ("gps_info", "data_available")) print "Press o to start reception...\nF,G,H - Save GPS point\nV,B,N (key must stay pressed) - GOTO GPS Point" # We don't start change the callback because we would lost gps info outside the gui drone.start_navdata() gui.start() a.close()
def GPS_Route(drone): "Do a route in GPS" route = ( (48.764304, 2.289237), (48.764374, 2.289180), (48.764448, 2.289080), (48.764502, 2.288952), (48.764529, 2.288794), (48.764532, 2.288639), (48.764521, 2.288507), (48.764489, 2.288392), (48.764435, 2.288288), (48.764368, 2.288213), (48.764300, 2.288173), (48.764325, 2.288438), (48.764360, 2.288691), (48.764324, 2.288999), ) # That's a big one : petit parcours decoupé en tranche de 10m environ ARDroneConfig.outdoor(drone) ARDroneConfig.nervosity_level(drone, 100) wait = raw_input("Press enter to take off...") drone.takeoff() delay = 15 # Variable à régler pour correspondre au temps de parcours entre chaque point for i in range(len(route)): # wait = raw_input("Press enter to go to point " + str(i+1) + "...") while delay > 0: time.sleep(1) delay = delay - 1 print "Going to point " + str(i + 1) + " in " + str(delay) + " secs !" ARDroneConfig.goto_gps_point(drone, route[i][0], route[i][1]) wait = raw_input("Press enter to land...") drone.land() print "Done !"
def command_GUI(drone): "Create a GUI to command the drone" global gui ARDroneConfig.outdoor(drone) ARDroneConfig.nervosity_level(drone, 100) gui = ARDroneGUI.ControlWindow(default_action=drone.hover) # Add command gui.add_action("<Up>", drone.forward) gui.add_action("<Down>", drone.backward) gui.add_action("<Left>", drone.left) gui.add_action("<Right>", drone.right) gui.add_action("<z>", drone.up) gui.add_action("<s>", drone.down) gui.add_action("<q>", drone.rotate_left) gui.add_action("<d>", drone.rotate_right) gui.add_action("<a>", drone.takeoff) gui.add_action("<space>", drone.land) gui.add_action("<Return>", drone.emergency) gui.add_action("<t>", drone.reset) gui.add_action("<y>", drone.calibrate) gui.add_action("<o>", lambda arg=drone: ARDroneConfig.activate_tag(drone)) gui.add_action("<e>", lambda arg=drone: ARDroneConfig.flip(drone)) print "-> Press o to start tag detection..." # Add info gui.add_printable_data("Battery", ("navdata_demo", "battery_percentage")) gui.add_printable_data("Number of tags", ("vision_detect", "nb_detected")) gui.add_printable_data("X position", ("vision_detect", "xc")) gui.add_printable_data("Y position", ("vision_detect", "yc")) gui.add_printable_data("Width", ("vision_detect", "width")) gui.add_printable_data("Height", ("vision_detect", "height")) gui.add_printable_data("Distance", ("vision_detect", "distance")) drone.change_callback(gui.callback) # Enable the GUI to receive data from the drone drone.start_navdata() gui.start()
def GPS_Route(drone): "Do a route in GPS" route = (48.764304, 2.289237), (48.764374, 2.289180), ( 48.764448, 2.289080 ), (48.764502, 2.288952), (48.764529, 2.288794), (48.764532, 2.288639), ( 48.764521, 2.288507), (48.764489, 2.288392), (48.764435, 2.288288), ( 48.764368, 2.288213 ), (48.764300, 2.288173), (48.764325, 2.288438), ( 48.764360, 2.288691 ), ( 48.764324, 2.288999 ) #That's a big one : petit parcours decoupé en tranche de 10m environ ARDroneConfig.outdoor(drone) ARDroneConfig.nervosity_level(drone, 100) wait = raw_input("Press enter to take off...") drone.takeoff() delay = 15 #Variable à régler pour correspondre au temps de parcours entre chaque point for i in range(len(route)): #wait = raw_input("Press enter to go to point " + str(i+1) + "...") while (delay > 0): time.sleep(1) delay = delay - 1 print "Going to point " + str(i + 1) + " in " + str(delay) + " secs !" ARDroneConfig.goto_gps_point(drone, route[i][0], route[i][1]) wait = raw_input("Press enter to land...") drone.land() print "Done !"
def command_GUI(drone): "Create a GUI to command the drone" global gui ARDroneConfig.outdoor(drone) ARDroneConfig.nervosity_level(drone, 100) gui = ARDroneGUI.ControlWindow(default_action=drone.hover) # Add command gui.add_action("<Up>", drone.forward) gui.add_action("<Down>", drone.backward) gui.add_action("<Left>", drone.left) gui.add_action("<Right>", drone.right) gui.add_action("<z>", drone.up) gui.add_action("<s>", drone.down) gui.add_action("<q>", drone.rotate_left) gui.add_action("<d>", drone.rotate_right) gui.add_action("<a>", drone.takeoff) gui.add_action("<space>", drone.land) gui.add_action("<Return>", drone.emergency) gui.add_action("<t>", drone.reset) gui.add_action("<y>", drone.calibrate) gui.add_action("<o>", lambda arg=drone: ARDroneConfig.activate_tag(drone)) gui.add_action("<e>", lambda arg=drone: ARDroneConfig.flip(drone)) print "-> Press o to start tag detection..." # Add info gui.add_printable_data("Battery", ("navdata_demo", "battery_percentage")) gui.add_printable_data("Number of tags", ("vision_detect", "nb_detected")) gui.add_printable_data("X position", ("vision_detect", "xc")) gui.add_printable_data("Y position", ("vision_detect", "yc")) gui.add_printable_data("Width", ("vision_detect", "width")) gui.add_printable_data("Height", ("vision_detect", "height")) gui.add_printable_data("Distance", ("vision_detect", "distance")) drone.change_callback( gui.callback) # Enable the GUI to receive data from the drone drone.start_navdata() gui.start()