Robotic mode (pyobs.modules.robotic)

Modules for robotic mode. TODO: write doc

Mastermind

class Mastermind(schedule: TaskSchedule | Dict[str, Any], runner: TaskRunner | Dict[str, Any], allowed_late_start: int = 300, allowed_overrun: int = 300, **kwargs: Any)

Bases: Module, IAutonomous, IFitsHeaderBefore

Mastermind for a full robotic mode.

Initialize a new auto focus system.

Parameters:
  • schedule – Object that can return schedule.

  • allowed_late_start – Allowed seconds to start late.

  • allowed_overrun – Allowed time for a task to exceed it’s window in seconds

async get_fits_header_before(namespaces: List[str] | None = None, **kwargs: Any) Dict[str, Tuple[Any, str]][source]

Returns FITS header for the current status of this module.

Parameters:

namespaces – If given, only return FITS headers for the given namespaces.

Returns:

Dictionary containing FITS headers.

async is_running(**kwargs: Any) bool[source]

Whether a service is running.

async open() None[source]

Open module.

async start(**kwargs: Any) None[source]

Starts a service.

async stop(**kwargs: Any) None[source]

Stops a service.

PointingSeries

class PointingSeries(alt_range: Tuple[float, float] = (30.0, 85.0), num_alt: int = 8, az_range: Tuple[float, float] = (0.0, 360.0), num_az: int = 24, dec_range: Tuple[float, float] = (-80.0, 80.0), min_moon_dist: float = 15.0, finish: int = 90, exp_time: float = 1.0, acquisition: str = 'acquisition', telescope: str = 'telescope', **kwargs: Any)

Bases: Module, IAutonomous

Module for running pointing series.

Initialize a new auto focus system.

Parameters:
  • alt_range – Range in degrees to use in altitude.

  • num_alt – Number of altitude points to create on grid.

  • az_range – Range in degrees to use in azimuth.

  • num_az – Number of azimuth points to create on grid.

  • dec_range – Range in declination in degrees to use.

  • min_moon_dist – Minimum moon distance in degrees.

  • finish – When this number in percent of points have been finished, terminate mastermind.

  • exp_time – Exposure time in secs.

  • acquisition – IAcquisition unit to use.

  • telescope – ITelescope unit to use.

async is_running(**kwargs: Any) bool[source]

Whether a service is running.

async start(**kwargs: Any) None[source]

Starts a service.

async stop(**kwargs: Any) None[source]

Stops a service.

Scheduler

class Scheduler(tasks: Dict[str, Any] | TaskArchive, schedule: Dict[str, Any] | TaskSchedule, schedule_range: int = 24, safety_time: int = 60, twilight: str = 'astronomical', trigger_on_task_started: bool = False, trigger_on_task_finished: bool = False, **kwargs: Any)

Bases: Module, IStartStop, IRunnable

Scheduler.

Initialize a new scheduler.

Parameters:
  • scheduler – Scheduler to use

  • schedule_range – Number of hours to schedule into the future

  • safety_time – If no ETA for next task to start exists (from current task, weather became good, etc), use this time in seconds to make sure that we don’t schedule for a time when the scheduler is still running

  • twilight – astronomical or nautical

  • trigger_on_task_started – Whether to trigger a re-calculation of schedule, when task has started.

  • trigger_on_task_finishes – Whether to trigger a re-calculation of schedule, when task has finished.

async abort(**kwargs: Any) None[source]

Abort current actions.

async is_running(**kwargs: Any) bool[source]

Whether scheduler is running.

async open() None[source]

Open module.

async run(**kwargs: Any) None[source]

Trigger a re-schedule.

async start(**kwargs: Any) None[source]

Start scheduler.

async stop(**kwargs: Any) None[source]

Stop scheduler.