Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
cd67c18
implement vtol mission auto transition
mart1npetroff May 12, 2026
58b9fc7
implement VTOL transition automation for smoothing transition
mart1npetroff May 12, 2026
ae15cb9
feat(vtol): add unified manual/mission transition controller with air…
mart1npetroff May 12, 2026
232dfb5
- document explicit USER-bit semantics as absolute per-waypoint platf…
mart1npetroff May 12, 2026
8ab311a
feat(vtol): add optional dynamic scaling ramp timer and clarify legac…
mart1npetroff May 13, 2026
50612a2
docs: regenerate Settings.md from settings definitions
mart1npetroff May 14, 2026
8d781e9
vtol: split global vs per-mixer transition settings, rename manual sw…
mart1npetroff May 16, 2026
587460e
vtol: clean transition state internals and clarify manual switch setup
mart1npetroff May 17, 2026
a73bc70
vtol: harden transition controller docs and per-loop mode handling
mart1npetroff May 17, 2026
421a55c
vtol: add dedicated transition debug mode and clarify transition paths
mart1npetroff May 17, 2026
73707a9
- capture debug values before transition scale cleanup so final succe…
mart1npetroff May 17, 2026
762c310
fix(vtol): report actual MIXER TRANSITION/MIXER PROFILE 2 activity in…
mart1npetroff May 18, 2026
0258521
debug data enchancment
mart1npetroff May 21, 2026
c2cdbfc
feat(nav): add VTOL transition retry and configurable fail actions
mart1npetroff May 28, 2026
799995b
fix(nav): harden VTOL retry scan and map FW->MC LOITER fail action to…
mart1npetroff May 28, 2026
7fd7163
fix(vtol): gate manual profile switch during transition and improve r…
mart1npetroff May 28, 2026
093c0ec
По-здраво: code latch за “manual transition session active” до TRANSI…
mart1npetroff May 28, 2026
cb213fd
docs(vtol): align profile order guidance and clarify switch examples
mart1npetroff Jun 3, 2026
061c7f2
vtol: decouple MC->FW pusher ramp from handoff scaling
mart1npetroff Jun 3, 2026
94a6b34
vtol: restore manual profile hot-switch during transition
mart1npetroff Jun 4, 2026
02e7f86
vtol: simplify transition docs and remove mission track-distance setting
mart1npetroff Jun 4, 2026
8fe6337
docs(vtol): clarify transition timer roles and fallback behavior
mart1npetroff Jun 5, 2026
1d2cd6f
vtol: support overlap mapping with manual transition controller
mart1npetroff Jun 5, 2026
cc85129
vtol: latch fw-to-mc protection and reuse multirotor platform helper
mart1npetroff Jun 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
289 changes: 280 additions & 9 deletions docs/MixerProfile.md

Large diffs are not rendered by default.

38 changes: 38 additions & 0 deletions docs/Navigation.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,44 @@ Parameters:

* `<flag>` - Last waypoint must have `flag` set to 165 (0xA5).

### Mission VTOL transition using existing User Actions

Mission VTOL transition can be requested.

Configuration:

- `nav_vtol_mission_transition_user_action` selects which waypoint User Action (`USER1..USER4`) is used as the mission VTOL target selector.
- `nav_vtol_mission_transition_min_altitude_cm` optionally enforces a minimum altitude before transition start (`0` disables check).
- During MC->FW mission transition, iNAV uses a built-in straight run-up target to help the model build speed before switching to fixed-wing.
- VTOL transition completion logic is shared with manual MIXER TRANSITION and uses mixer transition settings:
- preferred MC->FW threshold: `vtol_transition_to_fw_min_airspeed_cm_s`
- FW->MC threshold: `vtol_transition_to_mc_max_airspeed_cm_s`

Behavior on each navigable mission waypoint (`WAYPOINT`, `POSHOLD_TIME`, `LAND`):

- The configured USER bit is an **absolute target selector**:
- `0`: transition to MC / MULTIROTOR profile
- `1`: transition to FW / AIRPLANE profile
- When `nav_vtol_mission_transition_user_action != OFF`, each navigable waypoint always encodes target state via that selected USER bit.
- This means every navigable waypoint implicitly declares desired VTOL platform state when this feature is enabled; users must intentionally set/clear that bit on each waypoint.
- This command is **not** a toggle.
- The command is idempotent: if already in the requested target profile type, the mission continues immediately.
- If a transition is needed, mission progression pauses while automated transition runs, then resumes only after completion.

Transition behavior in this MVP:

