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

wboayue / stable-flight / 38573515281
92%

Build:
DEFAULT BRANCH: main
Ran 14 Oct 2026 01:46PM UTC
Jobs 1
Files 131
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

14 Oct 2026 01:38PM UTC coverage: 90.501% (+0.6%) from 89.934%
38573515281

push

github

web-flow
Sim: plane steps, coordinated turn, stall (#348) (#385)

Plane step, turn, and stall tests on `airframes::plane()`, with the
tuning they need. Closes #348.

## Tuning (`airframes::plane()`)

- Each rate loop's feedforward is worked out from the model
(`rate_feedforward`): the surface command per rad/s that balances its
rate damping at trim. Roll 0.72, pitch 0.46, yaw 1.80, against PX4's
0.5/0.5/0.3. PX4's yaw FF left the rudder to feedback, so turns slipped
by 2.9–3.8°.
- Pitch rate I 1.5 (PX4's is 0.1). A held pitch at constant throttle
trades airspeed, so the elevator keeps moving after the step; with PX4's
I the attitude droops back 17–19% and doesn't settle.
- Everything else stays at core's defaults.

## Tests

| Test | Band | Source | Measured |
|---|---|---|---|
| `plane_step`: roll ±30°, pitch ±10° (`AbsoluteAttitude`, from level on
the line) | rise ≤ 2.2τ (0.88 s) | PX4 `FW_R_TC`/`FW_P_TC` 0.4 s,
`fw_att_control_params.c:56,71` | roll 0.67 s, pitch 0.56 s |
| | overshoot ≤ 5% | copter spec (ArduPilot `AGGR/2`), borrowed: neither
plane autotune has a target | 0 |
| | settled in 4 s | probe's 10% band | roll 0.80 s, pitch 0.70 s |
| | clipped ≤ 22 ms | copter angle steps' allowance | 0 |
| `plane_turn`: loiter, held 30° and 45° bank | \|β\| ≤ 2.5° | measured
+ margin | 0.9°, 0.9°, 1.4° |
| | loiter altitude ±1 m | ArduPilot `arduplane.py:2727` | < 0.01 m |
| | loiter off-circle ≤ 5 m | measured + margin | 2.8 m |
| `plane_stall`: pitch-up rate 1 rad/s at zero throttle for 4 s, wings
level and rolling 0.3 rad/s | α past the stall, states finite, off the
ground | | α 146° (tail slide) |
| | flying again (α < stall, airspeed ≥ min) ≤ 2 s after the entry |
measured + margin | 0.6 s |
| | altitude lost ≤ 8 m, body rate ≤ 3.5 rad/s | measured + margin | 3.7
m, 1.8 rad/s |

The plan had a banked-entry row. At line speed the elevator can't pull α
past about 6° against pitch damping, so a pull in a held bank only
tightens the turn and never stalls. A st... (continued)

223 of 228 new or added lines in 9 files covered. (97.81%)

23 existing lines in 7 files now uncovered.

6012 of 6643 relevant lines covered (90.5%)

5.99 hits per line

Uncovered Changes

Lines Coverage ∆ File
3
93.48
crates/stable-flight-sim/tests/common/plane_spec.rs
2
93.55
crates/stable-flight-sim/tests/common/plane.rs

Coverage Regressions

Lines Coverage ∆ File
10
89.92
0.0% crates/stable-flight-sim/tests/common/mod.rs
4
93.94
-6.06% crates/stable-flight-sim/tests/hover.rs
4
94.25
0.0% crates/stable-flight/src/mixers/table.rs
2
85.39
-0.81% crates/stable-flight/src/flight_loop.rs
1
98.0
0.0% crates/stable-flight-sim/src/airframes.rs
1
97.14
0.59% crates/stable-flight-sim/src/model.rs
1
97.22
-2.78% crates/stable-flight-sim/src/motors.rs
Jobs
ID Job ID Ran Files Coverage
1 38573515281.1 14 Oct 2026 01:46PM UTC 131
90.5
GitHub Action Run
Source Files on build 38573515281
  • Tree
  • List 131
  • Changed 14
  • Source Changed 13
  • Coverage Changed 14
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #38573515281
  • 5954b396 on github
  • Prev Build on main (#38514805817)
  • Next Build on main (#38612077553)
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