Difference between revisions of "GNURadio@theATA"

From GNU Radio
Jump to: navigation, search
(Added section on observing procedures with the ATA)
(Added obs. script link and instructions on how to handle program crashes)
Line 105: Line 105:
 
* After checking with Wael that no other observations are ongoing, run the command '''atasetalarm -u {username} -m '{description of your observation}' -c on''' in the tumulus tab
 
* After checking with Wael that no other observations are ongoing, run the command '''atasetalarm -u {username} -m '{description of your observation}' -c on''' in the tumulus tab
 
* To ensure your target object is above the horizon, run '''atacheck {target}''' in tumulus (there is a source catalog on tumulus if you need to look up your target object's identifier)
 
* To ensure your target object is above the horizon, run '''atacheck {target}''' in tumulus (there is a source catalog on tumulus if you need to look up your target object's identifier)
* Back in the gnuradio1 tab, you will now want to run your observing script following the syntax: '''python3 scriptname.py''' (example observing script here).
+
* Back in the gnuradio1 tab, you will now want to run your observing script following the syntax: '''python3 scriptname.py''' (example observing script [https://github.com/ewhite42/bl-seti-tutorials/blob/master/ata-test-obs-script.py here]).
 
* After the script is finished running and your observation is complete, run the command: '''atasetalarm -u {username} -m '{ending message}' -c off'''
 
* After the script is finished running and your observation is complete, run the command: '''atasetalarm -u {username} -m '{ending message}' -c off'''
 +
 +
Note that if your script crashes before it gets to the release_antennas function call, you will need to open a python3 command prompt and run the command as follows:
 +
 +
* '''python3'''
 +
* Inside python3 shell: '''from ATATools import ata_control as ac'''
 +
* '''ac.release_antennas(antennas-list, True)'''
 +
*'''exit()'''
 +
 +
This unlocks and stows the antennas.

Revision as of 17:17, 29 June 2020

The Allen Telescope Array (ATA) is a 42-element radio telescope array located in Hat Creek, California, operated jointly by SETI Institute and UC Berkeley SETI Research Center. In an effort to increase accessibility to the array among potential users outside the astronomy community, we are working to integrate the array into GNU Radio software. We plan to start out by connecting USRPs to two ATA antennas and developing control, backend, and beamformer software. In addition to this, we are using a discone antenna connected to a USRP and OmniSig software to analyze radio frequency interference (RFI) at the ATA site.


General Info

Useful info about the ATA and friends:


GNU Radio / SETI Hackathon

In May 2019, the first step toward collaboration between the GNU Radio community, the ATA, SETI Institute, Breakthrough Listen, and Berkeley SETI communities consisted of a hackathon hosted at the Hat Creek Radio Observatory (home of the ATA). This culminated in, among other things, the development of a GNU Radio module called gr-ata.


Connecting to VNC on ATA gnuradio machines

Below are instructions for connecting to the ATA machines' VNC servers on Windows (note that gnuradio0 machine is connected to the discone, gnuradio1 will be connected to the ATA antennas).

Assuming you are connected to the ATA gnuradio vpn server, you can use PUTTY to connect to gnuradio1 or gnuradio0 machine:

  • Hostname (IP address): 10.1.50.10 for gnuradio0, or 10.1.50.11 for gnuradio1.
  • SSH -> Enable compression
  • SSH -> Tunnels -> Source port: 590x, Destination: localhost:590x

VNC Viewer:

  • Remote Host: localhost:590x
  • Enter password


Setting up the software

The first step in implementing GNU Radio with the ATA is ensuring that we can effectively play back previously-recorded SigMF files taken by the ATA in a GNU Radio flowgraph. We can do this using example code from the gr-ata module discussed above. To get the flowgraphs included in the "examples" folder of gr-ata working, here's a recipe of what you'll need (along with some installation tips discovered through trial-and-error). Note that the instructions below are written for Ubuntu users:

  • GNU Radio version 3.8 (ppa for "releases" -- install instructions here).
  • Install liborc-0.4-dev (sudo apt install liborc-0.4-dev)
  • cmake version >= 3.13 (will have to remove the standard cmake version using $ sudo apt remove --autoremove cmake, then follow the instructions here: https://apt.kitware.com/ to install a more recent version. This is necessary for installing gr-osmosdr)


Below is a list of external GNU Radio modules that you should install following the instructions on the linked GitHub pages. One thing to keep in mind -- for the cmake step, in some cases cmake automatically installs the modules to the wrong location, resulting in a ModuleNotFound error. To prevent this, instead of running just cmake .. run the following command: $ cmake -DCMAKE_INSTALL_PREFIX:PATH={prefix} .. where the {prefix} can be found using the command $ gnuradio-config-info --prefix.

  • gr-ata (of course!)
  • gr-osmosdr
  • gr-correctiq -- make sure to clone the branch maint-3.8
  • gr-lfast -- make sure to clone the branch maint-3.8
  • gr-grnet -- branch maint-3.8. Before attempting to install gr-grnet, make sure you've run $ sudo apt-get install zlib1g-dev libpcap-dev
  • gr-filerepeater -- branch maint-3.8
  • gr-gpredict-doppler
  • gr-mesa -- branch maint-3.8
  • gr-fosphor -- before attempting to install gr-fosphor, run the command: $ sudo apt install libglu1-mesa-dev freeglut3-dev mesa-common-dev ocl-icd-opencl-dev freetype2-demos libfreetype6 libfreetype6-dev swig qt5-default
  • gr-compress --branch maint-3.8; follow instructions in README on github for installation prerequisites

All of these modules (excepting gr-fosphor, which requires a GPU) have been installed along with GNU Radio version 3.8 on the gnuradio1 machine at the ATA.

For ATA observing, you will need to install code from the ATA-Utils repository (which I have done on gnuradio1 in my account); run the commands:

  • git clone https://github.com/SETIatHCRO/ATA-Utils
  • cd ATA-Utils/pythonLibs
  • If pip isn't installed, run sudo apt-get install python3-pip
  • Still in the pythonLibs folder, run sudo pip3 install . --user
  • sudo python3 setup.py install

You should be good to go!


Plotting data in GNU Radio

Using a very simple GNU Radio flowgraph, we can plot spectrum data from archival ATA data; below are some examples:

-home-ellie-Pictures-w3oh-maser.png

Figure 1: GNU Radio waterfall and frequency plots of a 6.7 GHz methanol maser, W3OH, from 2010 archival ATA data

Hi-line.png

Figure 2: GNU Radio waterfall and frequency plots of the neutral hydrogen (HI) line in the direction of the pulsar psrb0329+54, also from 2010 ATA data.


Controlling the ATA

By running commands from the ATA Python library ata_control (which was installed when ATA-Utils was installed, as described in "Setting up the Software"), you can point and track one or more antennas in the Allen Array.

Here's an example of how an observing session might go:

  • Log in to a vnc session on gnuradio1 and open up a terminal.
  • Keep one tab logged into gnuradio1, and in another tab, run the command ssh obs@tumulus to enter the observing computer
  • In the obs@tumulus tab, run the command atastatus to view status windows
  • After checking with Wael that no other observations are ongoing, run the command atasetalarm -u {username} -m '{description of your observation}' -c on in the tumulus tab
  • To ensure your target object is above the horizon, run atacheck {target} in tumulus (there is a source catalog on tumulus if you need to look up your target object's identifier)
  • Back in the gnuradio1 tab, you will now want to run your observing script following the syntax: python3 scriptname.py (example observing script here).
  • After the script is finished running and your observation is complete, run the command: atasetalarm -u {username} -m '{ending message}' -c off

Note that if your script crashes before it gets to the release_antennas function call, you will need to open a python3 command prompt and run the command as follows:

  • python3
  • Inside python3 shell: from ATATools import ata_control as ac
  • ac.release_antennas(antennas-list, True)
  • exit()

This unlocks and stows the antennas.