Source code for noctua.templates.acquisition

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# System modules
from time import sleep

# Other templates
from ..devices import dom, tel
from ..utils.logger import log
from .basetemplate import BaseTemplate
from .fillheader import Template as FillHeader


[docs] class Template(BaseTemplate): """Acquisition template""" def __init__(self): """Constructor""" super().__init__() self.name = "acquisition" self.description = "Moves telescope to specific coordinates"
[docs] def content(self, params): """Template implementation""" ######################## ##### Params check ##### ######################## try: radec = params.get("radec") altaz = params.get("altaz") except KeyError as e: log.error(f"Parameter {e} not found") ####################### ##### Dome slaved ##### ####################### while dom.slave != True: log.debug(f"Dome slaving still {dom.slave}") dom.slave = True log.debug(f"Dome slaving is now {dom.slave}") ############################ ##### Moving telescope ##### ############################ # Equatorial coordinates if radec: # Enable tracking while tel.tracking != True: log.debug(f"Telescope tracking still {tel.tracking}") tel.tracking = True log.debug(f"Telescope tracking is now {tel.tracking}") # Slew to ra, dec tel.targetradec = radec sleep(0.2) tel.track() msg = "Moving!" # Horizontal coordinates elif altaz: # Slew to alt, az tel.altaz = altaz log.warning("Moving!") # No coordinates else: log.error("Provide radec or altaz parameters.") return log.debug("Moving the telescope") # Moving the telescope while tel.is_moving != 8: # 8 is astelco stop? log.debug(f"Tel Moving? {tel.is_moving}") msg = f"radec: {tel.radec[0]:.2f} {tel.radec[1]:.2f} " msg += f"altaz: {tel.altaz[0]:.2f} {tel.altaz[1]:.2f} " log.warning(msg) sleep(0.2) if self.check_pause_or_abort(): log.debug("check_pause_or_abort returned true. I'm here") return log.info(f"Telescope is tracking? {tel.tracking}") # Waiting for the dome, normally is the slowest. tol = 5.0 # deg of az tolerance between telescope and dome while dom.is_moving \ or abs(dom.azimuth - tel.altaz[1]) > tol \ or abs(dom.azimuth - tel.altaz[1]) - 360 > tol: msg = f"Dome is moving? {dom.is_moving}. " msg += f"Dom az {dom.azimuth:.2f}, " msg += f"Tel az {tel.altaz[1]:.2f}" log.warning(msg) sleep(0.5) if self.check_pause_or_abort(): log.debug("check_pause_or_abort returned true. I'm here") return log.info(f"Dome is moving? {dom.is_moving}") return