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.
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.
| Value | Example from INC-0135 |
|---|---|
| Voltage before the drop | 49.8 V |
| Voltage after the drop | 47.2 V |
| Drop and time | 2.6 V in 1.8 s |
| Load | 82% track current |
| Threshold | More 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.
Related#
- 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.