OK1UFC

2026

 

Program Gpredict pro predikci polohy satelitu ve vesmíru na základě výpočtu z dat TLE

 

Všeobecně

Desítky let jsem používal pro tento účel nádherný program Nova for Windows od NLSA. Nic však netrvá věčně. A tak se jednoho květnového dne v roce 2026 stalo, že si můj oblíbený program nedokázal potřebná TLE data aktualizovat ze serverů Celestrak. Rozhodl jsem se tedy ke stažení a instalaci jedné z dříve vyzkoušených desktopových aplikací (ta druhá se jmenuje Orbitron). Volba padla na Gpredict (stránka programu je zde). Program se stahuje například na Sourcefoge. Co to jsou TLE (Keplerian Elements) jsem kdysi vysvětlil zde.

Instalace

Program se nikam neinstaluje. Stačí rozzipovat stažený balíček a uložit ho do pracovní složky:

V pracovní složce jsem si vytvořil zástupce, kterého jsem propojil na plochu, protože přeci jenom používám tento program několikrát denně.
 

První spuštění a základní nastavení

Při prvním spuštění je třeba jednoduše nastavit několik důležitých věcí z Menu - Edit - Preferences:

1. Odkaz na tzv. TLE data, aby Gpredict počítal s aktuálními keplerovskými daty. Já používám tzv. dailytle soubor, který je pro radioamatéry aktualizován denně organizací AMSAT.
2. Vlastní QTH, tj. QRA lokátor ze kterého si program vypočítá zeměpisné souřadnice pozorovatele na Zemi, pro kterého počítá oběhy družic.
3. Několik nastavení, aby program zobrazoval to, co potřebujeme.
 


 

Nastavení TLE souboru ze serverů AMSAT

Nastavíme si v sekci Preferences - General - TLE Update pomocí tlačítek Add/Delete TLE source adresu na server AMSAT s potřebným souborem - viz obrázek. Na serveru jsou data uložena v textovém souboru, můžeme si je prohlédnout. Na serveru jsou uložena i data bez hlavičky, příklad uvádím zde.

Data TLE pro jeden satelit vypadají takto:

Po nastavení provedeme Update TLE data from network.

Nastavení vlastního QTH stanoviště

se dělá rovněž z Preferences, z položky Ground Stations.

Nastavení zobrazení

se dělá z menu Predict. Můj postup spočívá v tom, že si zvolím a pojmenuji nový modul. V tomto modulu si vyberu satelity, které mě zajímají. V mém případě jsou to satelity ISS, RS-44 a QO-100. Starý defaultní modul kliknutím zavřu, aby se mi zobrazoval jen ten můj nový a ten si nastavím tak, aby mi zobrazoval pozice (nebo dráhy) satelitů na mapě, v radarovém zobrazení dráhu s časovými údaji a některé vybrané tabulkové hodnoty (azimut, elevace, Doppler@100MHz).

Některá nastavení se na obrazovce projeví bezprostředně, jiná až při dalším spuštění programu. Prorgam je malý, rychlý a startuje okamžitě.
 

Příklad zobrazení:
 

 

 

Další nastavení

Program má v menu Preferences položku Interfaces. Tam se nastavuje rozhraní pro komunikaci s rotátory a rádii. Gpredict používá hamlib knihovny.

Vyzkoušíme si komunikaci s SDR++

Na obou zařízeních nastavíme:

IP adresu: 127.0.0.1 (localhost)
Port: 4545  (používám já, ale myslím, že standardně pro rádia je 4522)

Spustíme SDR++ a zapneme naslouchání serveru.

V Gpredict spustíme Radiocontrol (najdeme v menu vpravo nahoře, je ukryté pod trojůhelníčkem).

Po otevření dialogového okna Radio Control klikneme nejdříve na tlačítko Track a potom na Engage.
Potom začne Gpredict počítat Dopplerův posun.

Poznámka:

1. Je třeba v Gpredict nastavit správný transpondér satelitu.
2. V SDR++ si naladíme (myší) pracovní kmitočet ve spektru a Gpredict nám ho bude dolaďovat.

   

 

Vyzkoušení komunikace TCP s programem Gpredict

Protože je program Gpredict opravdu dost dobrý, budeme ho chtít používat i jinak. Například nám může poskytovat data o Dopplerovském posunu kmitočtu do naší aplikace. Abychom se k tomu dopracovali, musíme si umět upravit konfigurační soubor s transpondéry (*.trsp). Na obrázku vpravo vidíte, kam ho Gpredict schoval a jak ho označil. Označil ho číslem Norad satelitu. Takže pro satelit RS-44 ho najdeme jako 44909.trsp

