While flying, the Parrot Bebop Quadcopter (and the Bebop 2 Quadcopter) stores all flight information in a log file. This is a so called pud file and has a json structure.

This pud file includes the detailed flight information which is also used by Parrot to store the flights in their cloud (formerly known as ARDrone Academy, Drone Academy) and to perfrom the flight analysis, such as generating battery plot, speed plot and altitude plot.

The python library presented in this article allows to extract important flight information from the pud file. The data from the pud file (flight log) is processed and can be returned for further flight analysis.

 Parrot Bebop2



This library takes the pud file as an input and is able to perform the following operations:


Eclipse Python Source outline

#Import the library
import DroneDataConversion # alt.:from DroneDataConversion import DroneDataConversion
#Get instance from it
flightManager = DroneDataConversion.BebopFlightDataManager(‘path/to/pud-file’)

Method Description

calculate_distance_traveled_vincenty() —> calculates the vincenty distance the drone covered for this flight, please note that the altitude is not yet part of the calculation; it returns the distance in meter
calculate_distance_traveled_gc() —> calculates the great circle distance the drone covered for this flight, please note that the altitude is not yet part of the calculation; it returns the distance in meter, (for more information about great circle and vincenty distance:,
Display_diagnostic_information_debug() —> prints diagnostic flight information and returns them as s list
Display_diagnostic_information_raw()—> same as above but without the data field description
determine_avg_speed() —> calculates the average speed for this flight and returns it (in m/s)
determine_max_altitude() —> determines the maximum altitude and returns it (in m)
get_nearest_city() —> does a request to an OSM database and returns the nearest city for this flight
get_battery_percentage() —> returns the battery usage for this flight (in %)
export_as_csv(‘/path/to/destination.csv’) —> converts the whole pud file to a csv file
export_as_gpx(‘/path/to/destination.gpx’, ‘myFlight’) —> converts the flight to a gpx track, the second parameter is optional and the track’s name
export_as_kml(‘/path/to/destination.kml’) —> converts the flight to kml, this is not implemented yet
takeoff_location_as_csv(‘/path/to/destination.csv’, waypoint_name=None) —> exports the takeoff location as csv containting the waypoint
takeoff_location_as_gpx(‘/path/to/destination.gpx’, waypoint_name=None) —> exports the takeoff location as gpx containting the waypoint
pass_flight_data() —> returns every data field as an array

# Passes flight data as arrays for further processing; Passing: 
#seconds_airborne, latitude, longitude, altitude, speed, battery
sec, lat, lon, alt, spe, bat = flightManager.passFlightData()

Closing Remarks

The library can be used with pud files of the Bebop 2 (tested), as the Bebop 1 has the same firmware it seems compatible. I don’t know about the Disco Drone but hopefully Parrot will stick to the same data format.

This library requires/uses packages from the following libraries:

This library is licensed under the Apache License Version 2, and is available via PyPI:

The source code is hosted on Bitbucket: