Module 5/5 · Weeks 13–15 · 27 h

Simulated missions and contingencies

UAT 402 Advanced UAS Technology and BVLOS Operations

About 90 minDraft, awaiting reviewLast updated 28 September 2026

Lesson

By the end of this module you will be able to

  1. Compute the point of no return with wind
  2. Check the coverage of emergency landing sites along a route
  3. Set ArduPilot battery failsafes and rally points consistent with the calculations
  4. Rehearse a simulated BVLOS mission with abnormal events and record the results

Prerequisites: UAT 402 Modules 1–4 · UAT 305 Module 5 (failsafes and geofences)

Why this matters

The drone knowledge base’s lab unit on stopping and restoring a simulated link asks learners to record behaviour when telemetry is lost, and its activity guide on BVLOS and risk assessment advises aligning readings, activities, work products and assessment. UAT 305 set ArduPilot failsafes and geofences. Our 20 km pipeline mission has two questions to answer before rehearsal: how far out can we fly and still get home, and if we must land en route, where?

Point of no return

With wind along the route, the outbound leg with a tailwind is faster, but the return leg into the headwind is slowed even more, so the average round-trip speed is always lower than in calm air. The point of no return is the farthest distance at which round-trip energy still does not exceed the usable energy after reserve.

Example 1 A 6 m/s wind along the pipeline

The battery has 700 Wh usable, with 20% kept in reserve on arrival home. Cruise power is 1,200 W, airspeed 16 m/s, and the wind blows along the pipeline away from home at 6 m/s (assumed values).

import numpy as np

cap_wh = 700.0              # usable battery energy
reserve = 0.20              # minimum reserve on arrival home
p_w = 1200.0                # cruise power W
v_air = 16.0                # airspeed m/s
wind = 6.0                  # wind along the route away from home m/s (tailwind out, headwind back)

def energy_wh(dist_m, ground_speed):
    return p_w * dist_m / ground_speed / 3600

usable = cap_wh * (1 - reserve)
out_gs, back_gs = v_air + wind, v_air - wind
d = np.arange(0, 40001, 10)
need = energy_wh(d, out_gs) + energy_wh(d, back_gs)
pnr = d[need <= usable].max()
print(f"usable energy {usable:.0f} Wh")
print(f"point of no return with wind: {pnr/1000:.2f} km from home")
d0 = usable / (2 * p_w / v_air / 3600)
print(f"same calculation in calm air: {d0/1000:.2f} km")
usable energy 560 Wh
point of no return with wind: 11.55 km from home
same calculation in calm air: 13.44 km

A 6 m/s wind shrinks the point of no return from 13.4 km to 11.6 km. The 20 km pipeline therefore cannot be flown out and back in one flight from home; it must be split into two flights, use launch points at both ends, or be launched mid-route by vehicle. This calculation must be redone daily for the actual wind, using wind at flight height, not at the surface.

Round-trip energy against distance from home from 0 to 16 kilometres: the solid pink line for a 6 metre per second wind is steeper than the dashed blue calm-air line; they cross the gold dashed usable-energy line of 560 watt-hours at 11.55 and 13.44 kilometres respectively
Figure 1 Point of no return with wind

Emergency landing sites along the route

When the battery is low, a motor misbehaves or the drone must avoid another aircraft, flying home may be too far. ArduPilot supports rally points, alternate return destinations: the vehicle goes to the nearest one when entering RTL mode (subject to the RALLY_LIMIT_KM and RALLY_INCL_HOME parameters). Battery failsafe thresholds are set with BATT_LOW_VOLT, BATT_LOW_MAH and the critical thresholds, and the action is chosen with BATT_FS_LOW_ACT, such as Land, RTL or SmartRTL. These landing sites must have the landowner’s permission and be inspected before use.

Example 2 Which stretch of the pipeline has nowhere to land?

There are four landing sites: home, a school field at 6 km, a temple yard at 12 km and the end depot at 20 km. In an emergency the drone must reach a site within 3 km (assumed from reserve energy). Check every 0.1 km.

import numpy as np

route_km = np.round(np.arange(0, 20.05, 0.1), 1)   # points along the pipeline every 0.1 km
sites = {"home": 0.0, "L1 school field": 6.0, "L2 temple yard": 12.0, "end depot": 20.0}
reach_km = 3.0                            # distance that must reach a landing site in an emergency (assumed from reserve energy)

