PATH PLANNING
AUTONOMOUS ROUTE GENERATION
LOCAL_NED Coordinate System
Without GPS, absolute geographic coordinates (latitude, longitude) are unavailable. ArduPilot's LOCAL_NED frame defines position relative to the launch point: North (meters from launch, positive north), East (meters from launch, positive east), Down (meters from launch, positive down — negative values mean above launch altitude). A waypoint at (+500, +200, -120) means 500m north, 200m east, and 120m above the launch point. The pilot programs the mission before launch using terrain maps and known distances to target areas.
Accumulated drift in LOCAL_NED is the fundamental limitation: without external position correction (GPS, visual landmarks, or ground beacons), the estimated position drifts 50-200m over a 10-minute flight. For ISR, this drift is acceptable — the camera footprint at 300 m AGL covers a 750 m-wide strip, so 50-200m of position error still keeps the target area within the camera view. For FPV strike, the drift means the pilot arrives in the general target area but must acquire the specific target visually for the final 100-meter approach.
Lisa 26 Route Generation
Lisa 26 L2 generates optimal routes considering three constraint layers: mission objectives (ISR coverage sector, FPV target coordinates), terrain hazards (DEM-derived obstacles, minimum altitude clearance, power line corridors), and threat avoidance (known enemy air defense positions, electronic warfare zones, observed drone activity patterns from brigade intelligence). The output is a sequence of LOCAL_NED waypoints uploaded to the drone via MAVLink before launch.
Dynamic re-routing during flight: if a new threat appears in the mission area (enemy SAM activation detected by SDR, or Fischer 26 detects hostile drone on the planned route), Lisa 26 generates an updated waypoint sequence and uploads it via MANET link. The drone transitions to the new route at the next waypoint without returning home. This enables reactive planning that adapts to the evolving tactical situation — the route planned at the operations order may be obsolete by launch time, but the system adjusts in real time.
Terrain Avoidance and Safety Altitude
Lisa 26 enforces a minimum altitude of 50 meters AGL for all autonomous waypoints — this clears the tallest trees (Swedish spruce averages 25m, maximum 40m), power line towers (typically 15-30m), and communication masts. In urban areas, minimum altitude increases to 80m AGL to clear multi-story buildings. The DEM provides ground elevation at each waypoint, and Lisa 26 adjusts the waypoint altitude to maintain the minimum AGL clearance even over rising terrain. Without this terrain-following logic, a waypoint set at "120m above launch" over flat terrain would skim treetops on a hill 70m above the launch elevation.
Path planning in GPS-denied environments requires fundamentally different thinking than GPS-enabled operations. With GPS, the path is defined by absolute coordinates that the drone follows precisely. Without GPS, the path is defined by relative offsets from the launch point — and accumulated drift means the drone's actual path diverges from the planned path by 50-200 meters over a 10-minute flight. The path planner must account for this drift in mission design.
GPS-Denied Path Planning
Without GPS, absolute waypoints (latitude/longitude) are meaningless — you do not know your absolute position. Instead, paths are defined relative to the takeoff point: "fly 500m on heading 045°, climb to 300 m AGL, hold orbit with radius 200 m." The barometer provides altitude. The gyroscope provides heading (drifts slowly). Visual landmarks from the FPV feed provide course corrections. This is how pilots navigated before GPS existed — dead reckoning with visual checkpoints.
ArduPilot Implementation
GPS-DENIED WAYPOINTS
GPS-Denied Waypoint Format
Without GPS, waypoints are defined relative to the takeoff point using barometric altitude and heading:
# GPS-denied waypoint format for ArduPilot
# All positions relative to HOME (takeoff point)
# Heading from gyro (AHRS), altitude from barometer
# MAVLink COMMAND: MAV_CMD_NAV_WAYPOINT (relative mode)
# param5 = latitude offset (meters north, NOT degrees)
# param6 = longitude offset (meters east, NOT degrees)
# param7 = altitude AGL (barometric, meters)
# Example: fly 500m north, 200m east, at 100m AGL
mavutil.mavlink.MAV_CMD_NAV_WAYPOINT(
0, 0, 0, 0, # params 1-4 unused
500, # 500m north of takeoff
200, # 200m east of takeoff
100 # 100m AGL (barometric)
)
ArduPilot parameter: FRAME=6 (MAV_FRAME_LOCAL_NED) for relative positioning. Tested in SITL with GPS disabled: drone follows relative waypoints with ~5m accuracy at 500m range (drift accumulates beyond 1km).
Related Chapters
Terrain Following (ArduPlane)
Fischer 26 can follow terrain contour at constant AGL using barometric altitude + pre-loaded DEM data. ArduPlane parameters for terrain following (verified in SITL):
Without GPS position, terrain following uses the estimated position from visual odometry + barometric altitude. Accuracy degrades with position drift — use terrain following only when position estimate is fresh (within 5 minutes of a visual landmark fix).
External source: Autopilot – Wikipedia
Sources
Parameter sources. BMP390 barometer with ±0.5 m accuracy — Bosch datasheet. PMW3901 optical flow sensor, working below 30 m AGL — PixArt datasheet. Gyroscope drift of approximately 1°/min without GPS correction — typical MEMS characteristic, consistent with ArduPilot EKF3 documentation. ArduPilot parameters (MAV_FRAME_LOCAL_NED, FRAME=6) — ArduPilot documentation. A* algorithm — Hart, Nilsson, Raphael (1968). Sweden DEM data — Lantmäteriet GSD50+ (open data).
Mathematically verifiable estimates. Swedish spruce maximum height 25 m (average) / 40 m (maximum) — forestry references. Camera footprint width at 120 m AGL: 60° FOV × 2 × tan(30°) × 120 m ≈ 140 m (one side) or 280 m (full frame) — basic trigonometry. The "300 m strip" figure is a rounded value from these calculations.
Operational estimates — not validated by FSG-A field testing. The "approximately 5 m at 500 m range" accuracy in SITL is a simulation result, not actual flight data. The 50–200 m drift over a 10-minute flight is an estimate based on typical EKF3 performance without GPS, not measured on the FSG-A drone platform. The 50 m AGL rural / 80 m AGL urban minimum-altitude thresholds are engineering choices, not calibrated against real overflight data. Optical flow "±2% of distance" accuracy is the PMW3901 specification, not measured by FSG-A in combat conditions. All these figures should be re-validated before operational use.
External standards and references. ArduPilot documentation. ExpressLRS documentation. NATO STANAG 4609 Ed. 4 (motion imagery metadata), STANAG 4671 (UAV airworthiness), and STANAG 2022 (intelligence source reliability). Specifically: Watling & Reynolds, "Meatgrinder: Russian Tactics", RUSI (2023); Bronk, Reynolds & Watling, "The Russian Air War and Ukrainian Requirements for Air Defence", RUSI (2022); ISW daily campaign assessments (understandingwar.org archive); CSIS Center for Strategic and International Studies Ukraine briefings. A* pathfinding algorithm (Hart, Nilsson, Raphael, 1968). Lantmäteriet GSD50+ DEM of Sweden (open data). MAVLink LOCAL_NED specification. FSG-A has no own terrain-following data — configuration is from ArduPilot documentation.