Coverage for python/lsst/ts/observatory/model/parameters.py : 9%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1import math
3__all__ = ["ObservatoryModelParameters"]
5class ObservatoryModelParameters(object):
6 """Class that collects all of the configuration parameters for the
7 observatory.
9 All angle parameters are stored as radians. Speeds are radians/sec
10 and accelerations are radians/sec^2
11 """
13 def __init__(self):
14 """Initialize the class.
15 """
16 self.telalt_minpos_rad = 0.0
17 self.telalt_maxpos_rad = 0.0
18 self.telaz_minpos_rad = 0.0
19 self.telaz_maxpos_rad = 0.0
20 self.telalt_maxspeed_rad = 0.0
21 self.telalt_accel_rad = 0.0
22 self.telalt_decel_rad = 0.0
23 self.telaz_maxspeed_rad = 0.0
24 self.telaz_accel_rad = 0.0
25 self.telaz_decel_rad = 0.0
26 self.mount_settletime = 0.0
28 self.telrot_minpos_rad = 0.0
29 self.telrot_maxpos_rad = 0.0
30 self.telrot_maxspeed_rad = 0.0
31 self.telrot_accel_rad = 0.0
32 self.telrot_decel_rad = 0.0
33 self.telrot_filterchangepos_rad = 0.0
34 self.rotator_followsky = False
35 self.rotator_resumeangle = False
37 self.domalt_maxspeed_rad = 0.0
38 self.domalt_accel_rad = 0.0
39 self.domalt_decel_rad = 0.0
40 self.domalt_free_range = 0.0
41 self.domaz_maxspeed_rad = 0.0
42 self.domaz_accel_rad = 0.0
43 self.domaz_decel_rad = 0.0
44 self.domaz_settletime = 0.0
45 self.domaz_free_range = 0.0
47 self.optics_ol_slope = 0.0
48 self.optics_cl_delay = []
49 self.optics_cl_altlimit = []
51 self.readouttime = 0.0
52 self.shuttertime = 0.0
53 self.filter_changetime = 0.0
54 self.filter_darktime = "u"
55 self.filter_removable_list = []
56 self.filter_max_changes_burst_num = 0
57 self.filter_max_changes_burst_time = 0.0
58 self.filter_max_changes_avg_num = 0
59 self.filter_max_changes_avg_time = 0.0
60 self.filter_max_changes_avg_interval = 0.0
61 self.filter_init_mounted_list = []
62 self.filter_init_unmounted_list = []
64 self.prerequisites = {}
66 def configure_camera(self, confdict):
67 """Configure the camera related parameters.
69 Parameters
70 ----------
71 confdict : dict
72 The set of camera configuration parameters.
73 """
74 self.readouttime = confdict["camera"]["readout_time"]
75 self.shuttertime = confdict["camera"]["shutter_time"]
76 self.filter_changetime = confdict["camera"]["filter_change_time"]
77 self.filter_removable_list = confdict["camera"]["filter_removable"]
78 self.filter_max_changes_burst_num = confdict["camera"]["filter_max_changes_burst_num"]
79 self.filter_max_changes_burst_time = confdict["camera"]["filter_max_changes_burst_time"]
80 self.filter_max_changes_avg_num = confdict["camera"]["filter_max_changes_avg_num"]
81 self.filter_max_changes_avg_time = confdict["camera"]["filter_max_changes_avg_time"]
82 if self.filter_max_changes_avg_num > 0:
83 self.filter_max_changes_avg_interval =\
84 self.filter_max_changes_avg_time / self.filter_max_changes_avg_num
85 else:
86 self.filter_max_changes_avg_interval = 0.0
87 try:
88 # This is probably not available in most config dicts currently.
89 self.camera_fov = confdict["camera"]["field_of_view"]
90 except KeyError:
91 self.camera_fov = math.radians(3.5)
93 self.filter_init_mounted_list = list(confdict["camera"]["filter_mounted"])
94 self.filter_init_unmounted_list = list(confdict["camera"]["filter_unmounted"])
96 def configure_dome(self, confdict):
97 """Configure the dome related parameters.
99 Angles must be in degrees, speeds in degrees/sec and accelerations in
100 degrees/sec^2.
102 Parameters
103 ----------
104 confdict : dict
105 The set of dome configuration parameters.
106 """
107 self.domalt_maxspeed_rad = math.radians(confdict["dome"]["altitude_maxspeed"])
108 self.domalt_accel_rad = math.radians(confdict["dome"]["altitude_accel"])
109 self.domalt_decel_rad = math.radians(confdict["dome"]["altitude_decel"])
110 self.domalt_free_range = math.radians(confdict["dome"]["altitude_freerange"])
111 self.domaz_maxspeed_rad = math.radians(confdict["dome"]["azimuth_maxspeed"])
112 self.domaz_accel_rad = math.radians(confdict["dome"]["azimuth_accel"])
113 self.domaz_decel_rad = math.radians(confdict["dome"]["azimuth_decel"])
114 self.domaz_free_range = math.radians(confdict["dome"]["azimuth_freerange"])
115 self.domaz_settletime = confdict["dome"]["settle_time"]
117 def configure_optics(self, confdict):
118 """Configure the optics related parameters.
120 Slope must be in inverse degrees and altitude limits in degrees.
122 Parameters
123 ----------
124 confdict : dict
125 The set of optics configuration parameters.
126 """
127 self.optics_ol_slope = confdict["optics_loop_corr"]["tel_optics_ol_slope"] / math.radians(1)
128 self.optics_cl_delay = list(confdict["optics_loop_corr"]["tel_optics_cl_delay"])
129 self.optics_cl_altlimit = list(confdict["optics_loop_corr"]["tel_optics_cl_alt_limit"])
130 for index, alt in enumerate(self.optics_cl_altlimit):
131 self.optics_cl_altlimit[index] = math.radians(self.optics_cl_altlimit[index])
133 def configure_rotator(self, confdict):
134 """Configure the telescope rotator related parameters.
136 Angles must be in degrees, speeds in degrees/sec and accelerations in
137 degrees/sec^2.
139 Parameters
140 ----------
141 confdict : dict
142 The set of telescope rotator configuration parameters.
143 """
144 self.telrot_minpos_rad = math.radians(confdict["rotator"]["minpos"])
145 self.telrot_maxpos_rad = math.radians(confdict["rotator"]["maxpos"])
146 self.telrot_maxspeed_rad = math.radians(confdict["rotator"]["maxspeed"])
147 self.telrot_accel_rad = math.radians(confdict["rotator"]["accel"])
148 self.telrot_decel_rad = math.radians(confdict["rotator"]["decel"])
149 self.telrot_filterchangepos_rad = \
150 math.radians(confdict["rotator"]["filter_change_pos"])
151 self.rotator_followsky = confdict["rotator"]["follow_sky"]
152 self.rotator_resumeangle = confdict["rotator"]["resume_angle"]
154 def configure_slew(self, confdict, activities):
155 """Configure the slew related parameters.
157 Parameters
158 ----------
159 confdict : dict
160 The set of slew configuration parameters.
161 activities : list[str]
162 The set of slew activities
163 """
164 for activity in activities:
165 key = "prereq_" + activity
166 self.prerequisites[activity] = list(confdict["slew"][key])
168 def configure_telescope(self, confdict):
169 """Configure the telescope related parameters.
171 Angles must be in degrees, speeds in degrees/sec and accelerations in
172 degrees/sec^2.
174 Parameters
175 ----------
176 confdict : dict
177 The set of telescope configuration parameters.
178 """
179 self.telalt_minpos_rad = math.radians(confdict["telescope"]["altitude_minpos"])
180 self.telalt_maxpos_rad = math.radians(confdict["telescope"]["altitude_maxpos"])
181 self.telaz_minpos_rad = math.radians(confdict["telescope"]["azimuth_minpos"])
182 self.telaz_maxpos_rad = math.radians(confdict["telescope"]["azimuth_maxpos"])
183 self.telalt_maxspeed_rad = math.radians(confdict["telescope"]["altitude_maxspeed"])
184 self.telalt_accel_rad = math.radians(confdict["telescope"]["altitude_accel"])
185 self.telalt_decel_rad = math.radians(confdict["telescope"]["altitude_decel"])
186 self.telaz_maxspeed_rad = math.radians(confdict["telescope"]["azimuth_maxspeed"])
187 self.telaz_accel_rad = math.radians(confdict["telescope"]["azimuth_accel"])
188 self.telaz_decel_rad = math.radians(confdict["telescope"]["azimuth_decel"])
189 self.mount_settletime = confdict["telescope"]["settle_time"]