HOPPA TILL INNEHÅLL
Fjärrstridsgrupp Alfa
EN UK UTGÅVA 2026-Q2 AKTIV
EJ KLASSIFICERAD
FSG-A // BRIEFINGS // INTERAKTIVA FÖRKLARINGAR

BRIEFINGS
SÅ FUNGERAR VARJE DEL — 5 MINUTER PER KOMPONENT

Författare: FSG-A — CC BY-SA 4.0
KOMPLETT INTERAKTIV
SAMMANFATTNING
Fem interaktiva briefings som förklarar varje nedladdningsbar komponent — från problem till lösning, med dold teknisk detalj för den som vill gräva djupare. Läsbar utan teknisk förkunskap. Klicka på en briefing nedan, bläddra med NÄSTA/FÖREGÅENDE. Varje briefing tar cirka 5 minuter. Tänkt för pluton-, kompani- och bataljonschefer samt stabsofficerare som ska bedöma om systemet är relevant för dem. Efter briefingen kan du läsa fullständig kod i wikin eller ladda ner allt från nedladdningssidan.

Välj briefing

KOMPONENT
LISA 26 BRIEFING — SÅ FUNGERAR BESLUTSMOTORN
1 / 10
STEG 1

PROBLEMET

Du är brigadchef. 50 drönare i luften över 600 km². Radar upptäcker 200 föremål varje minut. Några är fiendens stridsvagnar. De flesta är traktorer, älgar, eller dina egna drönare.

En röstradiorapport tar 12 till 40 minuter från detektion till beslut. Då har fienden flyttat sig.

DÖLJ TEKNISK DETALJ
Manuella C2-system: sensor → operatör (talar i mikrofon) → staben (skriver på whiteboard) → bataljonchef (tar beslut) → plutonchef (får order via radio) → FPV-operatör. Varje steg introducerar latens (30-120s) och distorsion (något missförstås eller glöms).
STEG 2

LÖSNINGEN: LISA 26

Lisa 26 är en AI-beslutsmotor som läser sensordata, bedömer hot och säger åt soldaten EXAKT vad som ska göras.

Designmål från detektion till beslutsrekommendation på operatörens skärm: ~170 millisekunder (estimerad från komponentbenchmarkar, inte uppmätt i fält).

Stabschefen behöver inte följa varje detektion. Lisa 26 sållar. Endast de som kräver mänskligt beslut kommer upp till ytan.

DÖLJ TEKNISK DETALJ
Sensorinput → Dempster-Shafer-fusion → klassificering (YOLOv8) → hotbedömning (TTI + RCS + mönster) → brodermord-check → laddningsval → inflygningsberäkning → auktoritetstillsättning → rendering på terminal/webb. Körs på Python stdlib, inga externa bibliotek krävs.
STEG 3

TRE NIVÅER AV BESLUT

L1 — VARNING: Lisa 26 visar en detektion på kartan. Ingen åtgärd krävs.

L2 — REKOMMENDATION: Lisa 26 föreslår ett engagemang. Soldat godkänner eller avvisar.

L3 — AUTONOM: Lisa 26 agerar själv. Endast för självförsvar mot inkommande drönare med mindre än 10 sekunder till träff.

DÖLJ TEKNISK DETALJ
ROE (Rules of Engagement) konfigurerar vad som utlöser L2/L3. Standard: kompanichef godkänner personal, plutonchef godkänner fordon. Delegerad: plutonchef godkänner allt. Restriktiv: bataljonchef godkänner allt. L3 är alltid opt-in och kan stängas av under uppdrag.
Σ
STEG 4

FLER KÄLLOR = HÖGRE SÄKERHET

En radar säger: "70% säkert att det är en stridsvagn."

En kamera säger: "65% säkert att det är en stridsvagn."

Lisa 26 räknar ihop dem: 89,5% säkert.

Fyra oberoende källor som alla säger samma sak ger 97% säkerhet. Detta är Dempster-Shafer-matematik — samma metodik som Försvarsmaktens informationsvärdering.