- MC -> FW: straight-line acceleration segment (no loiter), heading from the next waypoint bearing when available, otherwise current heading.
- MC -> FW and FW -> MC completion uses pitot airspeed thresholds when healthy/available (`vtol_transition_to_fw_min_airspeed_cm_s`, `vtol_transition_to_mc_max_airspeed_cm_s`).
- If pitot is unavailable/unhealthy (or threshold is `0`), timer fallback (`mixer_switch_trans_timer`) is used.
- Ground speed is not used for transition progress/completion.
- FW -> MC: mission pauses during automated transition, then resumes after switching back to MC profile.
- Strict altitude hold is not enforced during MC -> FW transition; natural climb is allowed.

Safety and scope:

- This path uses authorized automated transition state handling; it does not permit manual mixer profile switching during normal waypoint navigation.
- It still depends on valid mixer profile switching infrastructure (two configured mixer profiles and a valid `MIXER PROFILE 2` mode activation condition).

`wp save` - Checks list of waypoints and save from FC to EEPROM (warning: it also saves all unsaved CLI settings like normal `save`).

`wp reset` - Resets the list, sets the number of waypoints to 0 and marks the list as invalid (but doesn't delete the waypoint definitions).
Expand Down
164 changes: 163 additions & 1 deletion docs/Settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -782,6 +782,7 @@ Defines debug values exposed in debug variables (developer / debugging setting)
| LULU | |
| SBUS2 | |
| OSD_REFRESH | |
| VTOL_TRANSITION | |

---

Expand Down Expand Up @@ -3201,14 +3202,54 @@ If enabled, control_profile_index will follow mixer_profile index. Set to OFF(de

### mixer_switch_trans_timer

If switch another mixer_profile is scheduled by mixer_automated_switch or mixer_automated_switch. Activate Mixertransion motor/servo mixing for this many decisecond(0.1s) before the actual mixer_profile switch.
Original VTOL transition timer, still used as the backup completion time. If trusted pitot airspeed is not being used, iNAV completes the transition from this timer instead. If `mixer_vtol_transition_scale_ramp_time_ms = 0`, lift motor power, multicopter stabilisation, and fixed-wing control handoff also fall back to this timing.

| Default | Min | Max |
| --- | --- | --- |
| 0 | 0 | 200 |

---

### mixer_vtol_manualswitch_autotransition_controller

Makes `MIXER TRANSITION` start one automatic VTOL transition each time the switch moves from OFF to ON, when not in waypoint mission. Turn this ON in both mixer profiles if you want the same behavior in both directions. OFF keeps the older manual switch behavior.

| Default | Min | Max |
| --- | --- | --- |
| OFF | OFF | ON |

---

### mixer_vtol_transition_airspeed_timeout_ms

Maximum wait time [ms] for the required pitot airspeed during an airspeed-controlled transition. This timer does not complete the transition; it only aborts it if the target airspeed is still not reached in time. If pitot becomes unavailable, iNAV falls back to `mixer_switch_trans_timer` instead. Set to 0 to disable.

| Default | Min | Max |
| --- | --- | --- |
| 0 | 0 | 60000 |

---

### mixer_vtol_transition_dynamic_mixer

Turns on smooth VTOL transition power changes. This affects forward motor ramp-up, lift motor power reduction, multicopter stabilisation reduction, and fixed-wing control fade-in. Used by both manual `MIXER TRANSITION` and mission-requested VTOL transitions.

| Default | Min | Max |
| --- | --- | --- |
| OFF | OFF | ON |

---

### mixer_vtol_transition_scale_ramp_time_ms

When smooth VTOL transition power changes are ON, this always controls the MC->FW forward motor ramp. `0` gives full forward-motor power immediately. This timer does not decide when the transition is complete. For lift motor power, multicopter stabilisation, and fixed-wing control handoff, trusted pitot airspeed still controls the change while pitot is usable; this timer is only their backup ramp if pitot becomes unavailable.

| Default | Min | Max |
| --- | --- | --- |
| 0 | 0 | 60000 |

---

### mode_range_logic_operator

Control how Mode selection works in flight modes. If you example have Angle mode configured on two different Aux channels, this controls if you need both activated ( AND ) or if you only need one activated ( OR ) to active angle mode.
Expand Down Expand Up @@ -4626,6 +4667,67 @@ Defines how Pitch/Roll input from RC receiver affects flight in POSHOLD mode: AT

---

### nav_vtol_mission_transition_min_altitude_cm

Do not start a mission-requested VTOL transition below this altitude [cm]. Set to 0 to disable the altitude check.

| Default | Min | Max |
| --- | --- | --- |
| 0 | 0 | 50000 |

---

### nav_vtol_mission_transition_user_action

Chooses which waypoint USER flag (`USER1`..`USER4`) tells iNAV which flight mode to use at each navigable waypoint. Selected USER flag ON means fixed-wing. Selected USER flag OFF means multicopter. OFF disables this feature. Requires two mixer profiles and a working `MIXER PROFILE 2` mode setup.

| Allowed Values | |
| --- | --- |
| OFF | Default |
| USER1 | |
| USER2 | |
| USER3 | |
| USER4 | |

---

### nav_vtol_transition_fail_action_fw_to_mc

What iNAV should do if FW->MC transition fails. `LOITER` keeps the aircraft near its current position. `FORCE_SWITCH` changes to the other mixer profile immediately even though the normal switch conditions were not met.

| Allowed Values | |
| --- | --- |
| IDLE | |
| LOITER | Default |
| RTH | |
| EMERGENCY_LANDING | |
| FORCE_SWITCH | |

---

### nav_vtol_transition_fail_action_mc_to_fw

What iNAV should do if MC->FW transition still fails after the final attempt.

| Allowed Values | |
| --- | --- |
| IDLE | Default |
| POSH | |
| RTH | |
| EMERGENCY_LANDING | |

---

### nav_vtol_transition_retry_on_airspeed_timeout

If ON, iNAV gets one extra MC->FW attempt after an airspeed timeout during mission or RTH. It pauses, yaws around to find the best airspeed direction, then tries once more.

| Default | Min | Max |
| --- | --- | --- |
| OFF | OFF | ON |

---

### nav_wp_enforce_altitude

Forces craft to achieve the set WP altitude as well as position before moving to next WP. Position is held and altitude adjusted as required before moving on. 0 = disabled, otherwise setting defines altitude capture tolerance [cm], e.g. 100 means required altitude is achieved when within 100cm of waypoint altitude setting.
Expand Down Expand Up @@ -6974,6 +7076,66 @@ Warning voltage per cell, this triggers battery-warning alarms, in 0.01V units,

---

### vtol_fw_to_mc_auto_switch_airspeed_cm_s

Extra low-speed protection for fixed-wing flight [cm/s]. If airspeed falls to this value or lower while in FW, iNAV automatically starts FW->MC. After the switch to MC, iNAV keeps the MC profile until you deliberately command another manual profile change. Used only when `mixer_vtol_manualswitch_autotransition_controller` is ON. Set to 0 to disable.

| Default | Min | Max |
| --- | --- | --- |
| 0 | 0 | 20000 |

---

### vtol_transition_fw_authority_start_percent

How much fixed-wing control is available at the start of transition, in percent. `100` gives full fixed-wing control immediately. Lower values bring in fixed-wing control more gently. Used only when `mixer_vtol_transition_dynamic_mixer` is ON.

| Default | Min | Max |
| --- | --- | --- |
| 100 | 0 | 100 |

---

### vtol_transition_lift_end_percent

How much lift motor power remains at the end of transition, in percent. `100` keeps full lift power. Lower values reduce lift motor power more. Used only when `mixer_vtol_transition_dynamic_mixer` is ON.

| Default | Min | Max |
| --- | --- | --- |
| 100 | 0 | 100 |

---

### vtol_transition_mc_authority_end_percent

How much multicopter stabilisation remains at the end of transition, in percent. `100` keeps full multicopter stabilisation. Lower values reduce it more. Used only when `mixer_vtol_transition_dynamic_mixer` is ON.

| Default | Min | Max |
| --- | --- | --- |
| 100 | 0 | 100 |

---

### vtol_transition_to_fw_min_airspeed_cm_s

Minimum pitot airspeed [cm/s] needed before MC->FW transition is considered complete while pitot remains usable. If pitot becomes unavailable, or if this is set to 0, iNAV uses `mixer_switch_trans_timer` instead. If pitot remains usable but this target is still not reached before `mixer_vtol_transition_airspeed_timeout_ms` expires, the transition is aborted.

| Default | Min | Max |
| --- | --- | --- |
| 0 | 0 | 20000 |

---

### vtol_transition_to_mc_max_airspeed_cm_s

When slowing down from FW to MC, the transition is considered complete once pitot airspeed falls to this value [cm/s] or lower while pitot remains usable. If pitot becomes unavailable, or if this is set to 0, iNAV uses `mixer_switch_trans_timer` instead. If pitot remains usable but this condition is still not reached before `mixer_vtol_transition_airspeed_timeout_ms` expires, the transition is aborted.

| Default | Min | Max |
| --- | --- | --- |
| 0 | 0 | 20000 |

---

### vtx_band

Configure the VTX band. Bands: 1: A, 2: B, 3: E, 4: F, 5: Race.
Expand Down
Loading