# script for creating asteroid-searching scheduler files (.esl) for Ekos/kstars # version 1.0 # Ricardo Serpell 2021 # # The script creates a file with instructions for ekos to run a sequence of # captures (predefined in an Ekos sequence file .esq) at adjacent fields import numpy as np import math ################################## Options here ################################ width = 90 # field width (RA direction) in minutes height = 70 # field height (DEC direction) in minutes overlap = 10 # overlaps between fields cols = 3 # number of RA columns rows = 3 # number of fields along increasing DEC RA1 = (19, 54) # RA of first column (hours, minutes) DE1 = (1, 0) # DEC of first field in first column (degrees, minutes) filename = "scan" # IMPORTANT : profile and sequence names should match those existing in EKOS: profile = "No GPS - TS 115 f5.6 on HEQ5 (Tak as guider)" sequence = "/home/astroberry/Asteroid.esq" # constraints minimum_altitude = 30 EnforceTwilight = True ################################################################################ # in the future I want to allow columns to be located at different RAs ######### # RA2 = (18, 35) # DE2 = (2, 0) # RA3 = (18, 40) # DE3 = (3, 0) ################################################################################ start = (RA1[0]+RA1[1]/60, DE1[0]+DE1[1]/60) ra_delta = round((((width-overlap)/15)*math.cos(math.radians(DE1[0]+DE1[1]/60)))/60, 4) de_delta = round((height-overlap)/60, 4) for c in range(cols): print("Column "+str(c+1)+":") for r in range(rows): print(start[0]+ra_delta*c, ",", start[1]+de_delta*r) file = open(filename+"_"+str(RA1[0])+"_"+str(RA1[1])+".esl","w") file.write('\n') file.write("\n") file.write(""+profile+"\n") for c in range(cols): for i in ['', 'b', 'c']: for r in range(rows): file.write("\n") file.write("Field"+str(c+1)+str(r)+i+"\n") file.write("10\n") file.write("\n") file.write(""+str(start[0]+ra_delta*c)+"\n") file.write(""+str(start[1]+de_delta*r)+"\n") file.write("\n") file.write(""+sequence+"\n") file.write("\n") file.write("ASAP\n") file.write("\n") file.write("\n") if minimum_altitude>0: file.write("MinimumAltitude\n") if EnforceTwilight: file.write("EnforceTwilight\n") file.write("\n") file.write("\n") file.write("Sequence\n") file.write("\n") file.write("\n") file.write("Track\n") if (i=='')&(r==0): file.write("Focus\n") file.write("Align\n") file.write("Guide\n") file.write("\n") file.write("\n") file.write("\n") file.write("0\n") file.write("\n") file.write("\n") file.write("\n") file.write("\n") file.write("WarmCCD\n") file.write("ParkMount\n") file.write("\n") file.write("\n") file.close()