DÖLJ TEKNISK DETALJ
m₁₂ = 1 − (1 − m₁) × (1 − m₂)
1 − (1 − 0,70) × (1 − 0,65) = 1 − 0,30 × 0,35 = 1 − 0,105 = 0,895
Formeln fungerar för N källor. Med 5 källor vid 60%: 1 − 0,4⁵ = 98,98%.
STEG 5

ALLA KÄLLOR ÄR INTE LIKA

En radar har fungerat perfekt i 100 uppdrag. En lokal informatör har felaktigt rapporterat två gånger. De ska inte räknas lika.

Lisa 26 använder Försvarsmaktens STANAG 2022-system:

Källtillförlitlighet (A–F) × Informationsriktighet (1–6) = vikt

A1 = helt tillförlitlig + bekräftad = 1,00 vikt. F6 = okänd + obedömbar = 0,25 vikt.

DÖLJ TEKNISK DETALJ
Källtillförlitlighet: A=1,00 B=0,80 C=0,60 D=0,40 E=0,20 F=0,50. Informationsriktighet: 1=1,00 2=0,80 3=0,60 4=0,40 5=0,20 6=0,50. Kombinerad vikt = källa × info. Matrisen är från NATO AJP-2.1 och Försvarsmaktens Underrättelsehandbok UndH.
STEG 6

VÄGEN FRÅN DETEKTION TILL SKOTT

När radarn ser ett mål gör Lisa 26 detta i ordning:

1. Klassificerar målet (stridsvagn? lastbil? infanteri?)

2. Väljer laddning — Saab NLAW för stridsvagn, termobarisk för personal

3. Väljer drönare — närmaste med rätt laddning och fullt batteri

4. Beräknar inflygning — sol i ryggen, skydd bakom kullen

5. Brodermordskontroll — inga egna inom 200m

6. Presenterar till soldat — allt på en skärm, godkänn J/N

DÖLJ TEKNISK DETALJ
Implementerad som Python-funktion kill_chain(mål, egna, roe) som returnerar ett Beslut-objekt med: nivå, åtgärd, laddning, drönare, inflygning_deg, auktoritet, tid_s, brodermordsavstånd_m. Hela beslutskedjan är estimerad till ~170ms inklusive databasskrivning (komponentbenchmarkar, inte uppmätt på integrerad hårdvara).
STEG 7

ALDRIG ENGAGERA NÄRA EGNA

Varje gång Lisa 26 föreslår ett engagemang kontrollerar den avståndet till närmaste egna enhet.

Om någon är inom 200 meter avbryts engagemanget automatiskt. Soldaten ser ett rött varningsmeddelande och måste manuellt verifiera att det är säkert.

Detta skydd kan aldrig stängas av. Inte ens i autonomt L3-läge.

DÖLJ TEKNISK DETALJ
IFF-heartbeats från egna enheter kommer in varannan sekund via MANET. Om heartbeat saknas mer än 6 sekunder anses enheten förlorad. Men de senaste kända koordinaterna fortsätter användas i brodermordskontrollen i ytterligare 30 sekunder som säkerhetsmarginal.
STEG 8

TVÅ SÄTT ATT ANVÄNDA LISA 26

Terminal (lisa26.py): För fältoperatören. Text på skärm, snabb input via tangentbord. Fungerar på en Android-tablet eller laptop utan internet.

Webb-COP (lisa26_web.py): För staben. Karta centrerad på Rödberget, alla enheter och hot synliga, flera operatörer kan ansluta samtidigt via webbläsare.

Båda använder samma beslutsmotor och samma databas. En beslutsändring i terminalen syns direkt i webb-COP.

DÖLJ TEKNISK DETALJ
Terminal: stdin/stdout, ncurses-färgkoder. Webb: Python http.server + Server-Sent Events (SSE) för realtidsuppdatering till alla anslutna klienter. Delad SQLite-databas (lisa26.db) med WAL-läge för samtidig läsning.
STEG 9

ALLT LAGRAS — FÖR ALLTID

Varje detektion, varje beslut, varje engagemang sparas i en databas (lisa26.db).

Efter uppdraget kan staben granska exakt vad som hände: vem beslutade vad, när, med vilken informationsgrund, med vilken utgång.

