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

wboayue / stable-flight / 38490852587
92%

Build:
DEFAULT BRANCH: main
Ran 14 Oct 2026 12:37AM UTC
Jobs 1
Files 115
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 12:33AM UTC coverage: 90.424% (+0.4%) from 90.018%
38490852587

push

github

web-flow
Sim: Plant, shared step spec, heavy_quad and racer airframes (#366) (#372)

PR 1 of 2 for #366. Adds what the robustness table needs: the plant as
one value, the step spec as a shared check, and two more airframes
spanning the plausible range. The table itself (airframes ×
perturbations × starts) is PR 2.

- **`tests/common::Plant { airframe, wind, perturbations }`**: `hover`,
`probe`, `autotune`, `sim_loop_with`, and `pipeline` take `&Plant`
(`Plant::clean`, `Plant::in_wind`); `pipeline_on` folds into it.
Existing tests fly unchanged plants.
- **`tests/common/spec.rs`**: the ArduPilot/PX4 bands, step plans, and
citations move out of `step_response.rs`. `spec::missed_targets(target,
&StepMetrics)` judges one step (pure); `spec::misses(plant, loops)`
flies each step and returns one line per miss (loop, step, targets
missed, metrics), empty on pass. `spec::TUNED` / `spec::ALL`;
`autotune.rs` uses `spec::TUNED`.
- **`airframes`**: a private `build(model, Tune)` builds every airframe;
`x_moment_arm_m(diagonal)`, `ring_inertia`, and `max_thrust_n` derive
geometry and thrust; `YAW_RATE_P`/`HEADING_P` are `quad_x`'s hand tune,
shared, so the stabilizer and guidance setup and the hover-thrust
derivation are written once; `quad_x` is unchanged (its tests are
bit-for-bit the same). New:
- `heavy_quad()`: 3 kg, 350 mm, mass and diagonal from ArduPilot SITL's
default frame (`libraries/SITL/SIM_Frame.cpp:51,57`); thrust-to-weight
2; 50 ms motor lag.
- `racer()`: 0.8 kg, 250 mm, mass and diagonal from
`Tools/autotest/models/freestyle.json`; thrust-to-weight 8; 15 ms motor
lag.
- Both use ArduPilot's ring inertia (`SIM_Frame.cpp:821-825`, behavior
described, not copied). Thrust-to-weight and lag are chosen, because
ArduPilot's hover throttle maps through a PWM/expo curve that doesn't
compare to the sim's `command²`. Taken literally it gives 4.3 and about
21.
- Roll and pitch gains come from `copter_search` run **from core
defaults** on the clean plant; every stage e... (continued)

151 of 158 new or added lines in 9 files covered. (95.57%)

9 existing lines in 3 files now uncovered.

5335 of 5900 relevant lines covered (90.42%)

5.03 hits per line

Uncovered Changes

Lines Coverage ∆ File
4
89.8
-2.61% crates/stable-flight-sim/tests/common/mod.rs
3
94.23
crates/stable-flight-sim/tests/common/spec.rs

Coverage Regressions

Lines Coverage ∆ File
5
89.8
-2.61% crates/stable-flight-sim/tests/common/mod.rs
3
95.24
1.36% crates/stable-flight-sim/src/vehicle.rs
1
96.55
-3.45% crates/stable-flight-sim/src/model.rs
Jobs
ID Job ID Ran Files Coverage
1 38490852587.1 14 Oct 2026 12:37AM UTC 115
90.42
GitHub Action Run
Source Files on build 38490852587
  • Tree
  • List 115
  • Changed 12
  • Source Changed 11
  • Coverage Changed 11
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #38490852587
  • d1b3b321 on github
  • Prev Build on main (#38486877469)
  • Next Build on main (#38500459694)
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