Exemplo n.º 1
0
class ARDrone(Drone):
    def __init__(self):
        super().__init__()

        self.bebop = Bebop()

        print("connecting to bebop drone")
        self.connection.emit("progress")
        self.success = self.bebop.connect(5)
        if self.success:
            self.connection.emit("on")
            self.bebop.set_max_altitude(20)
            self.bebop.set_max_distance(20)
            self.bebop.set_max_rotation_speed(180)
            self.bebop.set_max_vertical_speed(2)
            self.bebop.enable_geofence(1)
            self.bebop.set_hull_protection(1)

            # todo: battery signal to emit (look in sensors)
            #TODO test this piece of code
            self.bebop.set_user_sensor_callback(print,
                                                self.bebop.sensors.battery)
        else:
            print("refresh....")
            self.connection.emit("off")

    def take_off(self):
        self.bebop.safe_takeoff(5)

    def land(self):
        self.bebop.safe_land(5)

    def stop(self):
        self.bebop.disconnect()

    def fly_direct(self, roll, pitch, yaw, vertical_movement):
        my_roll = self.bebop._ensure_fly_command_in_range(roll)
        my_pitch = self.bebop_ensure_fly_command_in_range(pitch)
        my_yaw = self.bebop_ensure_fly_command_in_range(yaw)
        my_vertical = self.bebop_ensure_fly_command_in_range(vertical_movement)
        command_tuple = self.bebop.command_parser.get_command_tuple(
            "ardrone3", "Piloting", "PCMD")
        self.bebop.drone_connection.send_single_pcmd_command(
            command_tuple, my_roll, my_pitch, my_yaw, my_vertical)

    def process_motion(self, _up, _rotate, _front, _right):
        velocity_up = _up * self.max_vert_speed
        velocity_yaw = _rotate * self.max_rotation_speed
        velocity_pitch = _front * self.max_horiz_speed
        velocity_roll = _right * self.max_horiz_speed
        #print("PRE", velocity_roll, velocity_pitch, velocity_up, velocity_yaw)
        self.fly_direct(velocity_roll, velocity_pitch, velocity_yaw,
                        velocity_up)
Exemplo n.º 2
0
    bebop.ask_for_state_update()

    print("Prepare for take-off...")

    # Set safe indoor/outdoor parameters
    print("Set indoor parameters...")
    max_tilt = 15
    vertical_speed = 2  #1.5
    max_altitude = 1.5
    max_rotation_speed = 150
    tilt_speed = 200
    bebop.set_max_tilt(max_tilt)
    bebop.set_max_vertical_speed(vertical_speed)
    bebop.set_max_altitude(max_altitude)
    bebop.set_max_rotation_speed(max_rotation_speed)
    bebop.set_max_tilt_rotation_speed(tilt_speed)
    color_print("Indoor parameters set: OK", "SUCCESS")

    # Get initial sensor data_type
    print("--------- SENSOR DATA ----------")
    print("Battery: ", bebop.sensors.battery, "%")
    print("Flying state:", bebop.sensors.flying_state)
    print("Altitude: ", max_altitude, " m")
    print("Pitch/roll rotation speed (degrees): ", tilt_speed)
    print("Tilt (degrees): ", max_tilt)
    print("Vertical speed: ", vertical_speed, " m/s")
    print("Yaw rotation speed (degrees): ", max_rotation_speed)
    print("--------------------------------")

    # Take-off the ground
bebop = Bebop()

print("connecting")
success = bebop.connect(10)
print(success)

print("sleeping")
bebop.smart_sleep(1)

bebop.ask_for_state_update()

bebop.set_max_altitude(5)
bebop.set_max_distance(10)
bebop.enable_geofence(1)
bebop.set_max_rotation_speed(200)

bebop.safe_takeoff(10)
bebop.smart_sleep(2)

print("HomeChanged_longitude: " +
      str(bebop.sensors.sensors_dict["HomeChanged_longitude"]))
print("HomeChanged_latitude: " +
      str(bebop.sensors.sensors_dict["HomeChanged_latitude"]))
print("HomeChanged_altitude: " +
      str(bebop.sensors.sensors_dict["HomeChanged_altitude"]) + "\n\n")

print("First State Update: ")

Drone_1a_Lat = bebop.sensors.sensors_dict["GpsLocationChanged_latitude"]
print("GpsLocationChanged_latitude:  " +