The process of maximizing the straight line range capability of a battery-powered multirotor boils down to determining the optimal combination of flight speed and battery configuration. This document describes an experimental procedure to determine these values by performing a few test flights.
There's a bit of theory followed by examples of implementing the process with both ArduPilot and PX4 software stacks.
For each battery configuration, there is a "best-range" flight speed. This speed can be identified by flying the aircraft at a range of speeds and plotting data from autopilot's log file. The plot we need is range as a function of speed. (Range is calculated from power consumption, details in the examples below).
In this example, the best-range speed is 19 m/s and the range is 51 km.
By repeating this process for each battery configuration, and plotting the data for all these flights together, we can identify the best battery configuration.
In this example, battery pack 2 gives the best range of 54 km when the aircraft is flown at 20 m/s. Notice that a change of battery configuration affect both best-range speed and range. Therefore, each battery configuration must be tested across a range of speeds.
Example: DJI F450 with PX4
This example shows a typical first flight that might be used to quickly assess a new aircraft (DJI Flamewheel 450 with Pixhawk2.1).
A mission file makes the flight path repeatable between tests. This example uses a series of straight lines with speed changes after every down-and-back lap.
Example mission plan file: F450PX4-V1.plan
Log File Analysis
Example log file: 17_07_59.ulg
Our goal is a plot of range vs speed.
Range is calculated from power consumption.
Range = Speed * Time of Flight
Time of Flight is calculated from the battery capacity and the rate at which it's consumed.
Range = Speed * Battery Capacity / Power Consumption
This calculation is shown in the example spreadsheet liked below. Note that this example uses a simplified version that treats power consumption in terms of current (amps) rather than power (watts).
Speed measurements are available in log files, but aren't synchronized with power measurements. A little approximation is needed to get the matched pairs of range and speed needed to make the desired plot.
1.) Use PyUlog's ulog2csv function to convert the ULOG into a collection of CSV files.
2.) Bring the following data fields into a single spreadsheet
timestamp, vel_m_s, voltage_filtered_v, current_filtered_a
Power measurements are recorded 2 or 3 times more frequently than speed. I averaged the power measurements between speed measurements and assigned the result to the time of the next speed value.
Excel sheet: 17_07_59_range_analysis.xlsx
This flight included cruise segments ranging from 10 to 20 m/s in increments of 2. Most of these speeds show a cluster of data points. Notice that the aircraft had a hard time reaching the highest speeds. The data point clusters are spread vertically because one leg of the flight is against the wind and the other is with the wind.
Notice that range falls off above 14 m/s and the aircraft has trouble reaching 20 m/s.