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)
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: " +