Building a Battery Life Estimator for UAVs

A reflective look at building a UAV battery life estimator, focusing on simplicity, data accumulation, and explainable models for real-world flight operations.

Building a Battery Life Estimator for UAVs
Photo by Hacı Elmas / Unsplash

Most work on UAV systems begins with what the hardware can do. Flight time is often treated as a fixed specification rather than something that can be reasoned about or modeled in context.

This project started from a different place. Instead of asking how to extend battery life, I focused on how to make it legible.

Flight time is not a single value. It is a function of payload, speed, wind, and operating conditions. It changes continuously, yet most operators rely on static expectations or rough intuition. That gap between reality and expectation is where small systems can create disproportionate value.

The goal was not to build a perfect estimator. It was to build a system that reflects how flight time actually behaves, while remaining simple enough to understand and adapt.

The estimator described here is implemented as an open source repository on GitHub, including the calibration model and flight log structure.

Choosing Simplicity as a Design Principle

The estimator is built on a deliberately simple model. Instead of attempting to simulate aerodynamics or battery chemistry in detail, it approximates total flight time using a small number of variables that are consistently observable.

The core idea is to model the inverse of flight time as a linear function of payload and airspeed. This shifts the problem into a form that is easier to fit with limited data while still capturing meaningful relationships.

This decision reflects a broader pattern across projects. Simplicity is not a constraint imposed by lack of sophistication. It is often the most reliable way to make a system usable and explainable.

In this case, the model can be calibrated with a small number of past flights. It does not require specialized instrumentation or large datasets. It produces outputs that are easy to reason about.

That tradeoff is intentional. The system sacrifices completeness in order to gain clarity.

Treating Data as Something that Accumulates

The estimator relies on flight logs rather than predefined assumptions. Each flight becomes a data point that contributes to the model.

This creates a different relationship with data. Instead of collecting data for analysis later, the system treats data as something that incrementally improves operational understanding.

The threshold for usefulness is low. Even five to ten flights can produce a model that is directionally accurate. Over time, as more data is added, the model becomes more stable.

This pattern appears across other projects as well. Small datasets, when structured correctly, can be more useful than large datasets that are difficult to interpret or maintain.

The emphasis is not on volume. It is on alignment between the data and the decision being supported.

Bridging Total Capacity and Real-Time Estimation

One of the more subtle challenges is connecting total flight time with remaining flight time.

Total flight time is relatively straightforward to estimate from historical data. Remaining time is more dynamic. It depends on the current state of the battery, which is typically inferred from voltage.

The estimator links these two concepts through a simple mapping from voltage to state of charge. This is not an exact measurement. It is an approximation based on typical discharge curves.

There is uncertainty in this mapping. Voltage can fluctuate under load, and different batteries behave differently. The system acknowledges this rather than trying to eliminate it.

The result is a layered estimate. Total time provides a baseline expectation. Voltage provides a real-time adjustment. Together, they form a working approximation of what remains.

This approach reflects a broader way of thinking about systems. Instead of seeking a single source of truth, it combines multiple imperfect signals into something that is useful in practice.

Explainability as a Requirement, Not a Feature

Many estimation systems become difficult to trust because they are difficult to understand. As models become more complex, their outputs become less interpretable.

This project takes the opposite approach. The model is intentionally transparent. Each variable has a clear role. Changes in input produce predictable changes in output.

This makes it easier to validate the system against real flights. It also makes it easier to extend. Additional variables can be introduced without fundamentally changing the structure.

Explainability is not just about user trust. It is about maintainability over time. Systems that can be understood are easier to adapt as conditions change.

This becomes increasingly important in environments like UAV operations, where conditions are rarely static and assumptions degrade quickly.

Positioning the Estimator as a System, Not a Tool

It is easy to think of the estimator as a standalone utility. In practice, it fits into a broader system.

Flight logs, model calibration, and estimation are all connected. The value of the estimator increases when it is used consistently and integrated into regular workflows.

This aligns with how I approach most projects. Individual components are less important than how they connect. The estimator is one part of a larger effort to make UAV operations more structured and observable.

Over time, this could expand to include anomaly detection, performance baselines, or comparisons across different configurations. The current model is intentionally minimal, but it establishes a foundation that can support more complex analysis.

The focus remains on building systems that can evolve without becoming opaque.

Accepting Approximation as Part of the System

There is a tendency to treat estimation problems as something that can be solved with enough data or complexity. In practice, many systems operate under conditions where uncertainty cannot be removed.

Wind varies. Payloads change. Batteries age. Sensors introduce noise.

The estimator does not attempt to eliminate these factors. It treats them as part of the environment in which the system operates.

This leads to a different expectation. The goal is not precision. It is reliability within a known range of uncertainty.

By making the assumptions explicit and the model transparent, the system becomes easier to calibrate against reality. It can be adjusted as conditions change without requiring a complete redesign.

Connecting this Project to a Broader Pattern

This estimator is consistent with a pattern that appears across my work. Build small, focused systems that make a specific aspect of reality easier to understand.

Avoid unnecessary complexity. Prefer models that can be explained and validated. Treat data as something that accumulates over time rather than something that must be complete from the start.

These choices are not unique to UAVs. They apply to any system where conditions are variable and decisions must be made with incomplete information.

The estimator is one example of how this approach can be applied in practice.

Concluding Perspective

Building a battery life estimator is less about predicting flight time and more about making operational uncertainty visible.

The system does not remove uncertainty. It structures it in a way that can be observed, reasoned about, and gradually improved.

That distinction matters. Systems that acknowledge their limits tend to remain useful longer than those that attempt to eliminate them.