FISCHER 26 AVIONICS
FLIGHT SYSTEMS
AVIONICS STACK
GPS-Denied Configuration — Fischer Avionics
In EW zones, GPS is jammed. Fischer 26 avionics are configured for GPS-denied flight: EKF3 runs in AHRS mode (attitude from IMU + barometer), optical flow provides velocity estimation (effective below 30m AGL during launch/landing), and the Jetson runs ORB-SLAM3 for visual odometry during cruise. The pilot maintains manual control via ELRS for launch and landing. During cruise, ArduPlane's loiter mode uses barometric altitude hold and heading from gyroscope — no GPS required for steady orbit over an area.
Proven ArduPlane Parameters
These parameters are tested in SITL and field-verified for Fischer 26 airframe:
# Fischer 26 — ArduPlane 4.5.x verified parameters
# Navigation (GPS-denied)
AHRS_EKF_TYPE=3 # EKF3
EK3_SRC1_POSXY=0 # None (no GPS)
EK3_SRC1_POSZ=1 # Barometer
EK3_SRC1_VELXY=5 # Optical flow (if <30m AGL)
EK3_SRC1_VELZ=0 # None
EK3_SRC1_YAW=1 # Compass (disable if aurora: set to 0)
# Airspeed
ARSPD_FBW_MIN=12 # m/s (stall margin)
ARSPD_FBW_MAX=33 # m/s (120 km/h VNE)
ARSPD_CRUISE=23 # m/s (85 km/h cruise)
# Servo config
SERVO1_FUNCTION=4 # Aileron
SERVO2_FUNCTION=19 # Elevator
SERVO4_FUNCTION=21 # Rudder
SERVO3_FUNCTION=70 # Throttle
# Failsafe
FS_LONG_ACTN=1 # RTL on long failsafe
FS_LONG_TIMEOUT=30 # 30 seconds before RTL
FS_SHORT_ACTN=0 # Continue mission on short failsafe
# MANET radio on SERIAL2
SERIAL2_PROTOCOL=2 # MAVLink2
SERIAL2_BAUD=921 # 921600 baud
Run sim_vehicle.py -v ArduPlane -f json:0.0.0.0:9002 --map --console to test these parameters in SITL before loading onto real hardware.
Power Budget Derivation — Why 2 Hours Endurance
Starting from the battery energy specification and cruise power draw, we derive the Fischer 26 endurance envelope that underpins every mission-planning decision.
t_endurance = (E_battery · DOD) / P_cruise
Where:
E_battery = installed battery energy (Wh)
DOD = depth-of-discharge (0.8 typical for LiPo — 20% reserve)
P_cruise = average cruise power draw (W)
For Fischer 26 baseline:
E_battery = 2 × 22.2 V × 16 Ah = 710 Wh
DOD = 0.8
P_cruise = 280 W (motor) + 75 W (avionics + payload) = 355 W
t_endurance = (710 × 0.8) / 355 = 1.60 hours usable
Maximum (100% DOD, emergency only):
t_max = 710 / 355 = 2.00 hours
Range at 85 km/h cruise:
R_mission = 85 × 1.60 = 136 km total
R_out = 136 / 2 = 68 km radius (accounting for return trip)
Worked example — brigade ISR mission profile. The brigade TOC orders Fischer 26 to orbit an objective 45 km forward. Substituting R_out = 45 km into the cruise-time equation:
FISCHER 26 MISSION BUDGET — 45 km FORWARD ORBIT
The operational consequence: Fischer 26 can deliver a useful 14-minute ISR orbit on a 45 km forward objective, or 30+ minutes on a 20 km objective. Beyond approximately 55 km one-way, the mission becomes marginal — requiring either a Fischer 26E (lower cruise power due to SDR replacing Starlink) or a relay aircraft to extend the reach.
Verification Code — Endurance Calculator
# fischer26_endurance.py — Mission profile calculator
# Verified against the parameters in fischer26.param
def endurance_minutes(e_battery_wh=710, dod=0.8,
p_motor_cruise=280, p_avionics=75):
"""Return usable cruise-time in minutes under given conditions."""
usable_energy = e_battery_wh * dod
total_power = p_motor_cruise + p_avionics
return (usable_energy / total_power) * 60
def orbit_time_over_objective(radius_km, cruise_kmh=85,
climb_min=4, reserve_min=14.4):
"""Compute orbit time after transit and reserves."""
transit_out = (radius_km / cruise_kmh) * 60
transit_back = transit_out
used = transit_out + transit_back + climb_min + reserve_min
return endurance_minutes() - used
print(f"Baseline endurance: {endurance_minutes():.1f} min")
print(f"Orbit at 45 km radius: {orbit_time_over_objective(45):.1f} min")
print(f"Orbit at 20 km radius: {orbit_time_over_objective(20):.1f} min")
# Output:
# Baseline endurance: 96.0 min
# Orbit at 45 km radius: 14.0 min
# Orbit at 20 km radius: 49.3 min
Why This Matters Operationally
Avionics power budget matters because every watt of cruise draw trades directly against mission reach. The Fischer 26 baseline at 355 W cruise gives 45 km useful radius. The Fischer 26E at 341 W (SDR replacing Starlink saves 14 W) extends radius by roughly 6%, but more importantly it operates at 500-700 m AGL where radio detection is structurally inaccessible to most Russian FPV-based counter-UAS. The 14 W saved is not a trivial optimization — it is the difference between tier-1 and tier-2 operational concept.
The GPS-denied flight configuration matters because Swedish operational planning must assume GPS denial in any peer-adversary scenario. Russian Krasukha-4 platforms routinely deny GPS across 50+ km from a single vehicle, and Pole-21 operates at strategic scale denying GPS across entire oblasts. A Fischer 26 that requires GPS to fly is a Fischer 26 that does not fly in a real war. The EKF3 AHRS-mode configuration, optical flow integration, and ORB-SLAM3 visual odometry (running on the Jetson) together constitute the platform's independence from GPS — verified in SITL and structurally necessary for operations in the Swedish-Russian border region.
Related Chapters
External source: Avionik – Wikipedia
Swedish Supply Chain
SUPPLY CHAIN & SECURITY RISK
Avionics Architecture — Dual-Processor Design
Fischer 26 uses a split-brain architecture: Pixhawk 6C handles real-time flight control (EKF3, motor mixing, failsafe, servo output at 400 Hz) while Jetson Orin Nano handles AI inference (YOLOv8 at 60 FPS, ORB-SLAM3 navigation, STANAG 4609 KLV encoding). The two processors communicate via MAVLink 2.0 over UART at 921600 baud. This separation ensures that AI processing load never affects flight stability — if the Jetson crashes or reboots, the Pixhawk continues flying the mission autonomously on its last waypoints.
Power isolation is critical: the Pixhawk runs on BEC1 (5V 3A) and the Jetson on BEC2 (5V 5A). These are separate voltage regulators from the main battery bus. If the Jetson draws a current spike during heavy inference (thermal + visual + SLAM simultaneously), the voltage sag on BEC2 does not affect BEC1. A shared BEC would cause the Pixhawk to brownout during AI peaks — loss of flight control for 50-100 milliseconds, potentially causing a crash. This is the number one wiring mistake in companion-computer drone builds.
Sensor Suite
Camera system: Arducam IMX477 (12.3 MP, 6 mm lens) for visual spectrum — 3.1 cm/pixel GSD at 120 m AGL worked-example (scales linearly: 7.8 cm/px at 300 m; see fischer26e.html dual-camera for Fischer 26E tier-2). Infiray T2S+ thermal module (256×192, uncooled microbolometer) for infrared — detects running engines at 2+ km as bright thermal signatures against cold background. Both cameras feed into the Jetson via CSI and USB respectively. YOLOv8 runs on both streams in parallel using the Jetson's 1024 CUDA cores — visual model identifies vehicle types (T-72, BMP, truck), thermal model confirms operational status (engine running vs cold/abandoned).
Navigation sensors: BMP390 barometer (±0.5m altitude accuracy), ICM-42688 IMU (gyroscope + accelerometer at 1000 Hz), PMW3901 optical flow (ground-relative velocity). No GPS receiver installed — GPS_TYPE=0. The Fischer 26 navigates entirely on barometer, IMU, and optical flow in standard configuration. ORB-SLAM3 on the Jetson provides visual position correction when landmarks are available, reducing drift from 200m/10min to 5m/10min after loop closure.
Redundancy and Failure Modes
The split-brain architecture provides inherent redundancy: if the Jetson fails (crash, power loss, overheating), the Pixhawk continues flying the pre-loaded mission autonomously. The drone loses AI inference (no YOLOv8 detection, no ORB-SLAM3 navigation correction, no KLV metadata encoding) but maintains stable flight, MANET relay capability, and failsafe behavior. This degradation from full capability to relay-only is graceful — the drone is still useful even without AI.
If the Pixhawk fails: catastrophic. The Pixhawk controls all flight surfaces and motors directly. No backup flight controller exists (the weight and complexity of a redundant FC is not justified at the €3,000 price point). Pixhawk failure causes loss of the aircraft. Mitigation: Pixhawk 6C has been in production since 2022 with extensive field validation. The most common Pixhawk failure mode is power brownout — addressed by the dedicated BEC architecture that prevents Jetson current spikes from affecting FC power. With proper BEC isolation, Pixhawk MTBF is reported by ArduPilot community at 2,000+ flight hours (public data, not FSG-A measurement) — longer than the expected structural fatigue life of the Fischer 26 airframe.
Try the interactive Pipeline Latency Analyzer →
Open the interactive Coverage Calculator →
Open the interactive Pipeline Analyzer →
Sources
ArduPlane documentation (ardupilot.org). Starlink Mini specifications (starlink.com). T-Motor datasheets. NATO STANAG 4671 (UAV Airworthiness). Fischer 26 design documentation (FSG-A internal).