Esempio n. 1
0
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()
Esempio n. 2
0
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)
Esempio n. 3
0
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()
Esempio n. 4
0
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 !"
Esempio n. 5
0
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()
Esempio n. 6
0
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 !"
Esempio n. 7
0
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()
Esempio n. 8
0
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)