Jde o staniční aplikaci určenou k rádiovému pozorování:
Cílem radio-observeru je nahradit živého pozorovatele sledujícího data z radioteleskopu na přítomnost nějaké zajímavé události. Například bolidu, nebo Sluneční erupce. Program běží na detekčních stanicích a zpracováním signálu z přijímače detekuje zajímavé události, například meteory.
V principu by mělo jít o komplementární aplikaci k PySDR, která je naopak určena pro vizualizaci měřených dat.
Klíčovou vlastností programu je schopnost zaznamenávat časově označkovaná data, použitelná pro další analýzu po získání dat z více stanic.
Zatím se vyvíjí v testovací verzi, jako radio-observer. Běžet by měl na ARM počítači.
Funkční požadavky k výsledné aplikaci Radio-Observer jsou zapisovány do Redmine.
Cílem projektu je vytvořit soustavu nástrojů pro radioastronomická pozorování na vzdálených stanicích. Důvody k tomu jsou:
Program radio-observer by měl být nástroj, který bude samostatně vykonávat pozorování, na základě detekčních skriptů napsaných v Pythonu. Tyto skripty by měly běžet i v programu pySDR, který by měl sloužit k vizualizaci jejich funkce na identických datech s těmi, na kterých bude provádět detekci i program radio-observer. PySDR by však kromě možnosti ladit novou verzi skriptů poskytoval i možnost zobrazení stavu radio-observeru zejména z důvodu kontroly jeho funkce. Detekční skripty spuštěné v pySDR by ale neměly generovat datové záznamy. Ale pouze zobrazit detekovanou a ukládanou oblast.
Důvod toho, proč samotná detekční aplikace má běžet na počítači u přijímače je ten, že zde je konzistentní přístup k získávaným datům. A navíc může být k dispozici i datový tok s větším rozlišením, než které je dostupné přes síťové připojení.
sudo apt-get install libfftw3-dev libcfitsio-dev libjack-jackd2-dev clang build-essential checkinstall git clone https://github.com/MLAB-project/radio-observer.git cd radio-observer git submodule init git submodule update cd cppapp make cd .. make
Nyní by jsme měli mít zkompilovaný radio-observer. Dále pomocí nástroje checkinstall vytvoříme instalační balík, který rovnou nainstalujeme do systému. Na dotazy utility odpovídáme doporučenou volbou.
sudo checkinstall --pkgname radio-observer --pkgversion 0.5 make install
Naprostá většina parametrů radio-observeru je definována v konfiguračním souboru ve formátu JSON. Konfigurační soubor je očekáván v ~/.radio-observer.json. Případně může být zadán přepínačem při spuštění programu -c CONFIG_FILE.
Název konfiguračního souboru se odvozuje od názvu binárky, proto když přejmenujeme binárku, tak můžeme mít v home adresáři i jiný konfigurační soubor pro další experiment. Zároveň klient jacku je pak pojmenovaný podle jména binárky. To je užitečné v případě, že na jedné stanici potřebujeme z nějakého důvodu připojených více radio-observerů.
Radio observer má minimum parametrů nastavitelných z příkazového řádku. Nejpodstatnějším parametrem je zvolený konfigurační soubor, který bude použit pro detekci.
Konfigurační soubor je ve formátu JSON, který je rozšířený o možnost použití komentářů uvozených znakem //. Formát ukázkového souboru je následující:
{ "jack_left_port": "system:capture_1", // název JACK portu, ke kterému se má radio-observer připojit "jack_right_port": "system:capture_2", "configuration": "default", // název konfigurace která bude použita po spuštění programu. "configurations": [ { "key": "default", // identifikátor konfigurace "factory": "pipeline", "children": [ { "key": "backend", "factory": "waterfall", "bins": 32768, // počet binů FFT "overlap": 24576, // překryv FFT binů "origin": "TEST-R0", // nazev stanice "iq_gain": 0, "iq_phase_shift": 0, "children": [ { "key": "recorder", "factory": "snapshot", "output_dir": "~/Bolidozor/TEST-R0/snapshots", // adresar pro snapshoty "output_type": "snap", // zobrazovany typ souboru ve jmenu souboru "snapshot_length": 60, // délka snímku spektra v sekundach "low_freq": 10100, // spodní frekvenční omezení zaznamenávaného spektra. "hi_freq": 11000, // horní frekvenční omezení zaznamenávaného spektra. }, { "key": "recorder", "factory": "met", // zobrazovany typ souboru s nahledy detekovanych meteoru ve jmenu souboru "output_dir": "~/Bolidozor/TEST-R0/meteors", // adresar pro ukladani detekovanych meteoru "output_type": "met", // zobrazovany typ souboru s metadaty ve jmenu souboru "metadata_path": "~/Bolidozor/TEST-R0/data", // adresar pro ukladani metadat "advance_time": 12, // doba v sekundach, která bude zaznamenána v záznamu ještě před detekcí meteoru a po detekci.který bude sloučen do jednoho záznamu. "jitter_time": 1, //maximální interval v sekundach mezi dvěma detekcemi, vice meteoru v tomto intervalu bude povazovano za jeden "low_detect_freq": 10500, // dolni frekvence, kde budou detekovány meteory "hi_detect_freq": 10700, // horni frekvence, kde budou detekovány meteory "low_noise_freq": 11000, // dolni frekvnece pásma pro výpočet intenzity šumu "hi_noise_freq": 11500, // horni frekvence pasma pro vypocet intenzity sumu }, ], }, ], }, ], }
Do souboru vepsané české komentáře mají pouze dokumentační charakter. Pro vlastní konfigurační soubor prosím využijte příklad souboru v repozitáři radio-observeru.
Pokud spustíme radio-observer bez parametru definujícího konfigurační soubor, tak se pokusí si sám otevřít konfigurační soubor se stejným názvem jako binárka z home adresáře. tj. například: .nazev_stanice.json
Jedna z alternativ použití programu radio-observer je jeho nasazení na stanicích bras a aras, případně na jednoduchém parabolickém radioteleskopu.
Aplikací programu pro účel pozorování meteorů se zabývá projekt Bolidozor.
K tomuto typu pozorování by byl třeba waterfall s nižším rozlišením, ale větší šířkou pásma (jednotky MHz), aby bylo vidět celé pásmo, kde se emise vyskytují. Toho by bylo možné dosáhnout přelaďováním přijímače. Časové rozlišení také nemusí být velké, protože jde o pomalé jevy.
Výsledkem by měl být dlouhý obrázek přes celý den s barevnými fleky odpovídajícími bouřím.
Radio-observer aktuálně generuje výstupní soubory ve dvou formátech - csv a fits. CSV je formát použitý výhradně pro metadatové záznamy. Typický metadatový záznam vypadá následovně, významy jednotlivých sloupců jsou popsány v prvním řádku.
# file name; noise; peak f; mag.; duration 20140808110008890_OBSUPICE-R1_met.fits;0.63286;10897;1.38025;0.170667 20140808110100772_OBSUPICE-R1_met.fits;0.640167;10605.5;1.53675;0.170667 20140808110211599_OBSUPICE-R1_met.fits;0.494422;10601.1;1.45788;0.170667
Jak je vidět, tak metadatový soubor obsahuje seznam všech detekovaných meteorů a základní informace o nich. Samotné meteory jsou pak zaznamenány v datových souborech formátu FITS. Tento formát lze v případě souborů typu snap a met zobrazit ve standardním FITS prohlížeči. Např.
Také je pro účely rychlého prohlížení lidmi z Bolidozoru vyvíjen generátor webových náhledů, pojmenovaný jako HTFITS.
Protože tyto datové výstupy obsahují klasická obrazová data. Rozdíl mezi oběma typy je ten že soubor snap obsahuje většinou minutový screenshot waterfallu z oblasti ve které jsou vyhledávány meteory. Soubor met pak obsahuje výřez oblasti, která časově odpovídá zaznamenanému RAWS záznamu.
RAWS fits záznam pak obsahuje surové I/Q vzorky z přijímače, tak jak přišly na vstup radio-observeru. Obsah toho souboru je tak do jisté míry přirovnatelný ke dvoukanálovému VAW souboru. Tento soubor je pak možné si prohlédnou prohlížečem pysdr-recviewer, který je součástí subprojektu PySDR.
Raw záznamy obsahují přímo vzorky signálu, pro jejich zobrazení je proto potřeba speciálnější software než při zobrazování obrázků. Zatím neexistuje webová reprezentace měřených dat, proto se data musí zobrazovat lokálně na počítači. Postup je asi takový, že se nejdříve v metadatovém souboru najde zajímavý meteor. Typicky například s velkou délkou stopy a k němu si pak stáhneme raws soubor, který otevřeme v pysdr-recviewer, což je pohodlnější prohlížeč, než většina konvenčních FITS prohlížečů. To provedeme z příkazové řádky:
Instalace programu:
$ sudo apt-get install python-numpy python-opengl python-dev libjack-jackd2-dev git $ git clone https://github.com/MLAB-project/pysdr.git $ cd pysdr $ python setup.py build_ext --inplace $ pysdr-recviewer raws.fits
Radio-observer vytváří komprimované FITS soubory, které některé prohlížeče zatím neumí zobrazit. Je však možné tyto soubory dekomprimovat utilitou funpack. Tu použijeme následovně. Nejprve stáhneme a dekomprimujeme zdrojové soubory knihovny CFITSIO. A následně ve složce kam jsme knihovnu dekomprimovali spustíme příkazy:
./configure make make funpack
Nyní by jsme měli mít ve složce spustitelnou binárku:
$ ./funpack usage: funpack [-E <HDUlist>] [-P <pre>] [-O <name>] [-Z] -v <FITS> more: [-F] [-D] [-S] [-L] [-C] [-H] [-V] `funpack -H' for help
Tu můžeme rovnou použít na dekompresi některého snapshotu. Např.
wget http://space.astro.cz/bolidozor/OBSUPICE/OBSUPICE-R1/meteors/2014/10/03/08/20141003080259247_OBSUPICE-R1_met.fits ./funpack -v 20141003080259247_OBSUPICE-R1_met.fits.fz 20141003080259247_OBSUPICE-R1_met.fits.fz -> 20141003080259247_OBSUPICE-R1_met.fits
Nyní máme ve složce dekomprimovaný soubor 20141003080259247_OBSUPICE-R1_met.fits, který lze zobrazit i v prohlížeči JS9.
Události jsou v radio-observeru posílány přes systém MIDI.
MIDI zároveň umožňuje posílání synchronizačních značek.
Qjackctl nástroj pro spojování jack přípojek.
sudo apt-get install libqt4-core libqt4-gui libqt4-dev autoconf git clone git://git.code.sf.net/p/qjackctl/code qjackctl-code cd qjackctl-code make -f Makefile.git ./configure --enable-jack-version make sudo make install
Případná rekompilace se provede přes
make clean make
Nyní by mělo být možné qjackctl spustit. Pro jeho správnou funkci je ještě potřeba v jeho konfiguraci změnit cestu k jackd serveru na: /usr/local/bin/jackd
Pokud se při spuštění vyskytne chyba:
$ qjackctl qjackctl: symbol lookup error: qjackctl: undefined symbol: JACK_METADATA_PRETTY_NAME
Tak nejsou ze systému ještě odinstalované všechny původní knihovny.
sudo apt-get --purge remove libjack-jackd2-0 libjack-jackd2-dev gstreamer1.0-plugins-good gstreamer1.0-plugins-bad
Po odinstalaci knihoven je potřeba znovu přeložit všechny související aplikace, jako jackd, radio-observer atd.
Patchage je nástroj na spojování Jack přípojek podobně jako qjakctl.
sudo apt-get install libglibmm-2.4-dev libgtkmm-2.4-dev libganv-dev svn co http://svn.drobilla.net/lad/trunk/patchage ./waf configure