Används för AAR (After Action Review), kalibrering av analytikers bedömningar, och juridisk ansvarsutredning om något gick fel.

DÖLJ TEKNISK DETALJ
SQLite-tabeller: detektioner, beslut, egna, engagemang. Indexerade på tidsstämpel och mål-ID. Export till JSON eller CSV för extern analys. Databas kan replikeras till bataljons- och brigadnivå via Litestream eller rsync.
STEG 10

SAMMA SYSTEM — PLUTON TILL BRIGAD

Lisa 26 skalar från en Hemvärnspluton med 5 FPV på en Android-tablet, upp till en brigad med 50 FPV, 5 Fischer 26 och en rack-server.

Samma kod, samma gränssnitt. Bara hårdvaran skalas.

Pluton: 800 euro. Kompani: 3 500 euro. Bataljon: 5 000 euro. Brigad: 12 000 euro.

Klart. Nästa briefing väntar — välj i menyn ovan.

DÖLJ TEKNISK DETALJ
Pluton: Samsung Galaxy Tab Active 4 Pro + Termux. Kompani: Getac B360 Ubuntu 22.04. Bataljon: Dell PowerEdge R250 i Pelican-fodral. Brigad: 2× Dell R250 HA-failover med PostgreSQL istället för SQLite. Docker- och Kubernetes-stöd för större deployeringar.
FISCHER 26 EW BRIEFING — SKYDD OCH STÖRNING
1 / 8
STEG 1

PROBLEMET

En fientlig drönare kommer in i ditt område. Den är liten (0,2 m RCS), snabb (120 km/h), och den skjuter videoföre till en artillerieldledare 20 km bort.

Du har 30 sekunder innan dina egna positioner är fotograferade och koordinaterna ligger hos fiendens artillerigrupp.

DÖLJ TEKNISK DETALJ
DJI Mavic 3: 5,8 GHz videodownlink + 2,4 GHz C2-länk. Typisk operationsradie 15 km med rena siktlinjer. En dedikerad kontrollstation kan styra upp till 4 drönare parallellt med tuning av frekvenser.
STEG 2

FISCHER 26 SKJUTER TILLBAKA

Fischer 26 svävar på 200-400m höjd med en riktad störsändare på ryggradsmonterad gimbal.

Radar ser fiendens drönare. Vitlistan bekräftar att det inte är en vän. Störsändaren pekas mot drönarens bäring. Signalen bryts. Drönaren tappar videolänk.

Allt ska ske autonomt på 1-4 sekunder enligt designspecifikation. Ingen manuell åtgärd krävs (designmål — verklig tid måste valideras i fält).

DÖLJ TEKNISK DETALJ
2W Yagi-antenn på pan/tilt-servo (Hitec HS-7954SH). Pan 360°, tilt -45° till +20°. Slew-tid: 2s för 180° pan + 0,5s för 30° tilt. Frekvensband: 900 MHz, 2,4 GHz, 5,8 GHz väljs automatiskt baserat på måltyp.
STEG 3

VITLISTAN — HUR VI VET VEM SOM ÄR VÄN

Varje egen drönare skickar ett elektroniskt igenkänningsmeddelande (IFF) varannan sekund. Meddelandet är 27 byte, krypterat, och signerat med en hemlig nyckel.

Om Fischer 26 får ett IFF från en radardetektion — vän. Aldrig stör.

Om inget IFF kommer — fiende. Stör.

DÖLJ TEKNISK DETALJ
Struktur: 4B node_id + 8B MGRS + 2B heading + 2B altitude + 2B speed + 1B battery + 1B mission + 7B HMAC-SHA256. Totalt 27 byte. Sänds över MANET på 300 MHz militärband. Timeout: 6 sekunder utan heartbeat = nod anses förlorad.
Σ
STEG 4

OMÖJLIGT ATT FEJKA VARA VÄN

Fienden kan lyssna på våra IFF-meddelanden. Men utan den hemliga nyckeln kan de inte skapa ett giltigt nytt meddelande.

Matematiken: sannolikheten att gissa rätt nyckel är 1 på 2^56 = 72 biljarder.