Změny v něm uděláme textovým editorem. Vidíte, že jsem si udělal změny u V/U transponderu. A to takové, že jsem vyrobil rozmezí kmitočtů pro uplink a downlink tak, aby byly v pásmu od 9 MHz do 11 MHz. Nebo je můžeme udělat pro pásmo od 90 MHz do 110 MHz, pokud bychom chtěli počítat Dopplera pro 100 MHz (to používám já).

Jak Gpredict komunikuje?

Komunikuje jako TCP klient a používá nějakou hamlib knihovnu. Umí se připojit jenom k jednomu serveru TCP. Skript pro TCP server (TcpListener) bývá jednoduchý a syntaxe s využitím knihoven v různých vývojových prostředcích bývá známa. Než se však začneme trápit se skriptem, bylo by dobré tuto TCP komunikaci ověřit a vyzkoušet.

Já jsem si komunikaci zkoušel v oblíbeném Herkules terminálu, na portu 4545 (tem musí být nastaven i v Gpredict).

Zkouška TCP komunikace z Herkules terminálu

Vyžaduje trochu zručnosti, protože Herkules terminál má jen jedno okno Send. Musíme tedy rychle a správně psát.

1. Spustíme Herkules terminál v záložce TCP server - viz obrázek vpravo.
2. Spustíme Gpredict s upraveným konfiguračním souborem transpondérů (viz předchozí odstavec).
3. Spustíme Radio Control v Gpredict. Najdeme to v menu vpravo nahoře (takové malinké bikinky vedle křížku).
4. Nastavíme Target (satelit na RS-44) a transponder na V/U.
5. Klikneme na Track, potom na Engage.
Až se hamlib klient ze všeho vzpamatuje a zmůže, odpoví nám do Herkules terminálu informací o frekvenci ve tvaru např. F 99999190
6. Očekává od nás potvrzení. Odešleme z okna Send RPRT 0.
7. Gpredict odpoví znakem f (dotaz na frekvenci).
8. Vždy na znak f odpovíme hodnotou frekvence, tedy zde 10000000
9. Pokud Gpredict znovu odpoví f, opět mu pošleme 10000000. Pokud to zpracuje, provede v modulu Radio Control výpočet frekvence k korekcí na Dopplera a pošle nám hodnotu ve tvaru F 99999190.

Takže, komunikaci s Gpredict a jeho klientem z hamlib knihovny lze vyzkoušet ručně z terminálu Herkules. Pokud při zkoušce něco zmastíme, odešleme chybný příkaz apod. Gpredict se nám odpojí od serveru.

To poznáme, že pošle znak "q".

V takovém případě nám nezbyde nic jiného, než komunikaci klienta z menu Radio Control pustit stisknutím na Engage znovu.

Nicméně, komunikaci vyzkoušet lze. Během takové zkoušky ji pochopíme a máme další pevný bod ve vesmíru, o který se můžeme opřít, až budeme programovat skript nebo proceduru našeho programu.

Poznámky:

1. Při ručním zkoušení vidím, že Gpredict, resp. hamlib dává za znakem F nějak hodně mezer. Ale vždycky vypadlo celé číslo a poslední číslice udávala hodnotu v Hz. Takže, s ohledem na účel si dělám parsing např. z posledních 7 nebo 8 číslic:

2. Dopplerův posun kmitočtů má lineární závislost. Já s ním pracuji například tak, že si ho v programu Gpredict vypočítám v daném čase, v mém QTH a pro požadovaný satelit na kmitočtu  100 MHz. S tím se dá pracovat tak, že například pro uplink na kmitočtu 145.9 MHz musím hodnotu vynásobit 1.459 krát nebo pro downlink na 435 MHz násobím 4.35 krát.

3. Pro práci na lineárních SSB satelitech považuji za nejlepší správnou praxi kompenzaci Dopplera na straně vysílače. Potom se nám kmitočet ve spektru panoramatického přijímače ani nehne a ladíme se s maximálním komfortem tak, jako při pozemním vysílání a nemusíme protistanici nahánět po pásmu. Pro satelit RS-44 násobíme posun vypočtený pro 100 MHz číslem 5.81605, pro satelit FO-29 číslem 5.818, atd.

 

 

Spolupráce s Gpredict přes hamlib

Tato část se nám může hodit v případě, že si píšeme vlastní skript, například kontrolér.
Vřele doporučuji:

1. Nastavit z PowerShellu trvalou cestu do adresáře, ve kterém jsou exe soubory hamlib:
setx PATH "$env:PATH;C:\Program Files\hamlib-w64-4.7.1\bin"

