This is an old revision of the document!
Table of Contents
Controlling the Dish
The dish control server program runs on w1xm-radar-1.mitrs.org and is used by all software that controls the dish.
Features include:
- WebSockets-based protocol making use from Python, JavaScript, etc. client programs easy
- Support for multiple coordinate reference frames, as well as automatic tracking of the sky
- Support for coordinates with target velocities, which improves the tracking quality of the motor control loops
- Support for enqueuing commands ahead of time with an “execute-at” timestamp for more precise tracking
- Multiple user access with system for viewing whether a connected user is idle and potentially kicking them
An example Python client library is provided. A web interface is also being written.
The code for the client and server is on MIT GitHub. A public mirror is located here.
TODO: actually mirror it to the mirror now that we've invalidated the passwords that were in the git repo
RF Data Handling
For storage of RF data, we typically use digital_rf which provides a number of useful tools for rf data recording (such as thor.py) and for viewing said data (drf_sti.py). Generally, this is installed along with other useful sdr drivers, gnuradio libraries, and the like with radioconda.
Note: You should generally avoid storing RF sample data to the same hard disk partition as a computer OS. The file sizes become large very quickly and accidentally filling the drive (and thereby rendering the computer unuseable) is a real possibility. Most machines with access to the RF Data Network have dedicated /data partitions for this purpose that map to a separate raid array that is substantially larger than the partition for user and operating system files.
if you don't need to save data but want to retain it for a few seconds for some reason, the “drf ringbuffer” tool can provide a good option for managing digital_rf files in-memory. laforge.mit.edu and scotty.mit.edu have memory mapped file folders at /tmp/ramdisk for this purpose.
Application-Specific Software
Satellite Tracking
The example pointing scripts for the BigDishControlServer software include a small Python program that bridges the WebSocket-based protocol to rotctl protocol, which is used by satellite-tracking software like Gpredict. Note that currently Gpredict/rotctl cannot supply tracking velocities, so the tracking accuracy will be a bit worse.
Some ephemeris are available only in formats which are incompatible with gpredict. Programs to interpret a subset of these into the commands for the dish can be found here Bigdish tracking scripts and coordinate converters and can produce command files readable by WR66_run_pointing_file.py
Radio Astronomy
We use the srt-py software (modified to support our dish control protocol) for J-Lab's radio astronomy work. The code is hosted publicly here. The dual-polarization branch is the current active version.
TODO: add a separate page with references for srt-py things
Note that the srt-py code is meant to be easy to use teaching software and is fairly limited in its ability to handle wideband observations or interact more creatively with the radome and radio systems. For more advanced observing projects, writing code to control the dish and radio separately, generally using digital_rf for handling RF data, is often advantageous. Additional Examples and tools for tracking objects with direct command of the dish and analyzing the raw sample data from the radio can be found here BigDishTools