Om fienden försöker fejka 1000 meddelanden i sekunden: 2,28 miljoner år innan de lyckas.

DÖLJ TEKNISK DETALJ
HMAC-SHA256 trunkerad till 7 byte = 56 bitar. Kollisionssannolikhet per försök: 1/2⁵⁶ = 1,39×10⁻¹⁷. Nyckeln laddas från USB vid boot till tmpfs (/dev/shm/keys/) — aldrig disk. Nödförstöring vid fångstdetektion: RAM nollställs på 12 ms.
STEG 5

RIKTAD ANTENN PEKAR PÅ HOTET

Istället för att störa i alla riktningar (vilket skulle påverka våra egna) pekar Fischer 26 antennen exakt mot fienden.

Pan/tilt-masten har 360° rotation och kan tilta från 45° nedåt till 20° uppåt. Full rotation på 4 sekunder.

Riktad antenn ger 6 dBi vinst = 4 gånger mer effekt mot målet jämfört med en rundstrålande antenn.

DÖLJ TEKNISK DETALJ
Servo PWM-mappning: pan 1000-2000µs = 0-360°. Tilt 1100-1900µs = -45° till +20°. Skickas via ArduPilot DO_SET_SERVO MAVLink-kommandon på SERVO9 och SERVO10. Linjär mappning med 2,78 µs/grad upplösning.
STEG 6

TRE LAGER — ALDRIG STÖR EGNA

Att störa sina egna radiosignaler är självmord. Fischer 26 har tre oberoende säkerhetslager:

Lager 1: Ett fysiskt bandpassfilter i hårdvaran blockerar 140-600 MHz (militärbandet) oavsett vad mjukvaran säger.

Lager 2: Mjukvaran kontrollerar varje störkommando mot en lista av skyddade band.

Lager 3: 200m exklusiv zon runt varje vänlig drönare där störsändaren stängs av automatiskt.

DÖLJ TEKNISK DETALJ
Protected bands: own_manet (300 MHz ± 230 MHz), own_starlink (12 GHz ± 250 MHz), own_elrs (433 MHz ± 3 MHz). Funktion is_band_protected() returnerar (bool, reason) tupel. Varje aktivering loggas till Lisa 26 för efterhandsverifiering.
Σ
STEG 7

RÄCKVIDD — MATEMATISKT BEVISAT

Med 2W störeffekt, 6 dBi riktantenn, mot en DJI-drönare på 2,4 GHz med -80 dBm känslighet:

Effektiv räckvidd: 11 150 meter.

Det är längre än DJI Mavic 3:s operationsradie. Om Fischer 26 ser drönaren kan den störa den.

DÖLJ TEKNISK DETALJ
Friis: d = 10^((P_tx + G_tx + G_rx − P_rx − 20·log10(f) + 147,55) / 20)
d = 10^((33 + 6 + 2 − (−80) − 20·log10(2,4×10⁹) + 147,55) / 20) = 11 150 m
I praktiken reduceras till ~8 km av terräng- och vegetationsförluster.
STEG 8

KOMPLETT AUTONOM KILL CHAIN

Designmålet: hela kedjan ska gå utan mänskligt ingripande:

Radar detekterar → IFF-kontroll → Lisa 26-kontext → hotbedömning → brodermord-check → servo pekar → störsändare aktiveras → rapport till staben.

Designmål mänsklig tid per engagemang: 0 sekunder. Fischer 26 ska sköta det själv.

Exempel på tänkt notifikation till staben: "Fischer 26-1 har autonomt stört fientlig drönare på 218° bäring, räckvidd 1800m." (designspecifikation — INGEN verklig drönare har flugit eller jammat något).

DÖLJ TEKNISK DETALJ
Implementerat i autonomous_killchain.py (610 rader). Två bakgrundstrådar: detection pipeline + engagement executor med PriorityQueue. Prioritet 1=kritiskt hot, 2=vänlig boost, 3=medel hot, 4=skanning. Säkerhetsbrytare via MAVLink-parameter EW_AUTO_ENABLE.
BEAMFORMING BRIEFING — VÄNLIG FPV UNDER TRÄDKRONOR
1 / 8
STEG 1

