GCN-клиент для телескопов САО.
2014-2019г.
Для оперативного наведения телескопов по координатам GRB-событий, разработано клиентское программное обеспечение для работы с системой серверов GCN/TAN. Разработка выполнена на языке Python с использованием пакета pygcn.
О системе GCN.
Система GCN/TAN (GRB Coordinates Network / Transient Astronomy Network) разработана и функционирует в NASA's Goddard Space Flight Center.
Главная функция системы это сеть по которой в режиме близком к реальному времени (т.е. за секунды или минуты) распространяются сообщения о GRB (или иных транзиентах) обнаруженных различными космическими аппаратами (Swift, Fermi, MAXI, INTEGRAL, IPN и т.д.) или наземными средствами. Сообщения распространяются как по e-mail, так и через подключение к TCP-сокету. В последнем случае можно получать либо бинарные пакеты(160 байт) либо VOEvent-ы (XML-тексты).
|
О пакете pygcn (anonymous VOEvent client for receiving GCN/TAN notices in XML format).
Пакет pygcn
написан на языке Python.
Автор
Leo Singer
(lsinger)
из California institute of
Technology.
Совместим с версиями Python
≥2.6.
Этот пакет разработан как простой клиент, который анонимно подключается к северу и прослушивает VOEvent-ы (http://www.ivoa.net/documents/VOEvent) т.е.сообщения в XML-формате. Он реализует TCP/IP VOEvent Transport Protocol (http://www.ivoa.net/documents/Notes/VOEventTransport).
Для его использования необходимо написать модуль handler, которому он будет передавать на обработку каждый полученный VOEvent-пакет.
В настоящее время в системе GCN имеется четыре сервера допускающих анонимное TCP-подключение по протоколу VOEvent:
IP-адрес |
положение(сеть) |
протокол |
---|---|---|
209.208.78.170 |
Atlantic.net |
VOEvent v1.1 |
50.116.49.68 |
Linode.com |
VOEvent v1.1 |
68.169.57.253 |
eApps.com |
VOEvent v2.0 |
45.58.43.186 |
??? (с 24.11.2015) |
VOEvent v2.0 |
Формат XML-сообщений у них немного отличается, что необходимо учитывать при их разборе в модуле handler.
Имеется одно существенное ограничение доступа — с одного клиентского IP-адреса сервер принимает только одно TCP-соединение.
Никаких proxy-возможностей не предусмотрено, т.е. для обращения из локальной сети САО клиент должен иметь прямой выход в Internet, хотя бы через NAT.
Описание программного пакета для телескопов САО.
Все программы написаны на языке Python. Ставилась задача разработки приложения независящего от типа ОС и при этом использующего только штатные средства основного пакета Python. Реальная проверка работоспособности производилась в Linux Python2.6/2.7 в Windows Python2.7. Дополнительно может потребоваться установка пакета PyAudio, если у компьютера есть колонки и хочется слышать предупреждения. В ОС Linux пакет Python ставится по частям, поэтому необходимо убедиться что в системе установлен пакет python-lxml, иначе программа может работать неправильно.
Для быстрого наведения телескопов в программе реализована связь с системами управления (TCS) двух инструментов САО — Цейсс-1000 и БТА.
Принцип работы.
Приняты следующие принципы организации взаимодействия с наблюдателями на телескопах.
Не предусматривается (по крайней мере пока) никакого автоматического наведения телескопов, т.к. имеется много параметров которые может оценить только опытный наблюдатель (и решить стоит ли прерывать текущие наблюдения). Например: какой источник сообщения, уровень обнаружения GRB, точность координат (ErrBox), текущее положение на небе, погода и т.д.
После приема от сервера сообщения которое может заинтересовать наблюдателя, на экране появляется диалоговое окно типа:
Источники сообщений.
Рассматриваются сообщения (notices) от следующих источников:
Фильтрация сообщений.
В сети GCN циркулирует большое количество сообщений. Более 99% из них не представляют интереса для наблюдателей. Это, например, тестовые сообщения (для отладки программ), координаты малозначительных (sub-sub-threshold, σ<6) пиков, координаты совпадающие с каталогами, сообщения о наведении (slewing) спутников и другие служебные сообщения. Поэтому в любой клиентской программе необходима фильтрация сообщений соответствующая ее задачам.
В данном приложении приняты следующие принципы. Все типы сообщений разбиты на группы:
Предупреждения (warnings). Это сообщения о вспышках, либо от детектора без координат, либо от координатного но предварительные (alerts) без координат, (например «Swift BAT GRB Alert»), либо точность координат не достаточна для наших телескопов (например ErrBox - градусы, как у Fefmi GBM). Наблюдателю выдаются предупреждающие сообщения типа:
GRB с хорошими координатами ( ErrBox — минуты или секунды). Сюда относим:
Тестовые сообщения. Имитация реальных событий от разных аппаратов. Появляются в среднем раз в 2 часа. В данной программе подключаются по желанию для отладки и тренинга.
Несколько сообщений полезность которых пока не ясна. Информация о них на всякий случай только лишь записывается в файл протокола.
Самая большая группа сообщений признанных заведомо бесполезными — просто пропускаются.
Неопознанные программой типы сообщений. XML-текст VOEvent-а записывается в файл на диске для последующего анализа автором программы и включения в одну из групп.
Запуск программы.
Основная программа называется gcn_monitor.py . Предполагается что она будет вставляться в Автозапуск , стартовать вместе с оболочкой пользователя-наблюдателя и работать непрерывно. При запуске без параметров она покажет справку:
Состав пакета, файлы.
Диалоговые окна.
Поскольку запуск окна диалога блокирует вызывающую программу, управление ими оформлено как параллельный процесс (thread) чтобы не мешать процессу прослушивания сети. При старте этот thread показывает первое окно с информацией к какому GCN-серверу подключились.
Бесконечно ждать реакции пользователя нельзя, поэтому для каждого окна запускается функция таймаута, которая уничтожает его по истечению времени.
В каждый момент времени программа может показывать только одно окно требующее реакции наблюдателя. А сообщения после GRB-события могут идти сериями через секунды или минуты. Кроме того могут совпадать во времени сообщения от разных источников. Поэтому реализован следующий принцип приоритетности сообщений наблюдателю:
новое предупреждение (warning) уничтожает предыдущее;
сообщение о GRB уничтожает окно предупреждения;
если выведено сообщение о GRB, предупреждения игнорируются:
новое сообщение о GRB уничтожает предыдущее если его точность координат выше (ErrBox меньше), иначе отменяется.
Окна сообщений о GRB выглядят по разному в зависимости от полученного уровня доступа к системе управления телескопа.
|
|
|
Можно только послать координаты, затем в интерфейсе наблюдателя увидеть «куда попали», а наведение телескопа по введенным координатам запустить позже обычным образом. Если же сразу запустить наведение, то телескоп либо сразу поедет на объект, либо появится сообщение типа:
Примеры работы.
Ниже приводятся примеры «дневных» испытаний но с реакцией на реальные GRB.
Программа-ретранслятор gcn_proxy.py была стартована на сервере www.sao.ru. На клиентском компьютере стартованы сразу две программы gcn_monitor.py с параметром proxy=www.sao.ru . Одна со 2-м уровнем (только координаты) для Цейсс-1000, другая с 4-м уровнем (наведение телескопа) для БТА.
Пришло сообщение от спутника INTEGRAL о GRB №6808. Видим на экране:
Сначала
нажимаем «Send and Slew» для БТА.
Т.е. сразу после этого пришла серия сообщений от Fermi GBM (Alert, Flight, Ground) о GRB №437559466, но они были проигнорированы из-за меньшего приоритета.
Таким образом наведение на восток на Z~65º прошло успешно.
Также нажимаем «Send to Zeiss TCS» для Цейсс-1000. В интерфейсе наблюдателя на вкладке «Encdrs» видим что введенные координаты находятся в доступной области. Затем на вкладке «Object» нажимаем «GoToObject».
Также произошло успешное наведение на объект.
На следующей день появилось сообщение от Swift BAT о GRB №618556:
Скорее
всего наведение невозможно (δ≈-24.5),
но пробуем отправить координаты в
систему БТА.
Кстати, видим что через 15сек. пришло опровержение о том что событие №618556 уже не рассматривается как GRB.
На Цейсс-1000 координаты посылать не будем.