gaps, best = [], []
for x in route_km:
    name, pos = min(sites.items(), key=lambda s: abs(s[1] - x))
    dist = abs(pos - x)
    best.append(dist)
    if dist > reach_km:
        gaps.append(x)
print(f"worst distance to a landing site: {max(best):.2f} km")
if gaps:
    print(f"uncovered stretch: {min(gaps):.1f} to {max(gaps):.1f} km")
    sites["L3 new field"] = 16.0
    worst = max(min(abs(p - x) for p in sites.values()) for x in route_km)
    print(f"after adding L3 at 16.0 km, worst distance {worst:.2f} km")
worst distance to a landing site: 4.00 km
uncovered stretch: 15.1 to 16.9 km
after adding L3 at 16.0 km, worst distance 3.00 km

The stretch from 15.1 to 16.9 km is more than 3 km from any site. Adding a field at 16 km closes the gap, but the worst distance becomes exactly 3.00 km, the limit, with no margin at all; more sites or more reserve energy are needed. Checking every 0.1 km also matters, because checking too coarsely can miss short gaps.

A horizontal route from 0 to 20 kilometres with landing sites home, L1, L2, end and the new L3; green bars above show 3 kilometres around the existing sites and a gold bar around L3; a small pink bar between 15 and 17 kilometres shows the original gap
Figure 2 Emergency landing sites along a 20 km route

Module lab

Lab: rehearsing a BVLOS mission in SITL

  1. Build the pipeline mission in ArduPilot SITL, set the wind to the forecast, and compute the point of no return with Example 1
  2. Add rally points following Example 2 and set the battery failsafe to act before the point of no return
  3. The instructor injects events in flight, such as cutting telemetry, draining the battery quickly or an approaching aircraft; the team must follow its written procedures
  4. Record the time and decision for every event and compare the drone’s behaviour with what was expected
  5. Debrief after the rehearsal, identifying procedures to fix and the limitations of simulation compared with real flight

Common mistakes

Watch out

  • Computing range in calm air
  • Using surface wind instead of wind at flight height
  • Setting the battery failsafe at a fixed percentage without considering distance to a landing site
  • Adding rally points that are not permitted or have never been inspected
  • Treating SITL rehearsal results as equal to real flight

Summary

  • Wind along the route always makes round-trip energy greater than in calm air
  • The point of no return must be recomputed daily for the actual wind
  • Emergency landing sites must cover every stretch of the route with margin
  • ArduPilot rally points and battery failsafes must match the calculations and be rehearsed

Check your understanding

  1. With 15 m/s airspeed and a 5 m/s wind, what are the outbound and return ground speeds?
  2. Why does wind reduce round-trip range even though the outbound leg is faster?
  3. Which ArduPilot parameter chooses the action when the battery is low?
  4. What is a rally point?
  5. With landing sites at 0 and 8 km and a 3 km reach, which stretch is not covered?
Answers
  1. 20 m/s outbound, 10 m/s on return
  2. Time lost on the headwind leg exceeds time gained on the tailwind leg
  3. BATT_FS_LOW_ACT
  4. An alternate return destination the vehicle flies to in RTL mode, choosing the nearest one
  5. The stretch more than 3 km from both sites, between 3 and 5 km

Key formulas

Round-trip energy
Point of no return

Key references

  1. ArduPilot Dev Team. Battery failsafe (Copter documentation). link
  2. ArduPilot Dev Team. Rally points (documentation). link
  3. ArduPilot Dev Team. SITL simulator (software in the loop). link
  4. Joint Authorities for Rulemaking on Unmanned Systems. (2024). JARUS guidelines on Specific Operations Risk Assessment (SORA), main body, edition 2.5 (JAR-DEL-SRM-SORA-MB-2.5). link

Further reading

Study the assigned knowledge units in advance, review media and take the module quiz

In class / field

Lab or field practice from worksheets with a safety checklist

Learning evidence: Checked worksheets and quiz results

Module quiz

This is a formative self-check, not a graded exam

Knowledge domain: Law, safety and risk · Communications, networks and IoT