2. Spustit démona hamlib s těmito parametry:
Start-Process -FilePath "rigctld.exe" -ArgumentList "-m 1 -t 4545 -T 127.0.0.1" -WindowStyle Hidden; Start-Sleep -Seconds 1; rigctl -m 2 -r 127.0.0.1:4545 F 100000000 M FM 0
 

3. Význam parametrů v ArgumentList - viz text vpravo.

4. Jak to vyzkoušíme?

Po spuštění démona můžeme zkusit připojit Gpredict, nastavený podle předchozí uvedené konfigurace, se spuštěným Radio Control a například jeden nebo dva terminály Herkules.
Na Radio Control nezapomenout na "Track" a "Engage".

V popsané konfiguraci to začne běžet, počítá to Dopplera pro 100 MHz. Na kmitočet s posunutím podle Dopplera se můžeme ptát z terminálů Herkules odesláním "f". Obdržíme čísla, ve tvaru:
100000630; 100000632; ...; 100000639, tak, jak vidíme na terminálu.

-m1 ...  bez fyzického rádia na portu COMxx, tzv. režim Dummy;
-t 4545 ... číslo portu, na kterém jede hamlib Daemon
-T 127.0.0.1 ... IP adresa jako localhost
dále: skryté dosovské okno ve Windows; prodleva 1s Start-Sleep, aby si to "sedlo"
rigctl -m2 ... znamená spuštění rigctl pro připojení zařízení s TCP socketem, tedy to, co najdeme v terminálových programech jako TCP klient, co je schopné poslat textové řádky zakončené LF a přečíst znakové řetězce - viz obrázek dole;
-r ... localhost:4545 a stejný port;
F ... hodnota Frekvence, kterou to šoupne prvně do Gpredict;
M FM 0 ... nastavení módu (v příkladu FM)

 

Přesně podle zde popsaných pravidel si můžete napsat ve svém programu jednoduchou proceduru, která spustí démona hamlib, po připojení démona odpoví potvrzením RPRT 0 a začne se v pravidelných intervalech (já používám 1000 ms) ptát na frekvenci s vypočteným posunem podle Dopplera.

Je to spolehlivé. Jeden z algoritmů, který používám já, jsem uvedl v popisu kontrolérů pro LEO sats.

 Popis jednoduchého testovacího programu a algoritmu ve Visual Basic
 
 

Jednoduchý tester jsem napsal ve Visual Basic. Můžete si stáhnout zip, který obsahuje zdrojový kód pro Visual Studio i spustitelný program.
Procedura se jmenuje SendHamLib, vypadá takto:

Dělá se s tím takto:

- kliknutím na "E" odešleme do démona Hamlib hodnotu kmitočtu v kHz.
- kliknutím na "R" vyčteme hodnotu kmitočtu z démona;
- hodnota F se zobrazí v okně a taky v horním pruhu okna testeru.

Pokud je připojen Gpredict a jezapnuto Trace a Engage, zobrazuje nám to hodnotu korigovanou s ohledem na Dopplera.

Předpokládám, že toto je nejjednodušší cesta, jak dostat do svých satelitních aplikací exaktně vypočtené hodnoty posunu kmitočtů podle Dopplera a s využitím precizních NORAD SGP4/SDP4 algoritmů a napsat si proceduru pro řízení Dopplera na straně vysílače TX tak, aby to odpovídalo kodexu nejlepší možné praxe.

   
   

Porovnání programů Gpredict a Orbitron

Každý z programů plní základní funkce, které potřebuji. U obou programů se snadno nastavují základní data (QTH, požadované satelity a získávání TLE dat). Rovněž nastavení zobrazení je přiměřeně jednoduché a rychlé.

Když přijdu k PC, zapínám Gpredict, protože v něm okamžitě vidím následující AOS (Next AOS), tedy čas, kdy sledovaný satelit zase vyjde nad obzor a bude možné pracovat. Rovněž na jedno kliknutí si mohu zobrazit tzv. pass details, tj. data, polární (radarové) zobrazení s časovými údaji, či tabulku Az/El. Tohle v Orbitronu není okamžitě zřejmé a řešit výpočty předpovědí je obvykle zdržující a méně přehledné.

Když se přiblížil bod AOS, tak zapnu SDR Console, vysílač Icom, můj kontrolér a připojím se ke Gpredict.

Závěr

Gpredict se pro mě stal první volbou pro můj malý satelitní LEO setup, protože je:

- přehledný, jednoduchý a malý;
- bere aktualizace TLE on-line ze serveru Amsat; tam je mají v textovém souboru, ale formát Unix (jen LF na koncích řádků);
- a "zmohl" jsem ho na tolik, že z něho umím vydolovat (sice skrz hamlib, který nemám vůbec rád) informace o Doppleru pro konkrétní satelit.

   TU 73, Mira, ok1ufc