RC80 Scheduler

A simple sequential scheduler for the RC80 telescope at Piszkéstető. It uses the astroplan package and a modified class of SequentialScheduler. Besides the default constrains it uses the ForbiddenPositionConstraint and ForestConstraint especially designed for this telescope. Performs a very primitive input file check. If a line is not valid, it will be rejected from the input. If plotting is enabled it creates two plots with the scheduled objects. The modified SequentialScheduler Class and the plot_constraints (in debug mode) uses multiprocessing, to speed up schedule and plot generation.

  • The current altitude plot with object priorities: plot
  • The current altitude plot with object altitudes: plot
  • More information about the RC80 telescope and its systems: ccdsh wiki

Basic concepts

For the quasi robotic use of the RC80 telescope an automatic observing script generator pipeline was made. The main part of this was written in bash, by Levente Kriskovics and this bash pipeline uses the scheduler script for determining the final list of obejcts for the telescope.

  • The first step is to query the SQL database of the active target list. A pre-filtering is done in this step, namely, if the target is in the scheduled interval, it gets in to the list. If the target's last time of observation is greater, than its observing cadence, it gets in to the list.
  • From the list of these filtered targets an input file is generated for the scheduler. It contains the name, the ra-dec coordinates, the net observing time and the priority of the objects.
  • If the night is full with scheduled objects, or the script run out of input objects, the results are written into an output file.
  • The scheduler processes this input file and based on the priority and the different constraints it will perform a simple sequential scheduling. It means, that it calculates the constraints for every target for the first time block and the best one is picked. Then, for the second block the process repeats, except the already scheduled target, etc. First the higher priority targets are scheduled for one time slot, and after the lower ones. Lower priority numbers means higher priority.
  • The bash pipeline then converts the output file to a ccdsh script, which then can be sourced or piped to the ccdsh enviroment on m51.
  • With high enough number of targets usually there are no gaps in the schedule. If gaps are present, based on how long they are the telescope can close temporarly.
  • The used constraints are:
    • AtNightConstraint.twilight_nautical(): schedules targets only when the Sun is below -12 degrees. It can be overridden by the use-the-force-luke= option to a lower Sun altitude for the end of the night.
    • AltitudeConstraint: Rejects the target for the time slot if it is not between the given altitudes above horizon. The default values are 20 and 80 degrees.
    • MoonSeparationConstraint: Rejects the target for the time slot if its separation from the Moon is smaller than the given value. The default is 25 degrees.
    • ForbiddenPositionConstraint: Rejects the target for the time slot if it is in the forbidden zone of the telescope. This is between -12.0 and -9.0 degrees azimuth, and above 48.0 degree altitude
    • ForestConstraint: It is basically a horizon constraint, which was measured by András Pál. The constraint uses an input file with the azimuth and altitude data of the trees near the RC80 telescope dome. If the target at the time slot is visible below the altitude value at a given azimuth, the target will be rejected.
  • If plotting is enabled two plots will be generated. One is a simple plot with time on the x axis and average altitude of the target during the planned observation on the y axis. The target priorities are also present here. The second plot is an all night altitude plot with the scheduled targets and their altitude above the horizont during the night. The latest of these plots are available here and here, and they also generated in the directory where the TCS script was ran.

    Requirements

    • python3.8
    • astropy-4.0.2
    • astroplan-0.8
    • numpy-1.17
    • matplotlib-3.0.3

    Installation

    You usually don't have to do anything to get it work on m51. In case there is an installation needed, follow these steps:

  • Copy rc80_scheduler.py and rc80-horizon.txt from: m51:/data/rszakats/scheduler/2.x to: /usr/local/bin/tcs80/
  • Symlink /data/rszakats/scheduler/2.x/constraints.py to /data/rszakats/python3.8/lib/python3.8/site-packages/astroplan/
  • Symlink /data/rszakats/scheduler/2.x/scheduling.py to /data/rszakats/python3.8/lib/python3.8/site-packages/astroplan/

    Usage

    Usually you don't have to run the scheduler on its own. Run the full pipeline with the TCS80_generate.sh --start now --sequential --focus 7.95 --plot command on m51. If you want a more detaild output you can use the --verbose switch, or if you suspect an error, use the --debug switch too. You can find more information about the usage of these scripts here

    • If you want to run the scheduler script in a standalone mode, run it with the correct python version: /data/rszakats/python3.8/bin/python3.8 rc80_scheduler.py
    • To get help, use the --help switch.
    • In standalone mode you have to provide an input file with the following columns: name ra dec exp pri
    • Specify this file with the --infile= switch