Skip to the content
FixTheRobot Explore Robotics / UAV / Module 8 / M8-T10

UAV Systems Engineering · Module 8

M8-T10: Degraded navigation modes

Degraded does not mean broken: define in advance what the vehicle may still do at each level of navigation quality, and what it must stop doing.

  • Lesson 10 of 18
  • Safety, Verification and Flight Testing
  • Implementation-specific
  • About 5 minutes to read

A vehicle with a binary healthy or failed view of navigation either flies blind or lands at the first glitch. A ladder of degraded modes keeps it useful while limiting risk, provided the modes, their limits and their transitions are specified and tested.

Learning objectives

After this lesson, you should be able to:

  • Define a ladder of navigation modes with entry and exit conditions.
  • Derive speed and clearance limits as a function of position uncertainty.
  • Design hysteresis so that modes do not chatter.
  • Specify the tests that verify each transition.

Conceptual explanation

A degraded mode is a defined, tested operating state with restricted capability. Each mode states: what navigation sources it relies on, what the vehicle may do (speed, altitude, proximity, mission segments), what triggers entry and what permits exit. The modes form a ladder: stepping down is immediate on loss of health; stepping up requires sustained good health.

Degraded mode ladderA ladder of navigation modes from nominal with GNSS and odometry down to odometry only, dead reckoning, controlled stop and landing. Each step down tightens speed and clearance limits; each step up requires a period of sustained good health.NOMINALGNSS + odometry · full speed, normal clearanceDEGRADEDodometry only, bounded σ · reduced speed, larger clearanceDEAD RECKONINGinertial only, σ growing · hold or retrace, timer runningSAFE STOPcontrolled stop and land · no new risk step down: immediateon loss of healthstep up: only aftersustained good health
A four-step mode ladder. The asymmetry between going down and coming up prevents chatter.
Example mode table (limits are requirements to be set per vehicle and mission)
ModeNavigation basisAllowedNot allowed
NominalGNSS and odometry agree, σ\sigma smallFull mission, full speed—
Degraded (odometry)Odometry aided, σ\sigma boundedReduced speed, increased clearance, return and landingNew legs into unmapped space, close-proximity work
Dead reckoningInertial only, σ\sigma growingHold, or retrace a known path for a limited timeAny manoeuvre needing position accuracy
Safe stopAnyControlled stop, landing in a safe areaResuming the mission
Animation of mode switching driven by a noisy GNSS quality metric. The metric falls through the threshold, dips, and recovers while noisy. A single-threshold switch flaps between full and degraded navigation many times; the same metric with separate entry and exit thresholds and a dwell time changes mode only twice. The number of switches of each logic is counted and displayed.
A mode logic with one threshold flips whenever noise crosses it; use a lower threshold to enter the degraded mode, a higher one to leave it, and a minimum dwell time before returning. Synthetic metric with noise 0.12; enter below 0.4, exit above 0.65 held for 2 seconds (sampled at 10 Hz). (Looping, about 6 seconds; drawn and computed for this course with illustrative values.)

Engineering intuition

Tie the limits to uncertainty, not to the mode name. The relevant physical question is: with my current position uncertainty σ\sigma , how close can I get to an obstacle and how fast can I fly while still being able to stop within what I know? A mode is then a coarse summary of ranges of σ\sigma and of which sources are healthy, and the limits are a continuous function of σ\sigma inside each mode. Hysteresis comes from asymmetry: it takes one bad sample to lose trust but many good seconds to regain it.

Mathematical formulation

Required clearance grows with uncertainty. With kk the number of standard deviations to cover (for example 3) and a fixed margin mm for the vehicle and sensing:

Clearance as a function of uncertainty
c(σ)=c0+k σ+mc(\sigma) = c_0 + k\,\sigma + m

The speed limit follows from stopping distance. With braking deceleration aba_{b}, reaction time trt_{r} (sensing and processing latency, lesson M7-T6) and obstacle detection range RR:

Condition on the speed
v tr+v22 ab≤R−c(σ)v\,t_r + \frac{v^{2}}{2\,a_b} \le R - c(\sigma)
Resulting speed limit
vmax⁡=ab(−tr+tr2+2 (R−c(σ))ab)v_{\max} = a_b\left(-t_r + \sqrt{t_r^{2} + \frac{2\,(R - c(\sigma))}{a_b}}\right)

If R−c(σ)≤0R-c(\sigma )\le 0 no speed is safe: that is the point at which the mode must be at least dead reckoning with a stop. Entry and exit conditions use different thresholds (hysteresis): e.g. enter degraded at σ>σin\sigma >\sigma _{\text{in}}, return to nominal only when σ\sigma < σout < σin\sigma _{\text{in}} for TholdT_{\text{hold}} seconds.

Architecture and data flow

Navigation manager (lesson M2-T16) publishes mode, σ\sigma and health. The planner consumes them: it inflates obstacle margins by k σk\,\sigma , limits the trajectory speed to vmax⁡(σ)v_{\max}(\sigma ), and refuses mission legs not allowed in the current mode. The mission layer reacts to mode changes (hold, retrace, land). The mode and the limits in force are logged with every setpoint so that investigations can see what the vehicle believed it was allowed to do.

Real-world UAV applications

  • GNSS-denied inspection where odometry quality varies with the scene.
  • Urban flight crossing GNSS-poor corridors.
  • Choosing between continuing, holding and landing when a sensor fails.
  • The acceptance criteria and failsafe design of Capstone 4.

Implementation example

This runs as shown: the speed limit as a function of uncertainty (checked against a brute-force stopping-distance search), and a mode selector with hysteresis tested against a chattering uncertainty signal.

import numpy as np

