====== Radio Observer ====== Jde o staniční aplikaci určenou k rádiovému pozorování: - Meteorů - Slunce/Jupiteru - Pozorování dalších objektů 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 [[http://wiki.bolidozor.cz/doku.php?id=cs:pysdr|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 [[http://mlab-project.github.io/radio-observer/|radio-observer]]. Běžet by měl na [[cs:arm|ARM počítači]]. Funkční požadavky k výsledné aplikaci Radio-Observer jsou zapisovány do [[http://www.mlab.cz/redmine/projects/rao01a|Redmine]]. ===== PySDR a radio-observer ===== Cílem projektu je vytvořit soustavu nástrojů pro radioastronomická pozorování na vzdálených stanicích. Důvody k tomu jsou: * Stanice se vyskytují obvykle jinde, než pozorovatelé * Je výhodné mít možnost spravovat více pozorovacích míst z jednoho pracoviště 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í. ===== Instalace ===== 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 ===== Ovládání radio-observeru ===== 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ů. ==== Parametry v příkazové řádce ==== 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. * **-c CONFIG_FILE** * **-v** - výpis verze ==== Konfigurační soubor ==== Konfigurační soubor je ve formátu [[http://cs.wikipedia.org/wiki/JavaScript_Object_Notation|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 [[https://github.com/MLAB-project/radio-observer/blob/dev/radio-observer.json|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// === Parametry v konfiguračním souboru === * jitter_time - doba v sekundách mezi událostmi, potřebná k tomu, aby dvě události byly chápaný jako nesouvisející jevy. * advance_time - délka záznamu před a po detekované události. ===== Podobné SDR systémy klient-server ===== * [[http://wiki.spench.net/wiki/BorIP_Server|BorIP Server]] * [[http://openhpsdr.org/wiki/index.php?title=Ghpsdr3|ghpsdr3]] ==== Jiné softwarové nástroje pro práci s radioastronomickými daty ==== * [[http://satorchi.net/specsoft/specsoft.php|List of Radio Astronomy data analysis software]] ==== FITS soubory ==== * [[http://fits.gsfc.nasa.gov/fits_verify.html|Verifikace FITS souboru]] ===== Možnosti použití ===== ==== Radioteleskopy ==== Jedna z alternativ použití programu radio-observer je jeho nasazení na stanicích [[cs:bras]] a [[cs:aras]], případně na [[cs:radiotelescope|jednoduchém parabolickém radioteleskopu]]. ==== Pozorování meteorů ==== Aplikací programu pro účel pozorování meteorů se zabývá projekt [[http://wiki.bolidozor.cz/doku.php?id=cs:about|Bolidozor]]. ==== Pozorování Slunce/Jupiteru ==== 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. ===== Datové výstupy ===== * Obrázkové náhledy ve FITs pro generování náhledů na webu. (Aby webový prohlížeč mohl vykreslovat obrázek a obarvovat jej podle požadavků uživatele) * RAW záznamy odrazu meteoru, (Surová data jsou důležitá pro pozdější analýzu záznamů) * Ke všem záznamům je v jiné složce metadatový textový soubor, který je společný pro všechny datové výstupy. (každý typ výstupu má mít jeden řádek metadat). Toto opatření má zabránit nutnosti otevírání velkých souborů z datového úložiště a procházení jejich hlaviček. Místo toho budou stahovány a prohledávány jen metadatové záznamy. Metadatový soubor musí být lidsky čitelný. 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ř. * [[http://js9.si.edu/|JS9]], který má i [[http://space.astro.cz/bolidozor/support/js9browser/#/bolidozor/|Bolidozor implementaci]] * ds9 * [[http://heasarc.gsfc.nasa.gov/docs/software/ftools/fv/|Fv]] * qfitsview * fits liberator * http://onekilopars.ec/qlfits/index.html Také je pro účely rychlého prohlížení lidmi z [[http://wiki.bolidozor.cz/|Bolidozoru]] vyvíjen [[http://meteor1.astrozor.cz/#http://space.astro.cz/bolidozor/OBSUPICE/OBSUPICE-R3/snapshots/2015/01/21/13/20150121132740554_OBSUPICE-R3_snap.fits|generátor webových náhledů]], pojmenovaný jako [[https://github.com/bolidozor/htfits|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 [[https://github.com/MLAB-project/pysdr|PySDR]]. ==== Postup při prohlížení raw záznamů ==== 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 ==== Dekomprese FITS souborů ==== 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 [[http://heasarc.gsfc.nasa.gov/fitsio/fpack/|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 ] [-P
] [-O ] [-Z] -v 
  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 [[http://js9.si.edu/|JS9]].

===== Přenos událostí =====

Události jsou v radio-observeru posílány přes systém MIDI.  

MIDI zároveň umožňuje posílání [[http://en.wikipedia.org/wiki/MIDI_timecode|synchronizačních značek]]. 






===== Instalace qjackctl =====

[[http://qjackctl.sourceforge.net/qjackctl.html|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. 
===== Instalace Patchage =====
    
[[http://drobilla.net/software/patchage/|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
===== Informace pro vývojáře =====

[[http://www.mlab.cz/redmine/projects/rao01a|Bug tracking]]
[[http://mlab-project.github.io/radio-observer/|GitHub]]