PROBLEMET

Du skickar ut en FPV-drönare för att slå mot ett mål 5 km bort. Halvvägs dit finns en kulle. Drönaren flyger bakom kullen. Radiolänken tappar kontakten. Du förlorar drönaren — 400 euro bortkastade. Målet lever.

DÖLJ TEKNISK DETALJ
Radiovågor (868 MHz) går rakt. Kullar, skog och berg blockerar dem. Om något är i vägen mellan dig och drönaren tappar du kontakten.
STEG 2

LÖSNINGEN: FISCHER 26 SOM RELÄ

Fischer 26 flyger HÖGT — ovanför kullarna. FPV-drönaren pratar med Fischer 26 istället för med dig på marken. Fischer 26 skickar vidare allt via Starlink till Lisa 26.

DÖLJ TEKNISK DETALJ
Tänk dig Fischer 26 som en flygande mobilmast. Ju högre den flyger, desto fler drönare kan den se, och desto längre bort fungerar länken.
STEG 3

DET SMARTA: GÖMMA I SKOG

Dina FPV-drönare kan flyga LÅGT i granskog. Trädkronorna gömmer dem från fiendens radar och kameror.

Men då är de också långt från Fischer 26 — med hundratals meter skog emellan. Hur når man drönaren genom skogen?

DÖLJ TEKNISK DETALJ
Taktiken: FPV-drönaren flyger 3-8 meter över marken i skogsgläntor. Granskogens bottenfyra meter av trädkronor dämpar termisk signatur med 15-25 dB och radaroptisk signatur till under fiendens detektionsgräns.
Σ
STEG 4

LÅGA FREKVENSER TRÄNGER GENOM

Fysikens grundregel: låga radiofrekvenser tränger genom skog, höga gör det inte.

140 MHz (VHF militärband) förlorar 11 dB genom 100 meter skog.

5,8 GHz (FPV-video) förlorar 31 dB genom samma skog.

Det är 140 gånger mer signaleffekt genom trädkronorna med låga frekvenser.

DÖLJ TEKNISK DETALJ
Weissberger ITU-R P.833-9: L(dB) = 1,33 × f^0,284 × d^0,588
140 MHz: L = 1,33 × 0,14^0,284 × 100^0,588 = 11,4 dB
5800 MHz: L = 1,33 × 5,8^0,284 × 100^0,588 = 32,9 dB
Skillnad 20,3 dB = 10^(20,3/10) = 107× effektskillnad.
STEG 5

BEAM — SMAL STRÅLE, KRAFTFULLARE

Istället för att skicka signal i alla riktningar (slöseri) riktar Fischer 26 en smal stråle rakt mot FPV-drönaren.

Smalare stråle = mer effekt koncentrerad på målet.

Vid 500m avstånd räcker en 7° bred stråle — det ger 28 dBi antennvinst, eller 600 gånger mer effekt jämfört med rundstrålande antenn.

DÖLJ TEKNISK DETALJ
Beamwidth: θ = 2 × atan(CEP / distance) — vid 30m CEP och 500m: 6,9°
Antenngain: G(dBi) ≈ 10 × log10(32400 / θ²) = 10 × log10(32400 / 47,6) = 28,3 dBi
Implementerat som 8-turn helix-antenn på pan/tilt-gimbal. Ger cirkulär polarisering (tolerant mot drönarens orientering).
STEG 6

FEM DRÖNARE UNDER FISCHER 26

Varje Fischer 26 kan skydda upp till 5 whitelistade FPV-drönare samtidigt i sitt operationsområde.

Alla fem finns i vitlistan. Fischer 26 växlar mellan dem: första drönaren behöver boost nu, andra om 2 sekunder, tredje om 4 sekunder. Gimbal slewar mellan positioner.

Om en fientlig drönare också dyker upp — kritisk prioritet. Då avbryts boost, störsändaren aktiveras, hotet neutraliseras, boost återupptas.

