LRAR-Cp
Č. úlohy 1
Funkce pro zpracování signálu GPS
ZADÁNÍ 1) Sestavte v Matlabu funkci pro stanovení výšky geoidu WGS84. 2) Sestavte v Matlabu funkci pro generování C/A kódu GPS družic.
ROZBOR Cílem cvičení je připravit si funkce pro výpočty určení polohy z GPS signálu. Při určování polohy ze signálů GPS družic je výhodné (a z hlediska komplexnosti výpočtu prakticky nejsnadnější) pracovat v kartézském souřadném systému. Až po určení polohy v kartézském systému pak provést transformaci na všeobecně užívané geodetické souřadnice a připravit si funkce pro tyto transformace je náplní tohoto zadání. Výška geoidu pro daný geodetický referenční systém je stěžejní pro kalibraci určení skutečné nadmořské výšky určované polohy. Geoid je fyzikální model povrchu Země při střední hladině světových oceánů a je definován jako ekvipotenciální plocha vůči gravitaci, tzn., že je to plocha se stejnou úrovní tíhového potenciálu, na kterou je vektor tíhového zrychlení kolmý. Geoid se vůči referenčnímu zemskému elipsoidu může lišit až o ± 100 m. Známe-li výšku geoidu N pro daný bod měření, pak nadmořská výška HASL daného bodu je:
H ASL = H − N ,
(1)
přičemž H reprezentuje stanovenou výšku na referenčním elipsoidem. Výška geoidu je vždy stanovena k příslušnému geodetickému referenčnímu elipsoidu jako funkce závislá na geodetické šířce a délce. V tomto úkolu budeme používat systém WGS84. Měření pseudovzdálenosti pro určování polohy dálkoměrnou metodou u GPS systému je založeno korelaci mezi vstupním signálem GPS v základním pásmu a replikou PN kódu příslušné družice. V této úloze se budeme věnovat civilním, tzv. C/A kódům, které reprezentují Goldovy posloupnosti. Základní charakteristikou C/A kódu je ostré autokorelační maximum a velmi nízká vzájemná korelace mezi jednotlivými C/A kódy příslušných družic. Mimo aplikaci C/A kódu pro určení pseudovzdálenosti, je C/A kód rovněž využit pro zajištění kódového multiplexu CDMA jednotlivých GPS družic. Goldovy posloupnosti v C/A kódech jsou generovány jakou binární součet dvou nezávislých, avšak stejně dlouhých, PN kódů G1 a G2, přičemž kód G2 je pro daný C/A kód zpožděn o specifickou hodnotu k bitů. Každý dílčí kód se sestává z posuvného registru s R buňkami. Pro C/A kód je R = 10, délka kódu je pak dána
LG1 = LG2 = 2 R − 1 = 210 − 1 = 1023 .
(2)
Generující polynom PN kódu G1 má tvar:
G1 = 1 + X 3 + X10 .
(3)
Pro G2 má generující polynom tvar:
G2 = 1 + X 2 + X 3 + X 6 + X8 + X 9 + X10 .
(4)
Zpoždění posloupnosti G2 o k bitů lze provést binárním součtem vhodných buněk posuvného registru generujícího G2. Schéma generátoru C/A kódů je uvedeno na obrázku 1. Kódy označené písmenem R reprezentují rezervované kódy. Pro jednotlivé družice definované svým identifikačním číslem SVN (Space Vehicle Number) jsou příslušná zpoždění G2 vůči G1 a k nim odpovídající buňky posuvného registru G2 uvedena v tabulce 1. Inicializace posloupností G1 a G2 odpovídá vektoru o deseti jedničkách.
Obr. 1. Princip generování C/A kódu pro GPS družice Tab. 1. Zpoždění G2 vůči G1 a příslušné buňky binárního součtu pro generování C/A kódu. SVN
1 2 3 4 5 6 7 8 9 10 11 12 13
k Buňky [bitů] G2 5 2⊕6 6 3⊕7 7 4⊕8 8 5⊕9 17 1⊕9 18 2 ⊕ 10 139 1⊕8 140 2⊕9 141 3 ⊕ 10 251 2⊕3 252 3⊕4 254 5⊕6 255 6⊕7
SVN
14 15 16 17 18 19 20 21 22 23 24 25 26
k Buňky [bitů] G2 256 7⊕8 257 8⊕9 258 9 ⊕ 10 469 1⊕4 470 2⊕5 471 3⊕6 472 4⊕7 473 5⊕8 474 6⊕9 509 1⊕3 512 4⊕6 513 5⊕7 514 6⊕8
SVN
27 28 29 30 31 32 R-33 R-34 R-35 R-36 R-37
k [bitů] 515 516 859 860 861 862 863 950 947 948 950
Buňky G2 7⊕9 8 ⊕ 10 1⊕6 2⊕7 3⊕8 4⊕9 5 ⊕ 10 4 ⊕ 10 1⊕7 2⊕8 4 ⊕ 10
POSTUP ŘEŠENÍ Ad 1)
V matlabovském skriptu funkce GeoidHeightWGS84(Lat, Lon) je definována tabulka výšky geoidu WGS84_GH_Table pro systém WGS84 pro geodetické ířky a délky po 10°. Jednotlivé řádky odpovídají geodetickým šířkám od +90° až po -90°. Sloupce pak geodetickým délkám v rozsahu od -180° po 180°. To je pochopitelně pro přesné určení nadmořské výšky příliš hrubé rozlišení. Doplňte proto skript této funkce o aproximační algoritmus, který odhadne výšku geoidu i mimo definovanou síť. Spolehlivé a relativně jednoduché je použití postupného lineárního odhadu (viz obr. 2). Úkolem je určit výšku geoidu v bodě G. Nejprve provedeme odhad výšek v bodě E a F na hranách sítě, například pro geodetickou délku, ve druhém kroku pak již odhad výšky v cílové poloze G na základě znalosti výšek v polohách E a F, tedy aproximace v geodetické šířce.
Obr. 2 Grafické znázornění odhadu výšky ve 2D síti.
Pro otestování použijte následující matlabovský skript: lon lat las los
= = = =
-180:1:+179; 90:-1:-89; length(lat) length(lon)
for lai=1:las, for loi=1:los, N(lai,loi)=GeoidHeightWGS84(lat(lai),lon(loi)); end end
figure(1) surf(lon,lat,N)
Skript je rovněž k dispozici jako GeoidWGS84plot.m. Výsledkem by měl být výstup v podobě aproximovaného geoidu WGS84 v rozlišení po 1°, který je na obrázku 3.
Obr. 3 Model aproximovaného geoidu pro WGS84. Ad 2)
V této fázi je nutné doplnit algoritmus pro generování C/A kódu v předpřipravené funkci CACodeGen(). Části kódu určené pro doplnění jsou definované šesti otazníky. Úkolem této funkce vygenerování C/A kódu příslušné družice. Výstupem je binární vektor (nuly a jedničky). Nejprve je nutno z vektoru Taps vybrat příslušný řádek a vygenerovat dvouprvkový vektor s pořadím výstupů registrů posloupnosti G2 definujícím příslušné zpoždění posloupnosti G2 vůči G1 s označením DelayTapsVect. Následuje smyčka, ve které je nejprve vypočítána hodnota zpožděného výstupu G2(n-k) a G1(n), které jsou následně sečteny pro generování n-tého výstupního prvku dané Goldovy posloupnosti. Pro výpočet využijte standardní matlabovské funkce mod() a sum(). Následuje výpočet nonového obsahu vektorů posloupností G1 a G2, shodně ve skriptu označené G1 a G2, kde prvky na druhé až desáté pozici jsou rovny původním prvkům na první až deváté pozici (posunutí v soustavě registrů), první prvek každé posloupnosti je pak dopočten s pomocí generujících vektorů posloupností Gm1 a Gm2, opět využijte funkce mod() a sum(). Úspěšnost generátoru si lze ověřit aplikací autokorelační funkce na kód, která musí mít pouze jediné ostré maximum nebo korelací s reálným GPS signálem. Pro tento test je připravena hotová funkce GPSPRCalc(), která otevře datový soubor s GPS signálem GPSSn.dat (n je číslo měření, můžete si vybrat), který obsahuje mix signál několika družic v základním pásmu včetně aditivního šumu. Signál je nevzorkován desetinásobkem čipové frekvence (1,023 MHz) a jeho délka rovna je přesně 1 ms (vždy jedna celá C/A posloupnost – posunutí
odpovídá hledané relativní pseudovzdálenosti příslušné družice). K načtení souboru je použita funkce fread(), data v signálovém souboru reprezentují číselný formát ‘float‘. Signál je pak uložen ve vektoru SigGPS. Tento signál se pro potřeby korelační analýzy zdvojí (složí se dvakrát za sebou) opět do vektoru SigGPS. Následuje proces korelační analýzy pro všechny možné družice s SVN v rozsahu 1 až 32. Pomocí funkce CACodeGen(), jejíž funkčnost je třeba ověřit, se vygeneruje příslušná replika kódové posloupnosti pro testovanou družici a provede korelační analýza, ze které se určí, zda signál příslušné družice je ve vstupním signálu obsažen a jeho časové posunutí. Pokud je signál dané družice ve vstupním GPS signálu obsažen, výsledky (SVN družice a časové zpoždění vzhledem k jedné periodě PN sekvence) se uloží do proměnné SVNPD a vytiskne se příslušná korelační analýza. Rozhodnutí, zda signál dané družice je ve vstupní směsi GPS signálu obsažen, je řešeno srovnáním průměrné hodnoty korelace a maximální hodnoty korelace, které musí být pro rozhodnutí o přítomnosti signálu větší než MCoef násobek průměrné hodnoty korelace. MCoef je nastaveno na hodnotu 10. Proměnná SVNPD se pak uloží do datového soboru specifikovaného jménem obsaženým ve volané proměnné GPSMeasFileName. Tímto programem ověříte i funkčnost funkce CACodeGen(), ve všech měřeních je obsažena družice s SVN = 3.
LITERATURA [4.1]
PANY, T. Navigation Signal Processing for GNSS Software Receivers. 1st ed. Boston: Artech House, 2010.
[4.2]
KAPLAN, E.D., HEGARTY, Ch.J. Understanding GPS. Principles and Applications. 2nd ed. Boston: Artech House, 2006.
[4.3]
ZIEDAN, N.I. GNSS Receivers for Weak Signals. 1st ed. Boston: Artech House, 2006