Skip to content
Docs
foxborne.comRequest a pilot

Battery sag

Flags a pack whose voltage drops faster than the configured rate while the vehicle is under load. It ships off by default at version 0.9, and it observes a voltage drop, not a failing cell.

Rule referenceMarkdown
On this page7
battery_sagv0.9Off by default
Detects
Pack voltage drops faster than the configured rate under load.
Threshold
More than 2.0 V in 2 s above 70% track current
Reads
Flight log
Report wording
Observed: battery voltage sagged

What it reads#

The rule reads the battery lane of the flight log. PX4 logs the pack in the battery_status topic, where voltage_v is the battery voltage in volts and current_a the current in amperes. The rule compares the voltage over a short window with how hard the vehicle is working at that moment.

It is the one rule that ships off. The Rules page lists it as version 0.9 with Applies to set to T4 vehicles, and its Results, 30 days reads 0 because nothing runs it until an admin turns it on.

When it fires#

A finding is produced when pack voltage falls by more than 2.0 V within 2 s while the load is above 70% track current. Both parts must hold: a slow discharge over a long drive stays below the rate, and a sharp drop at idle stays below the load gate.

The event sits on the flight log's clock at the first sample of the drop, with its bound of ±40 ms in the example dataset. Its title gives the drop, for example battery_status: 49.8 V to 47.2 V in 1.8 s.

ValueExample from INC-0135
Voltage before the drop49.8 V
Voltage after the drop47.2 V
Drop and time2.6 V in 1.8 s
Load82% track current
ThresholdMore than 2.0 V in 2 s above 70% track current

Wording and evidence level#

Every finding reads Observed: battery voltage sagged. The flight log records the voltage directly, so the level is observed. Why the voltage fell is a question the rule leaves open.

What the finding does not mean#

  • The pack is not necessarily failing. Every pack sags under load. The rule only says this sag was faster than the configured rate at a high load.
  • It does not say which cell. The rule reads the pack voltage. A weak cell, a warm pack and a high load can all produce the same drop.
  • It is not a PX4 battery failsafe. PX4 raises its own battery warnings in battery_status.warning, from low to critical and emergency. Those are separate events on the timeline. In INC-0135 a low battery warning followed the sag 0.822 s later.
  • It does not mean the vehicle lost power. A sag that recovers when the load eases leaves the vehicle driving.

Threshold, scope and version#

The threshold reads More than 2.0 V in 2 s above 70% track current, applied to T4 vehicles in the example configuration. Because the rule is below version 1.0, check its threshold against your own packs before you turn it on: a 2.0 V drop means different things on different pack voltages.

Turn it on with the Enabled switch under Rules. The console confirms Battery sag enabled. Applies to the next import., and the audit log records Enabled rule with the detail Version 0.9. A threshold change under Edit saves as battery_sag 0.10, and findings already produced keep version 0.9 and its threshold. See Thresholds, scopes and overrides.

Example finding#

In INC-0135, UGV-03 climbed the north-east hill on run R-0915, a grade climb on pack 4. At 15:17:30.208 UTC on 18 Sep, pack voltage fell from 49.8 V to 47.2 V in 1.8 s at 82% track current, and the rule flagged it as Voltage sag. A low battery warning followed at 15:17:31.030.

The engineers' conclusion sits in the report, not in the finding: the pack was retired after an internal resistance check. The report is approved and the incident is closed.

  • How rules work explains default states and versions.
  • PX4 ULog lists the topics the flight log carries, including battery_status.
  • Ground robots covers the T4 platform this rule is scoped to.