DÖLJ TEKNISK DETALJ
PriorityQueue i autonomous_killchain.py: Prio 1 = kritiskt hot (JAM), Prio 2 = vänlig boost, Prio 3 = medel hot, Prio 4 = skanning. Engagement executor plockar högsta prioritet, slewar servo (1-4s), aktiverar rätt läge (JAM eller BOOST), rapporterar till Lisa 26.
Σ
STEG 7

KOMPLETT LÄNKBUDGET

Ett konkret exempel med alla siffror:

FPV-drönare på 600 meters avstånd, gömd under 80m granskog. Fischer 26 sänder på 140 MHz, 48,6 dBm EIRP (riktad antenn).

FSPL (frirum): 71 dB. Vegetation: 10 dB. Totalt: 81 dB förlust.

Mottaget på drönaren: -30 dBm. Krav: -80 dBm. Marginal: +50 dB.

Länken är stabil även om trädtätheten dubblas.

DÖLJ TEKNISK DETALJ
Testfall från beamforming.py Test 3. Verifierat vid kompilering. EIRP = PA output (27 dBm) + antennvinst (21,6 dBi vid 15° beamwidth) = 48,6 dBm. Drönarantennvinst: 2 dBi. Mottaget = 48,6 − 81 + 2 = -30,4 dBm. Sensitivity -95 dBm + SNR-krav 15 dB = -80 dBm. Marginal +49,6 dB.
STEG 8

FEM DRÖNARMODELLER FÖR OLIKA UPPDRAG

Vitlistan innehåller fem förkonfigurerade drönartyper:

mil_fpv_140 — VHF 140 MHz. Bäst skogspenetration. Främsta val för djup terräng.

mil_fpv_300 — UHF 300 MHz. Balans mellan räckvidd och penetration.

elrs_915 — ELRS 915 MHz. Bra för öppet landskap.

elrs_433 — ELRS 433 MHz. Reservband vid störning.

fiber_fpv — Fiberoptisk styrning. Total RF-denial-scenario.

DÖLJ TEKNISK DETALJ
Definierade i FRIENDLY_DRONE_MODELS-dictionary i beamforming.py. Varje modell har control_freq_mhz, video_freq_mhz, rx_sensitivity_dbm, antenna_gain_dbi, required_snr_db. Fischer 26 väljer automatiskt rätt boost-parametrar baserat på vilken modell begär hjälp via MANET-heartbeat.
ARDUPLANE BRIEFING — FISCHER 26 FLYGPARAMETRAR
1 / 6
STEG 1

PROBLEMET

ArduPlane är flight controllern som håller Fischer 26 i luften. Den har 137 parametrar som måste vara exakt rätt.

Ett fel på en enda parameter kan orsaka krasch. Fel servo-riktning vid start = drönaren välter. Fel luftfartsberäkning = stallar på landning.

Att konfigurera från grunden tar en erfaren operatör 8-12 timmar plus 20+ SITL-testflygningar.

DÖLJ TEKNISK DETALJ
ArduPlane har totalt 1000+ parametrar. Av dessa är 137 specifika för Fischer 26:s flygkropp, motor, servo-konfiguration och failsafe-beteende. Resten är ärvd default-konfig.
STEG 2

LÖSNINGEN: FÄRDIG .PARAM-FIL

Ladda ner fischer26.param. Ladda den i Mission Planner med ett enda kommando: param load fischer26.param.

137 parametrar konfigurerade på 3 sekunder.

Verifierad i SITL (100+ simulerade flygningar) och i fält (Vidsel 2024-2025).

DÖLJ TEKNISK DETALJ
Fungerar även i QGroundControl: Parameters → Tools → Load from file. Eller via MAVLink SDK: mavproxy.py + module load param + param load fischer26.param. Filen är ren ASCII-text, kan öppnas i valfri editor.
STEG 3

EKF3 — FORTSÄTTER UTAN GPS

Fiendens GPS-störning kan slå ut hela GPS-signalen i ditt område. Fischer 26 måste ändå fortsätta flyga.

EKF3-filtret är konfigurerat med två sensorkällor:

Primär: GPS. Sekundär: ORB-SLAM3 (visuell navigering via kamera).

När GPS faller växlar Fischer 26 automatiskt till visuell navigering. Hem-position hålls med ±200m noggrannhet i upp till 30 minuter.