def clearance(sigma, c0=0.5, k=3.0, margin=0.3): return c0 + k * sigma + margin
def v_max(sigma, detect_range=8.0, a_b=3.0, t_r=0.15):
    free = detect_range - clearance(sigma)
    if free <= 0: return 0.0
    return a_b * (-t_r + np.sqrt(t_r**2 + 2 * free / a_b))

def stops_in_time(v, sigma, detect_range=8.0, a_b=3.0, t_r=0.15):
    return v * t_r + v * v / (2 * a_b) <= detect_range - clearance(sigma) + 1e-9

for sigma in (0.1, 0.5, 1.0, 2.0):                                   # the closed form is the largest speed that still stops in time
    v = v_max(sigma); grid = np.linspace(0, 12, 120001)
    best = max(g for g in grid if stops_in_time(g, sigma)) if v > 0 else 0.0
    assert abs(v - best) < 1e-3, (sigma, v, best)
print({s: round(v_max(s), 2) for s in (0.1, 0.5, 1.0, 2.0, 2.5)})
assert v_max(0.1) > v_max(1.0) > v_max(2.0) and v_max(2.5) == 0.0     # more uncertainty, lower speed, eventually none

class ModeSelector:
    """Down immediately when sigma exceeds the entry threshold; back up only after t_hold seconds below the (lower) exit threshold."""
    def __init__(self, s_in=1.0, s_out=0.6, t_hold=5.0):
        self.s_in, self.s_out, self.t_hold = s_in, s_out, t_hold; self.mode = "NOMINAL"; self.good_since = None
    def update(self, t, sigma):
        if sigma > self.s_in: self.mode, self.good_since = "DEGRADED", None
        elif self.mode == "DEGRADED":
            if sigma < self.s_out:
                self.good_since = t if self.good_since is None else self.good_since
                if t - self.good_since >= self.t_hold: self.mode = "NOMINAL"
            else: self.good_since = None
        return self.mode

rng = np.random.default_rng(0); m = ModeSelector(); modes = []
for k in range(300):                                                   # sigma chatters around 0.8: between the two thresholds
    t = k * 0.1; modes.append(m.update(t, 1.2 if k == 50 else 0.8 + 0.05 * rng.standard_normal()))
changes = sum(1 for a, b in zip(modes, modes[1:]) if a != b)
print("mode changes with chattering sigma:", changes)
assert modes[49] == "NOMINAL" and modes[51] == "DEGRADED" and changes == 1   # one drop at the spike, then it stays degraded while sigma hovers between the thresholds
Speed limit from uncertainty, and a hysteresis mode selector that does not chatter.

Common engineering mistakes

Modes defined by names, limits by feeling

Derive the limits from uncertainty, stopping distance and latency, and write them as requirements.

Symmetric thresholds

The mode chatters when the signal hovers at the threshold; use hysteresis and a hold time.

Planner unaware of mode

The mode manager changes but the planner keeps flying the same path: the interface must carry σ\sigma and limits.

No test of the transitions

The ladder is only as good as its least-tested step.

Hard mode switches causing setpoint jumps

Ramp speed and margin changes smoothly.

Failure modes

Failure modes, symptoms and causes
Failure modeHow it shows upLikely cause
Mode chatterRapid toggling and jerky speedNo hysteresis or hold time
Silent degradationVehicle flies full speed with large uncertaintyLimits tied to mode name, not to σ\sigma
Stuck degradedNever returns to nominal when GNSS is backExit condition unreachable or trust never restored
Planner collision in degraded modePath too close to an obstacle after driftClearance not inflated by kσ\sigma

Debugging approach

  1. Replay logs with injected sensor loss and check the mode, σ\sigma , speed limit and clearance versus time.
  2. Check the mode ladder by sweeping σ\sigma up and down across thresholds.
  3. Verify planner outputs respect vmax⁡(σ)v_{\max}(\sigma ) with a unit test on recorded trajectories.
  4. Look for transitions without a logged reason.

Practical exercises

  1. Compute vmax⁡v_{\max} for R=6 mR=6\,\mathrm{m}, ab=2 m/s2a_{b}=2\,\mathrm{m}/\mathrm{s}^{2}, tr=0.3 st_{r}=0.3\,\mathrm{s} and σ=0.4 m\sigma =0.4\,\mathrm{m}.
  2. Add a mode for “GNSS only” and define its entry and exit conditions.
  3. Find the hold time that avoids chatter for a σ\sigma signal with 0.1 m noise around the threshold.
  4. Specify the three tests that verify the step from nominal to degraded in the Failure Simulator.

Interview questions

Write an answer in your own words, then reveal the model answer. Nothing is sent anywhere.

Question 1

What belongs in a degraded-mode definition?

Model answer

The navigation basis, the allowed and forbidden operations, the entry condition, the exit condition with hysteresis, and the verification test.

Question 2

How do you set the speed limit in a degraded mode?

Model answer

From stopping distance: the vehicle must be able to stop, including reaction latency, within the detection range minus the clearance needed for the current position uncertainty.

Question 3

Why use hysteresis between modes?

Model answer

Without it the mode toggles whenever the signal hovers near a threshold; hysteresis plus a hold time makes down-transitions fast and up-transitions deliberate.

References and further reading

Primary papers, official documentation and standards. Each claim above that is specific to a tool or version points here.

What’s next

Mark this lesson

Saved in this browser and synced to your account when you are signed in.

Practice this lesson

M8-L4: Implement navigation confidence monitoring

Watch the confidence monitor.

Practice this lesson

M8-L5: Develop a degraded-mode architecture

Define degraded navigation modes, entry and exit conditions, restrictions and verification.

Next lesson

M8-T11: GNSS loss handling

Handle GNSS loss by detection, mode transition, bounded degraded operation and a failsafe timer derived from drift.