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

wboayue / stable-flight / 38787771267
92%

Build:
DEFAULT BRANCH: main
Ran 15 Oct 2026 06:48PM UTC
Jobs 1
Files 150
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 06:41PM UTC coverage: 91.833% (+0.2%) from 91.665%
38787771267

push

github

web-flow
Quadplane forward thrust in copter flight (#427) (#432)

Copter flight on a quadplane now hands its nose-down pitch to the
pusher. This is ArduPilot's `Q_FWD_THR_USE`
(`ArduPlane/quadplane.cpp:2942-3058`, `368dc0c428`): on a waypoint or
land, `QuadPlaneGuidance` holds nose-down pitch to `FWD_PIT_LIM` (3°)
and flies the pusher on `FWD_THR_GAIN · tan(pitch)` the hover asked for.
The result is a `Setpoint::Blend` at lift share 1, so the wing isn't
flown at negative α. It is off by default in core, as in ArduPilot and
PX4; `airframes::quadplane()` sets the gain to 1.2.

Closes #427

## Changes

- **Core, `guidance::vtol::ForwardThrust`:** new component with
`ForwardThrustConfig` and `ForwardSplit`. Params `FWD_THR_GAIN` and
`FWD_PIT_LIM`, with metadata.
- **`QuadPlaneGuidance`:** `QuadPlaneGuidanceConfig::forward`. In
`Copter` mode, waypoint and land input get the split; sticks keep their
tilt.
- **Sim:** the quadplane airframe sets gain 1.2.
  - New `tests/quadplane_waypoints.rs`.
- `quadplane_transition` back-transition test gains hover points 120 m
ahead of and behind the handover.
- **Docs:** sim README (tests table, airframe, Limits),
`architecture.md` rationale with rejected designs,
`docs/tuning/quadplane.md` forward-thrust section, core CHANGELOG,
AGENTS test list.

## Sim results (calm air unless noted, hover at 30 m, legs of 100 m)

| Case | Before | After |
|---|---|---|
| Ahead, no speed cap | lost 13.3 m | lost 0.4 m, climbs 4.1 m |
| Behind, no speed cap | lost 13.0 m, roll 66° | lost 0.2 m |
| Side, no speed cap | lost 14.9 m | lost 1.7 m |
| Hold in 11 m/s headwind | never climbs past 2.5 m | holds |
| Upwind at 5 m/s in 11 m/s headwind | crash | arrives |
| Back transition, hover point 120 m ahead | lost 16.6 m (27 m in 5 m/s
headwind, crash in 8 m/s) | lost 0.6 m |
| Back transition, hover point 120 m behind | flips (0, 5, 8 m/s
headwind) | lost 0.5 m |
| Forward-transition timeout (`times_out_short_of_the_airspeed_gate`) |
lost 6.6 m | ... (continued)

120 of 121 new or added lines in 5 files covered. (99.17%)

1 existing line in 1 file now uncovered.

7343 of 7996 relevant lines covered (91.83%)

7.44 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
95.0
crates/stable-flight/src/guidance/vtol/forward.rs

Coverage Regressions

Lines Coverage ∆ File
1
94.34
-0.94% crates/stable-flight-sim/tests/common/plane.rs
Jobs
ID Job ID Ran Files Coverage
1 38787771267.1 15 Oct 2026 06:48PM UTC 150
91.83
GitHub Action Run
Source Files on build 38787771267
  • Tree
  • List 150
  • Changed 8
  • Source Changed 5
  • Coverage Changed 8
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #38787771267
  • 7df4549e on github
  • Prev Build on main (#38764761149)
  • Next Build on main (#38798266490)
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