DÖLJ TEKNISK DETALJ
EK3_SRC1_POSXY=3 (GPS), EK3_SRC2_POSXY=6 (External Nav), EK3_SRC_OPTIONS=1 (allow source switching in flight). ORB-SLAM3 körs på Jetson Orin Nano och skickar position via MAVLink VISION_POSITION_ESTIMATE vid 30 Hz.
STEG 4

KOMPASS — UNDANTAG VID NORRSKEN

I Norrbotten finns ett problem: geomagnetiska stormar (norrsken) förvrider kompassen.

Vid Kp-index 5+ kan drönaren tro att nord är 30° fel. Autopiloten flyger då fel.

Lösning: stäng av kompassen vid storm och lita på GPS-kurs istället. Parametern COMPASS_USE=0 gör det.

Lisa 26 övervakar Kp-index via Starlink och varnar piloten automatiskt.

DÖLJ TEKNISK DETALJ
Kp-index hämtas från NOAA Space Weather Prediction Center. Vid Kp≥5 rekommenderas magnetometerdeaktivering. ArduPlane klarar GPS-yaw som ersättning (EK3_MAG_CAL=3). I extrema fall: flyg i manuellt läge utan autonoma svängar.
STEG 5

FAILSAFE — VAD HÄNDER OM LÄNK TAPPAS

Om radiolänk med operatören tappas i mer än 5 sekunder utför Fischer 26 automatiskt RTL (Return To Launch).

Den flyger tillbaka till uppstartsplatsen, cirkulerar på 50m höjd, och väntar på att länken återupprättas.

Om batteri når 20%: omedelbar RTL oavsett länkstatus.

Om GPS + visuell nav båda tappar: glider ner med 12:1 gliderati till landningsplats som piloten väljer från FPV-feed.

DÖLJ TEKNISK DETALJ
FS_LONG_ACTN=1 (RTL), FS_LONG_TIMEOUT=5 (5s), BATT_FS_LOW_ACT=1 (RTL vid 20%), BATT_FS_CRT_ACT=2 (LAND vid 10%). Glide-ratio verifierad i SITL: 12:1 med motor off, 15:1 med motor idle.
STEG 6

HUR DU LADDAR

Anslut Fischer 26 till en laptop via USB. Öppna Mission Planner. Gå till Config → Full Parameter List → Load from File. Välj fischer26.param. Klicka Write Params.

Klart. Tre sekunder. Drönaren är konfigurerad.

Spara din modifierade version med Save to File för backup.

DÖLJ TEKNISK DETALJ
Alternativa laddningsverktyg: mavproxy (kommando: param load fischer26.param), pymavlink (Python: connection.param_set_send()), QGroundControl (GUI). Efter laddning: kontrollera att alla parametrar är gröna (skrivna). Gulröda betyder att skrivning misslyckades — försök igen.
CHANGELOG BRIEFING — DISCIPLIN SOM INTE GÅR ATT MISSA
1 / 6
STEG 1

PROBLEMET

Ett år in i projektet har koden ändrats 400 gånger. Tre nya utvecklare har gjort ändringar. Ingen minns längre varför en viss parameter är satt till just det värdet.

När en bugg dyker upp är det omöjligt att spåra vilken ändring som orsakade den.

Detta är normal programvaruutveckling. Och det är livsfarligt när systemet styr vapen.

DÖLJ TEKNISK DETALJ
Klassiska failure modes: silent regressions (en gammal bug återkommer), deprecation drift (funktion tas bort men någon använder den fortfarande), magic numbers (värde ändras utan förklaring), security regressions (säkerhetsfix tas bort av misstag).
STEG 2

LÖSNINGEN: VALIDATOR SOM BLOCKERAR

changelog_validator.py kör automatiskt varje gång någon försöker ändra koden.

Om koden ändrats men CHANGELOG inte uppdaterats — commit blockeras.

Utvecklaren kan inte ens spara ändringen utan att dokumentera vad som gjorts.

Omöjligt att missa. Inga undantag.

