• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

wboayue / stable-flight / 38658498873
92%

Build:
DEFAULT BRANCH: main
Ran 15 Oct 2026 12:15AM UTC
Jobs 1
Files 138
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

15 Oct 2026 12:10AM UTC coverage: 91.118% (-0.03%) from 91.151%
38658498873

push

github

web-flow
Stabilizer clears integrals on an idle setpoint, not zero thrust (#326) (#396)

`CopterGuidance` marks a setpoint `idle` while a piloted throttle
(attitude, rate, absolute attitude, absolute rate) is at or below
`IDLE_THROTTLE` or NaN, and `CopterStabilizer` clears its integrals on
that flag instead of on zero thrust. This follows ArduPilot, which
spools to ground idle on `throttle_zero` in Stabilize
(`ArduCopter/mode_stabilize.cpp:19-40`).

Fixes:
- **In flight:** a zero-thrust tick from the altitude loop (shooting up
past a waypoint) keeps the yaw trim.
- **On the ground:** a stick resting at 0.03 now clears the integrals.
- **Tailsitter:** the back handoff's step goes away (issue comment).

Closes #326

## Changes
- **Core (Breaking):**
- `AttitudeSetpoint`, `RateSetpoint` and `BodyRateSetpoint` gain `idle:
bool`.
  - New `Setpoint::idle()`; it is `false` for `Plane`.
- `with_thrust` keeps the flag, so `ThrustHandoff` and the tailsitter
throttle floor carry it through.
  - The disarmed telemetry setpoint is marked idle.
- **Guidance:** `hold_piloted` returns `(thrust, idle)`, so the idle
rule lives in one place. Waypoint and land setpoints are never idle.
Auto-mode ground idle needs a land detector and is filed as #395
(`TODO(#395)`).
- **Link:** `PROTOCOL_VERSION` goes from 4 to 5, because the `Record`
shape changed.
- **Docs:** `CopterStabilizer` and `CopterGuidance` module docs,
`IDLE_THROTTLE`, `architecture.md`, and both CHANGELOGs.

## Tests
-
`stabilizers::copter::tests::idle_setpoint_keeps_the_integrals_from_winding_up`:
a table over Attitude, Rate and BodyRate × thrust × idle. Thrust 0 or
NaN that isn't idle builds the I terms; an idle setpoint clears them at
any thrust.
-
`stabilizers::copter::tests::zero_thrust_in_flight_keeps_the_yaw_trim`:
the issue's repro. The `shooting_up` waypoint setpoint (thrust 0, not
idle) keeps a built yaw-trim I term.
- `guidance::copter::tests::idle_throttle_marks_the_setpoint_idle`: each
input × throttle {0... (continued)

51 of 52 new or added lines in 5 files covered. (98.08%)

27 existing lines in 6 files now uncovered.

6473 of 7104 relevant lines covered (91.12%)

7.06 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
84.44
-0.95% crates/stable-flight/src/flight_loop.rs

Coverage Regressions

Lines Coverage ∆ File
11
90.08
-0.43% crates/stable-flight/src/guidance/vtol/tailsitter.rs
8
82.83
1.11% crates/stable-flight/src/lib.rs
3
91.51
-2.83% crates/stable-flight-sim/tests/common/plane.rs
3
95.7
-3.23% crates/stable-flight-sim/tests/failsafe.rs
1
99.36
0.2% crates/stable-flight-sim/tests/tailsitter_transition.rs
1
98.96
0.01% crates/stable-flight/src/stabilizers/plane.rs
Jobs
ID Job ID Ran Files Coverage
1 38658498873.1 15 Oct 2026 12:15AM UTC 138
91.12
GitHub Action Run
Source Files on build 38658498873
  • Tree
  • List 138
  • Changed 17
  • Source Changed 13
  • Coverage Changed 16
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #38658498873
  • d58f1aa3 on github
  • Prev Build on main (#38644215217)
  • Next Build on main (#38666987320)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc