How fungerar ADS-B kompakt positionsrapport NL () funktionen?

12

Jag försöker avkoda ADS-B-meddelanden för ett skolprojekt, och jag kan inte reproducera resultaten från NL () -funktionen som beskrivs i det här dokumentet. Jag har sett samma formel i flera andra dokument. Också i detta dokument är omvänden av denna funktion - NL är inmatad, och latitud "gränsen" är resultatet. Jag kan inte lösa det heller.

Jag har provat radianer och grader för trigfunktionerna och flera olika beräkningsverktyg, och mitt resultat är aldrig nära korrekt.

De "kända" goda ingångarna och resultatet är från detta dokument. Jag har också sett dessa inmatningar och resultat någon annanstans, men inga detaljer om ekvationen själv.

Sammanfattningen av den "kända" goddatasatsen är:

$ rLat = 10.2157745361328 $

$ NZ = 60 $

$ NL = 59 $

Ekvationen är:

$$ NL = int \ left (2 \ pi \ left [arccos \ left (1 - {1 - cos \ left ({\ pi \ över 2NZ} \ right) \ över cos ^ 2 \ left ({2 \ pi \ över 180 } \ mid lat \ mid \ right)} \ right) \ right] ^ {- 1} \ höger) $$

Kan någon hjälpa mig att förstå denna beräkning?

    
uppsättning Kevin 04.05.2014 16:42

1 svar

10

Kompakt positionsrapportering (CPR) är ett sätt att minska antalet bitar som behövs för att överföra positionen samtidigt som den håller höglägesupplösning (~ 5,1 meter för luftburet kodning). Ordinär kodning skulle kräva 45 bitar, men CPR använder 35 bitar och sparar således 10 bitar. För att göra så är världen uppdelad i ett antal zoner, både för latitud och longitud och positionen inom zonen är kodad. Eftersom sändning av zonnumren skulle kosta så många bitar som det skulle ha sparats används ett smart trick. Två typer av kodning används, var och en med ett annat antal zoner. Från skillnaden i zinkoordinater mellan de två typerna av kodning kan man bestämma vilken zon flygplanet är. Därför måste man ta emot ett jämnt och ett udda kodat meddelande inom 10 sekunder från varandra. När den första positionens avkodning är framgångsrik kommer varje efterföljande positionsmeddelande att ge den uppdaterade positionen.

Vid CPR-avkodning bestämmer du först flygplanets latitud baserat på ett par udda och jämnlägesmeddelanden som mottas inom 10 sekunder från varandra.

Latitude är alltid kodad i samma antal zoner mellan ekvatorn och polerna (15 för jämn kodning, 14.75 för udda kodning). På grund av jordens rundhet beror antalet zoner som används för longitudinalkodning på latitud. Längden med jämn kodning använder 59 zoner vid ekvatorn och endast 1 vid polerna. Odd kodning använder alltid 1 zon mindre, utom i närheten av polen där 1 zon används som jämn kodning. Antalet longitudlängdszoner som används för jämn kodning kan hittas av $ NL () $ -funktionen.

Övergångsgraderna, d.v.s. där antalet zoner för kodning av longitud för kodning kan beräknas med invers $ NL () $ -funktionen. Denna funktion kan användas för att skapa ett uppslagstabell med övergångsgrader som är effektivare än den ursprungliga $ NL () $ -funktionen.

Utan att veta något om ditt genomförande är det svårt att hjälpa vidare, formeln är korrekt avbildad i din fråga. Observera att inmatningsgrad anges i grader, men den trigonometriska funktionen antas fungera på radianer sålunda $ \ frac {\ pi} {180} $ faktor.

Redigera: Vid ytterligare inspektion märkte jag ett misstag i formeln: det borde vara:

$$ NL = int \ left (2 \ pi \ left [arccos \ left (1 - {1 - cos \ left ({\ pi \ över 2NZ} \ right) \ över cos ^ 2 \ left ({\ pi \ över 180} \ mid lat \ mid \ right)} \ right) \ right] ^ {- 1} \ höger) $$

(notera att omvandlingen från grader till radianer korrigeras)

För de som verkligen vill förstå HLR-kodning och avkodning i detalj måste du skaffa en kopia av RTCA-dokument DO-260B eller Eurocae dokument ED-102A (tyvärr är de dyra, jag tänker på $ 700) och läs bilaga A.1.7 och bilaga T.

    
svaret ges 05.05.2014 12:20