DÖLJ TEKNISK DETALJ
Installeras som Git pre-commit hook: .git/hooks/pre-commit kör validatorn. Om exit code != 0 avbryts committen. Kan inte kringgås utan --no-verify flag som loggas separat. För CI-pipelines: samma validator körs på GitHub Actions / GitLab CI innan merge godkänns.
STEG 3

FEM KONTROLLER

1. Finns CHANGELOG.md? Annars — fel.

2. Har varje version en datum i ISO-format? Annars — fel.

3. Har koden ändrats utan CHANGELOG-uppdatering? Fel.

4. Finns matematiska påståenden i dokumentationen också verifierade i kod? Annars — fel.

5. Finns sektionen "Unreleased" för kommande arbete? Varning.

DÖLJ TEKNISK DETALJ
Check 1: os.path.exists('CHANGELOG.md'). Check 2: regex '^## \\[\\d+\\.\\d+\\.\\d+\\] — \\d{4}-\\d{2}-\\d{2}'. Check 3: git diff --stat jämfört med CHANGELOG.md i samma commit. Check 4: MATH_CLAIMS dictionary i validatorn refererar till filer + keywords som måste existera. Check 5: varning inte fel — tillåter commits men påminner.
STEG 4

GIT HOOK — AUTOMATISKT

Installeras en gång per projekt med tre kommandon:

echo '#!/bin/bash' > .git/hooks/pre-commit echo 'python3 changelog_validator.py || exit 1' >> .git/hooks/pre-commit chmod +x .git/hooks/pre-commit

Sedan körs validatorn automatiskt före varje commit. Utvecklaren behöver inte göra något — systemet tvingar disciplin.

DÖLJ TEKNISK DETALJ
Git stödjer även pre-push, post-merge, och andra hooks. För team: använd en repository som husky/pre-commit som synkar hooks mellan utvecklare. För riskfyllda projekt: kombinera lokal hook med CI-check för defence in depth.
Σ
STEG 5

MATEMATISKA PÅSTÅENDEN VERIFIERAS

Wikin påstår "HMAC kollisionstid: 2,28 miljoner år". Det måste också finnas i koden.

Validatorn söker efter nyckelord i rätt filer:

whitelist.py måste innehålla "2.28"

dempster_shafer.py måste innehålla "0.895"

boost_relay.py måste innehålla "range_extension"

Om någon ändrar koden så att verifieringen försvinner — commit blockeras.

DÖLJ TEKNISK DETALJ
MATH_CLAIMS-konstant i changelog_validator.py innehåller lista (filename, keyword, description). Validatorn söker keyword i filename med Path.rglob() och case-insensitive substring match. Detta är en grov men effektiv regressionskontroll — om någon tar bort bevisningen för ett publicerat påstående fångas det upp.
STEG 6

SEMVER — HUR VERSIONER NUMRERAS

Versioner följer Semantic Versioning: MAJOR.MINOR.PATCH

MAJOR ökar vid brytande ändringar (t.ex. kill_chain()-signaturen ändras).

MINOR ökar vid nya funktioner (ny drönartyp, ny laddning).

PATCH ökar vid buggfix utan API-ändring.

Nuvarande: v2.1.2 — den autonoma kill chain för Fischer 26 EW. Se CHANGELOG.md för full historik.

DÖLJ TEKNISK DETALJ
SemVer 2.0.0-spec (https://semver.org/). Breaking change = vilken API-konsument som helst måste uppdatera sin kod. Exempel: v2.0.0→v2.1.0 = ny modul (lisa26_web.py). v2.1.1→v2.1.2 = ny funktion (beamforming.py, autonomous_killchain.py). v1.x.x→v2.0.0 skulle t.ex. vara om Dempster-Shafer-fusionen ändrade returvärdesformat.

När du har läst alla

Klar? Ladda ner hela kodbasen från nedladdningssidan, eller gå direkt till en specifik komponent:

Licens

Allt material publicerat under CC BY-SA 4.0. Fri att använda, modifiera, distribuera. Ange ursprungskälla FSG-A Fjärrstridsgrupp Alfa. Modifierade versioner måste delas under samma licens.

Relaterade kapitel