mirror of
https://github.com/eddyem/small_tel.git
synced 2026-03-22 01:31:01 +03:00
add common description
This commit is contained in:
11
Docs/Common_descrription/arcunits.sty
Normal file
11
Docs/Common_descrription/arcunits.sty
Normal file
@@ -0,0 +1,11 @@
|
||||
\def\rmpt@#1.#2{#1#2}
|
||||
\def\put@pt#1#2.#3{\ifx#3\empty#2#1\else #2.\kern-.25em\relax#1\rmpt@#3\fi}
|
||||
% magnitude
|
||||
\def\m#1{\ensuremath{\put@pt{^m}#1.\empty}}
|
||||
% degrees
|
||||
\def\arcdeg#1{\ensuremath{\put@pt{^\circ}#1.\empty}}
|
||||
% arc minutes
|
||||
\def\arcmin#1{\ensuremath{\put@pt{'}#1.\empty}}
|
||||
% arc seconds
|
||||
\def\arcsec#1{\ensuremath{\put@pt{''}#1.\empty}}
|
||||
\def\Ang{\mbox{\,\AA}}
|
||||
BIN
Docs/Common_descrription/common.pdf
Normal file
BIN
Docs/Common_descrription/common.pdf
Normal file
Binary file not shown.
551
Docs/Common_descrription/common.tex
Normal file
551
Docs/Common_descrription/common.tex
Normal file
@@ -0,0 +1,551 @@
|
||||
\documentclass[a4paper,12pt]{extarticle}
|
||||
\usepackage{/home/eddy/ed, arcunits}
|
||||
\nocolon
|
||||
\title{Общее описание первой версии системы управления телескопами комплекса <<АстроМ>>}
|
||||
\author{Емельянов Эдуард Владимирович\\ \small\itshape Лаборатория физики оптических транзиентов САО РАН}
|
||||
\begin{document}
|
||||
\maketitle
|
||||
\tableofcontents
|
||||
|
||||
\section{Состав комплекса}
|
||||
В данный момент комплекс представлен тремя независимыми телескопами на экваториальных монтировках в составе:
|
||||
\begin{enumerate}
|
||||
\item Панорамный купол <<Baader AllSky Dome 4.5-m>> с метеостанцией (не работают датчики влажности и
|
||||
атмосферного давления); телескоп <<Astrosib RC-500>> на монтировке <<10Micron GM4000HPS>>; компьютер системы
|
||||
управления \url{robotel1.sao.ru}; управляемая розетка \url{robosock1.sao.ru} на основе одноплатного компьютера
|
||||
<<Orange Pi zero>>; фотометр в составе ПЗС <<Fli ProLine PL16801>>, турели с фильтрами~B, V, R и~r', фокусера
|
||||
<<FLI Atlas>>. Фотометр установлен в ньютоновском фокусе телескопа. На внутренней стенке купола размещен
|
||||
осветитель <<плоского поля>> размером $60\times60\,$см.
|
||||
\item Панорамный купол <<Astrosib ASD-4.5>>; телескоп <<Astrosib RC-500>> на монтировке <<10Mic\-ron GM4000HPS>>;
|
||||
компьютер системы управления \url{robotel2.sao.ru}; управляемая розетка \url{robosock2.sao.ru} на основе
|
||||
одноплатного компьютера <<Orange Pi zero>>; фотометр в составе ПЗС <<Fli ProLine PL16801>> и турели с
|
||||
фильтрами~B, V, R и~r'. Фотометр установлен в кассегреновском фокусе телескопа (используется штатный
|
||||
фокусер вторичного зеркала телескопа).
|
||||
\item Панорамный купол <<Astrosib ASD-4.5>>; телескоп <<Astrosib RC-500>> на вилочной монтировке <<Астросиб
|
||||
ВМ-700>> (управляемой контроллером <<SiderealServo-II>>); ПЗС <<Fli ProLine PL16801>> для технических нужд
|
||||
установлена в фокусе Кассегрена.
|
||||
\end{enumerate}
|
||||
|
||||
Одноплатники управляемых розеток функционируют на основе ОС Armbian Linux (на основе Ubuntu), все остальные
|
||||
компьютеры (управляющие телескопами и сервер)~--- на основе ОС Gentoo Linux.
|
||||
|
||||
Кроме того, комплекс оснащен (неработающей) системой пожарной и охранной сигнализации; системой
|
||||
видеонаблюдения, подключенной к (неработающему) серверу-видеоре\-гис\-тра\-то\-ру, а также опрашиваемой
|
||||
установленным на \url{roboserv.sao.ru} ПО Zoneminder, позволяющим осуществить мониторинг всех видеокамер.
|
||||
|
||||
Характеристики телескопов <<Astrosib RC-500>> с ПЗС FLI.
|
||||
\begin{itemize}
|
||||
\item Среднее качество изображения: $\arcsec{1.5}\div\arcsec{2}$.
|
||||
\item Масштаб в прямом фокусе: $\arcsec{1.35}$ на пиксель 9\,мкм.
|
||||
\item Поле зрения в прямом фокусе: $\arcdeg{1.53}\times\arcdeg{1.55}$.
|
||||
\item Масштаб в фокусе Кассегрена: $\arcsec{0.46}$ на пиксель.
|
||||
\item Поле зрения в фокусе Кассегрена: $\arcmin{32.1}\times\arcmin{31.9}$.
|
||||
\item Вращение поля вследствие ошибок юстировки полярной оси: $<\arcsec{20}/$мин.
|
||||
\item Фотометрическая точность\footnote{2021GCN.29277....1M,
|
||||
2021ATel14459....1V}: до $\m{0.1}$ для звезд $\m{19}$.
|
||||
\end{itemize}
|
||||
Грубый механизм юстировки монтировок 10Micron не позволяет выставить полярную ось достаточно
|
||||
точно, в результате чего наблюдается небольшое остаточное вращение поля.
|
||||
|
||||
Монтировки 10Micron имеют встроенную систему коррекции наведения (СКН), однако, список точек с данными
|
||||
коррекции ограничен всего лишь 100~парами координат. Без этой системы точность наведения составляет не лучше
|
||||
$1..\arcdeg{2}$, а точность сопровождения объекта хуже~$\arcsec{15}$ за десять минут. В режиме включенной СКН
|
||||
точность наведения составляет не хуже~$\arcsec{15}$, точность сопровождения~--- не хуже~$\arcsec{3}$ за
|
||||
10~минут экспозиции.
|
||||
|
||||
Обнаружен значительный (до 0.1\,мм за ночь~--- $\arcsec{5.5}$!) температурный дрейф фокуса, что приводит к
|
||||
необходимости выполнения дополнительных фокусировок в течение наблюдательной ночи.
|
||||
|
||||
Телескоп \No\,1 введен в режим регулярной опытной эксплуатации в феврале~2020\,г., \No\,2 эксплуатируется в
|
||||
опытном режиме с января~2021\,г (изначально фотометр так же, как и на телескопе~\No\,1 был установлен в
|
||||
ньютоновском фокусе, с апреля~2022\,г перенесен в фокус Кассегрена). Телескоп \No\,3 нуждается в разработке
|
||||
специальной системы управления (т.к. имеет примитивный контроллер монтировки, в отличие от~\No\,1 и~\No\,2),
|
||||
кроме того, не завершены монтажные и пусконаладочные работы в башне этого телескопа (в т.ч. прокладка линий
|
||||
электропитания и связи; установка системы осушения воздуха в подкупольном пространстве).
|
||||
|
||||
Также в состав комплекса входит сервер обработки данных \url{roboserv.sao.ru}, дисковый накопитель
|
||||
\url{robonas.sao.ru} и второстепенное оборудование. Для удобства проведения примитивных операций (включить
|
||||
питание, открыть купол и т.д.) в куполе телескопа~\No\,1 установлен wifi-роутер.
|
||||
|
||||
Для организации наблюдений в полуавтоматическом режиме (решение о возможности начать наблюдения, а также
|
||||
начальную фокусировку проводит человек) разработан ряд демонов с сетевым доступом, позволяющих осуществлять
|
||||
управление узлами комплекса. Дальнейшее выполнение наблюдений производится по сценарию, например, в виде
|
||||
bash-скрипта.
|
||||
|
||||
\section{Состав предварительной системы управления телескопами}
|
||||
\subsection{Метеорологические параметры}
|
||||
Для получения доступа к метеорологическим параметром на \url{robotel1.sao.ru} работает утилита
|
||||
\texttt{weatherdaemon}\footnote{\url{https://github.com/eddyem/small_tel/tree/master/Daemons/weatherdaemon}},
|
||||
ее параметры:
|
||||
\begin{description}
|
||||
\item[-P, -{}-pidfile=arg] полный путь к PID-файлу (по умолчанию \texttt{/tmp/weatherdaemon.pid});
|
||||
\item[-b, -{}-baudrate=arg] скорость работы с последовательным портом, к которому подключена локальная
|
||||
метеостанция (по умолчанию: 9600);
|
||||
\item[-d, -{}-device=arg] полный путь к устройству последовательного порта;
|
||||
\item[-e, -{}-emulation] эмуляция последовательного порта для тестов (регулярно выдается одно и то же
|
||||
сообщение);
|
||||
\item[-h, -{}-help] отображение справки;
|
||||
\item[-l, -{}-logfile=arg] файл для сохранения логов (по умолчанию отсутствует);
|
||||
\item[-p, -{}-port=arg] номер порта сокета, в который будут выдаваться полученные метеоданные (по умолчанию
|
||||
12345);
|
||||
\item[-v, -{}-verb] каждый \verb'-t' увеличивает уровень детализации сообщений и логгирования.
|
||||
\end{description}
|
||||
|
||||
Утилита один раз в 10~секунд опрашивает локальную метеостанцию, откуда берется информация о температуре
|
||||
воздуха, скорости ветра и наличии осадков. Также опрашивается СУ~БТА на предмет метеоданных. При подключении к
|
||||
сокету на заданном порту выдается информация (далее она повторяется каждые 10~секунд~--- сразу после получения
|
||||
новых данных с местной метеостанции), например:
|
||||
\begin{verbatim}
|
||||
Rain=1
|
||||
Clouds=0.0
|
||||
Exttemp=10.7
|
||||
Wind=1.4
|
||||
BTAExttemp=12.1
|
||||
BTAPres=597.2
|
||||
BTAWind=0.9
|
||||
BTAHumid=98.9
|
||||
Time=1658239138
|
||||
\end{verbatim}
|
||||
Поля с префиксом <<BTA>> содержат информацию с метеостанции БТА. Форсировать получение данных можно,
|
||||
передав любой символ в сокет (при этом будет отображен последний пакет информации). Поле <<Time>> содержит
|
||||
UNIX-time последнего измерения. Поле <<Clouds>> содержит данные датчика, измеряющего условную температуру неба
|
||||
(чем больше его значение, тем лучше качество изображения; оптимальным для начала наблюдений является значение
|
||||
не меньше~2500).
|
||||
|
||||
Для упрощения использования метеоданных в файлах-сценариях разработан bash-скрипт
|
||||
\texttt{chkweather}\footnote{\url{https://github.com/eddyem/small_tel/blob/master/Daemons/weatherdaemon/chkweather}},
|
||||
который производит разбор полученных из сокета (при помощи утилиты \texttt{netcat}) данных и, помимо того, что
|
||||
выводит их в stdout, завершается с кодом ошибки в случае, если погодные условия не позволяют проводить наблюдения
|
||||
(Clouds меньше~1700, наличие осадков, либо ветер свыше 15\,м/с). В случае, если в течение пяти минут скрипт
|
||||
возвращает ошибку, необходимо прекратить наблюдения, припарковать телескоп и закрыть створки телескопа и купола.
|
||||
|
||||
\subsection{Управление телескопом}
|
||||
Полностью управление узлами телескопа еще не реализовано (т.е. нет возможности получить величину температуры
|
||||
его узлов, включить вентиляторы охлаждения главного зеркала или нагрев вторичного), есть лишь возможность
|
||||
работать со створками телескопа (открыть/закрыть), для чего на телескопе~\No\,1 работает утилита
|
||||
\texttt{teldaemon}\footnote{\url{https://github.com/eddyem/small_tel/tree/master/Daemons/teldaemon}}. Ее
|
||||
аргументы:
|
||||
\begin{description}
|
||||
\item[-d, -{}-device=arg] полный путь к устройству последовательного порта;
|
||||
\item[-e, -{}-echo] <<эхо>> команды пользователя;
|
||||
\item[-h, -{}-help] отображение справки;
|
||||
\item[-l, -{}-logfile=arg] файл для сохранения логов (по умолчанию отсутствует);
|
||||
\item[-p, -{}-port=arg] номер порта сокета, по которому будут приниматься команды (по умолчанию
|
||||
4444);
|
||||
\item[-t, -{}-terminal] работать в режиме терминала, передавая все пользовательские данные в порт и
|
||||
выдавая обратно ответ.
|
||||
\end{description}
|
||||
|
||||
Посылать команды (open, close и status) можно как напрямую в сокет при помощи \texttt{netcat}, так и из
|
||||
адресной строки браузера или запросом \texttt{curl}, например:\\
|
||||
\centerline{\texttt{curl localhost:4444/status}}
|
||||
|
||||
На телескопе~\No\,2 управление производится иначе: т.к. он работает в кассегреновском фокусе, задавать
|
||||
положение фокуса и открывать/закрывать створки необходимо прямыми командами в порт. Для этой цели используются
|
||||
скрипты \texttt{Chfocus}\footnote{\url{https://github.com/eddyem/small_tel/blob/master/Daemons/astrosib/Chfocus}}
|
||||
(задание положения фокусера; кроме того, этот скрипт заполняет файл FOCUS.hdr в локальной директории данными
|
||||
для FITS-заголовка с информацией о текущем отсчете фокусера),
|
||||
\texttt{OpenScope}\footnote{\url{https://github.com/eddyem/small_tel/blob/master/Daemons/astrosib/OpenScope}}
|
||||
и \texttt{CloseScope}\footnote{\url{https://github.com/eddyem/small_tel/blob/master/Daemons/astrosib/CloseScope}} (открыть и
|
||||
закрыть створки телескопа).
|
||||
|
||||
\subsection{Управление монтировкой <<10Micron>>}
|
||||
Сетевой взаимосвязью пользователя с монтировкой является утилита
|
||||
\texttt{stellariumdaemon}\footnote{\url{https://github.com/eddyem/small_tel/tree/master/Daemons/10micron_stellarium}},
|
||||
имеющая следующие аргументы:
|
||||
\begin{description}
|
||||
\item[-D, -{}-dbgport=arg] сетевой порт, позволяющий работать напрямую с терминалом управления
|
||||
монтировкой (для
|
||||
ввода команд напрямую);
|
||||
\item[-P, -{}-pidfile=arg] PID-файл (по умолчанию \texttt{/tmp/stellariumdaemon.pid});
|
||||
\item[-W, -{}-wname=arg] имя или IP-адрес компьютера, на котором запущен <<погодный демон>>;
|
||||
\item[-d, -{}-device=arg] полный путь к устройству последовательного порта;
|
||||
\item[-e, -{}-emulation] работа в режиме эмуляции (только для клиента Stellarium);
|
||||
\item[-h, -{}-help] отображение справки;
|
||||
\item[-l, -{}-logfile=arg] файл для сохранения логов (по умолчанию отсутствует);
|
||||
\item[-p, -{}-port=arg] номер порта сокета, по которому будут приниматься команды от Stellarium (по
|
||||
умолчанию 10000);
|
||||
\item[-w, -{}-wport=arg] номер порта сервера <<погодного демона>>.
|
||||
\end{description}
|
||||
|
||||
Утилита позволяет задавать положение телескопа из виртуального планетария Stellarium, а также вводить любые
|
||||
команды напрямую. Например, так можно навести телескоп на точку $A=90\degr$, $Z=45\degr$:
|
||||
\begin{verbatim}
|
||||
#!/bin/bash
|
||||
|
||||
A="90:00:00"
|
||||
H="45:00:00"
|
||||
|
||||
function sendcmd(){
|
||||
echo $1 | nc 192.168.70.33 10001 -q10
|
||||
}
|
||||
|
||||
sendcmd ":Sz${A}#"
|
||||
sendcmd ":Sa${H}#"
|
||||
sendcmd ":MS#"
|
||||
while true; do
|
||||
ANS=$(sendcmd ":Gstat#")
|
||||
echo $ANS
|
||||
[ $ANS == "0#" ] && break
|
||||
sleep 2
|
||||
done
|
||||
\end{verbatim}
|
||||
|
||||
Скрипт
|
||||
\texttt{GetCoords}\footnote{\url{https://github.com/eddyem/small_tel/blob/master/Auxiliary_utils/bash_scripts/GetCoords}}
|
||||
позволяет получить текущие координаты телескопа. Также для этих целей служит утилита
|
||||
\verb'send_coords'\footnote{\url{https://github.com/eddyem/small_tel/tree/master/Daemons/send_coordinates}}, позволяющая
|
||||
работать с монтировкой через интерфейс Stellarium. Ее аргументы:
|
||||
\begin{description}
|
||||
\item[-H, -{}-host=arg] имя или IP-адрес хоста, где запущен демон <<10Micron>> (по умолчанию:
|
||||
localhost);
|
||||
\item[-P, -{}-port=arg] порт сокета на этом хосте (умолчание: 10000);
|
||||
\item[-d, -{}-dec=arg] склонение цели (DD:MM:SS.SS);
|
||||
\item[-h, -{}-help] отображение справки;
|
||||
\item[-m, -{}-monitor] мониторинг координат (утилита не завершается, пока пользователь не прервет
|
||||
ее);
|
||||
\item[-q, -{}-quiet] подавлять любой вывод в терминал;
|
||||
\item[-r, -{}-ra=arg] прямое восхождение цели (HH:MM:SS.SS).
|
||||
\end{description}
|
||||
|
||||
\subsection{Управление куполами}
|
||||
Управление куполами так же реализовано в виде сетевого сервиса. Купол <<Baader>> управляется сервисом
|
||||
\texttt{domedaemon}\footnote{\url{https://github.com/eddyem/small_tel/tree/master/Daemons/domedaemon}}.
|
||||
Вспомогательная задача этого сервиса~--- не дать куполу закрыться во время наблюдений по таймауту watchdog'а.
|
||||
Аргументы:
|
||||
\begin{description}
|
||||
\item[-d, -{}-device=arg] полный путь к устройству последовательного порта;
|
||||
\item[-e, -{}-echo] <<эхо>> команды пользователя;
|
||||
\item[-h, -{}-help] отображение справки;
|
||||
\item[-l, -{}-logfile=arg] файл для сохранения логов (по умолчанию отсутствует);
|
||||
\item[-p, -{}-port=arg] номер порта сокета, по которому будут приниматься команды (по умолчанию
|
||||
55555);
|
||||
\item[-t, -{}-terminal] работать в режиме терминала, передавая все пользовательские данные в порт и
|
||||
выдавая обратно
|
||||
ответ.
|
||||
\end{description}
|
||||
Команды управления аналогичны командам телескопа.
|
||||
|
||||
Подобным же образом устроен сервис управления куполом
|
||||
<<Astrosib>>\footnote{\url{https://github.com/eddyem/small_tel/tree/master/Daemons/domedaemon-astrosib}}. При
|
||||
работе с этим куполом отмечена проблема: сбой управляющего компьютера в случае ручного (при помощи кнопок на
|
||||
панели контроллера) перемещения створок купола в промежуточное положение между полностью открытым и полностью
|
||||
закрытым состоянием (например, частично приоткрыть купол). Этот сбой чреват аварией с физическим разрушением
|
||||
купола, поэтому крайне не рекомендуется пользоваться кнопками на панели.
|
||||
|
||||
При эксплуатации куполов <<Baader>> и <<Astrosib>> в зимнее время отмечена проблема в них обоих: в случае,
|
||||
если створка купола упирается в лед или плотный снег так, что привод двигателя входит в состояние ошибки по
|
||||
превышению рабочего тока, сброс ошибки возможен исключительно вручную путем снятия и подачи питания снова. При
|
||||
этом с большой вероятностью у купола <<Astrosib>> возможна вышеуказанная поломка. Купол <<Baader>> же можно
|
||||
оснастить магнитным пускателем, разрывающим цепи питания приводов в случае такой проблемы.
|
||||
|
||||
Для купола <<Astrosib>> требуется полная переработка системы управления (приводы допускают управление по
|
||||
RS-485, в т.ч. диагностику и сброс ошибок) с полной заменой управляющей логики. Возможно, установка дешевых
|
||||
многооборотных абсолютных энкодеров на валы двигателей упростит и значительно обезопасит процесс управления
|
||||
куполом.
|
||||
|
||||
\subsection{Управление питанием аппаратуры}
|
||||
На телескопах~\No\,1 и~\No\,2 в роли управляемых розеток выступают одноплатные компьютеры Orange Pi
|
||||
Zero, к которым подключены релейно-симисторные модули на основе микроконтроллера
|
||||
STM8S003\footnote{\url{https://github.com/eddyem/STM8_samples/tree/master/220controlled_socket}}.
|
||||
Помимо двух силовых коммутационных узлов модули имеют один выход на p-канальном MOSFET с открытым
|
||||
стоком, два выхода с открытым стоком на n-канальных MOSFET, один логический вход без развязки,
|
||||
один вход с развязкой через оптопару и два выхода с развязкой через оптопары. Один из выходов обоих
|
||||
контроллеров питания (выход~1) используется для включения системы управления монтировкой
|
||||
<<10Micron>>.
|
||||
|
||||
Модуль управления питанием подключается к управляющему одноплатнику по USB через преобразователь USB--UART,
|
||||
скорость 9800\,бод, 8N1. Протокол управления текстовый. Началом является символ двоеточия, концом~--- символ
|
||||
решетки. Между ними помещается один из управляющих символов:
|
||||
\begin{description}
|
||||
\item[A] выключить симистор канала~0;
|
||||
\item[B] выключить симистор канала~1;
|
||||
\item[c/C] проверить входы 0/1;
|
||||
\item[i/I] отобразить амплитуду тока в канале~0;
|
||||
\item[k/K] включить/выключить ключ~P0;
|
||||
\item[l/L] включить/выключить ключ~N0;
|
||||
\item[m/M] включить/выключить ключ~N1;
|
||||
\item[n/o] активировать выход~0/1;
|
||||
\item[N/O] деактивировать выход~0/1;
|
||||
\item[s/S] отобразить текущее состояние входов и выходов;
|
||||
\item[y/Y] включить/выключить реле~0;
|
||||
\item[z/Z] включить/выключить реле~1.
|
||||
\end{description}
|
||||
|
||||
Команды отсылаются в модули напрямую из
|
||||
bash-скриптов\footnote{\url{https://github.com/eddyem/small_tel/tree/master/Daemons/netsocket}}. На
|
||||
управляющих телескопами машинах настроен ssh-вход на <<розетки>> по ключам, что позволяет при помощи
|
||||
простейших сценариев выполнять включение-выключение\footnote{например,
|
||||
\url{https://github.com/eddyem/small_tel/blob/master/Auxiliary_utils/bash_scripts/HWoff}}.
|
||||
|
||||
На телескопе~\No\,1 также установлена подсветка подкупольного пространства и светильник <<плоского поля>>,
|
||||
подключенные через двухканальный USB-модуль реле. Модуль управляется посредством утилиты
|
||||
\verb'relay_manage'\footnote{\url{https://github.com/eddyem/eddys_snippets/tree/master/USBrelay}}. На нулевом
|
||||
канале установлено освещение подкупольного, а на первом~--- <<плоского поля>>. Аргументы командной строки:
|
||||
\begin{description}
|
||||
\item[-d, -{}-device=arg] полный путь к файлу устройства (если к компьютеру подключено несколько
|
||||
реле, udev-скрипт создает в директории \verb'/dev' файлы \texttt{relayX}, где X~-- номер
|
||||
устройства);
|
||||
\item[-h, -{}-help] отобразить справку;
|
||||
\item[-q, -{}-quiet] не отображать в терминал информацию;
|
||||
\item[-r, -{}-reset=arg] выключить реле с заданным номером;
|
||||
\item[-s, -{}-set=arg] включить реле с заданным номером.
|
||||
\end{description}
|
||||
Аргументы \verb'-s' и \verb'-r' могут встречаться в любом количестве (т.е. сразу можно
|
||||
включить\slash выключить несколько каналов).
|
||||
|
||||
|
||||
\subsection{Управление узлами фотометра}
|
||||
Для управления всеми узлами FLI используется утилита
|
||||
\verb'fli_control'\footnote{\url{https://github.com/eddyem/mytakepic/tree/master/fli_control}}
|
||||
(рекомендуется заменить ее на более современную
|
||||
\verb'ccd_capture'\footnote{\url{https://github.com/eddyem/CCD_Capture}}).
|
||||
Аргументы:
|
||||
\begin{description}
|
||||
\item[-8, -{}-8bit] работа в восьмибитном режиме (если доступна);
|
||||
\item[-A, -{}-author=arg] значение поля AUTHOR FITS-заголовка;
|
||||
\item[-D, -{}-display] отобразить полученное изображение в псевдоцветах в окне OpenGL;
|
||||
\item[-F, -{}-fast] быстрый режим считывания;
|
||||
\item[-I, -{}-instrument=arg] значение поля INSTRUME FITS-заголовка;
|
||||
\item[-N, -{}-obsname=arg] значение поля OBSERVER FITS-заголовка;
|
||||
\item[-O, -{}-object=arg] значение поля OBJECT FITS-заголовка;
|
||||
\item[-P, -{}-prog-id=arg] значение поля PROGRAM FITS-заголовка;
|
||||
\item[-V, -{}-verbose] увеличение уровня подробности сообщений;
|
||||
\item[-Y, -{}-objtype=arg] значение поля OBJTYPE FITS-заголовка;
|
||||
\item[-a, -{}-addsteps=arg] относительное перемещение фокусера на заданное количество шагов;
|
||||
\item[-c, -{}-conf-ioport=arg] конфигурация порта I/O (1~-- выход, 0~-- вход для каждого бита);
|
||||
\item[-d, -{}-dark] снимать <<темновые>> кадры;
|
||||
\item[-f, -{}-nflushes=arg] сделать N~засветок матрицы перед экспозицией (не работает для PL16801);
|
||||
\item[-g, -{}-goto=arg] переместить фокусер в заданную абсолютную позицию (количество шагов);
|
||||
\item[-h, -{}-hbin=arg] горизонтальный биннинг;
|
||||
\item[-i, -{}-get-ioport] получить состояние порта I/O;
|
||||
\item[-n, -{}-nframes=arg] количество кадров в серии;
|
||||
\item[-p, -{}-pause=arg] пауза (в секундах) между кадрами серии;
|
||||
\item[-r, -{}-addrec] внести в FITS-заголовок записи из указанного файла (таких файлов может быть
|
||||
несколько);
|
||||
\item[-s, -{}-set-ioport=arg] установить значение порта I/O;
|
||||
\item[-t, -{}-set-temp=arg] установить температуру чипа ПЗС;
|
||||
\item[-v, -{}-vbin=arg] вертикальный биннинг;
|
||||
\item[-w, -{}-wheel-set=arg] установить заданную позицию колеса турели фильтров (начиная с нуля);
|
||||
\item[-x, -{}-exptime=arg] установить время экспозиции (\textbf{милли}секунд);
|
||||
\item[-{}-X0=arg] а также -{}-X1, -{}-Y0 и -{}-Y1~-- установить координаты части фрейма (в случае
|
||||
значения $-1$ выбирается минимальная или максимальная величина, включая область оверскана);
|
||||
\item[-{}-async] асинхронное (без ожидания окончания) движение шагового двигателя турели\slash
|
||||
фо\-ку\-се\-ра;
|
||||
\item[-{}-close-shutter] закрыть затвор;
|
||||
\item[-{}-help] отобразить справку;
|
||||
\item[-{}-open-shutter] открыть затвор;
|
||||
\item[-{}-rewrite] перезаписать выходной файл, если он существует (иначе будет выдано сообщение об
|
||||
ошибке и файл записан не будет);
|
||||
\item[-{}-shutter-on-high] затвор откроется и экспозиция начнется при наличии высокого сигнала на
|
||||
контакте~5 порта~I/O;
|
||||
\item[-{}-shutter-on-low] затвор откроется и экспозиция начнется при наличии низкого сигнала на
|
||||
контакте~5 порта~I/O.
|
||||
\end{description}
|
||||
|
||||
При проведении первых технических наблюдений было замечено, что данные модели ПЗС не оснащены ИК-засветкой,
|
||||
гарантирующей повторяемость результатов измерений. В итоге на снимках появлялись <<д\'ухи>> (особенно от ярких
|
||||
объектов). ПЗС были модифицированы: зазор между покровным стеклом ПЗС и затвором увеличен до 0.8\,мм, а по
|
||||
периметру крышки вокруг затвора установлено четыре ИК-светодиода (850\,нм). Управление светодиодами подключено
|
||||
к каналу~8 порта~I/O ПЗС. Для организации preflash в данном случае необходимо использовать сценарий:
|
||||
\begin{verbatim}
|
||||
#!/bin/bash
|
||||
|
||||
echo "Wait, pre-flashing is in process"
|
||||
fli_control -c8 >/dev/null
|
||||
fli_control -s0 >/dev/null
|
||||
fli_control -x2000 -d -F
|
||||
fli_control -s8 >/dev/null
|
||||
fli_control -c0 >/dev/null
|
||||
fli_control -F -x1 -v32 -h32 -n2 -d >/dev/null
|
||||
fli_control -x1 -v32 -h32 -d >/dev/null
|
||||
fli_control -x1 -v2 -h2 -d
|
||||
\end{verbatim}
|
||||
В данном случае выполняется настройка контакта~8 порта~I/O на выход, значение контакта устанавливается в нуль (что
|
||||
включает светодиоды, чьи аноды подтянуты к питанию через токозадающий резистор), далее выполняется
|
||||
двухсекундная экспозиция с закрытым затвором в режиме быстрого считывания. После чего светодиоды отключаются и
|
||||
порт переконфигурируется обратно в режим входа. Последующие четыре чтения в разных режимах полностью снимают
|
||||
<<д\'ухи>> от засветки, выводя уровень сигнала на средний уровень bias. Рекомендуется делать preflash перед каждым
|
||||
научным кадром и кадром <<плоского поля>>. В случае съемки темновых и bias'ов этого не требуется.
|
||||
|
||||
Отмечено, что при работе в быстром режиме считывания следующий кадр в обычном режиме получается испорченным.
|
||||
Поэтому при переходе между разными скоростями считывания необходимо делать тестовый промежуточный кадр. Для
|
||||
ускорения считывания можно использовать биннинг (\verb'-v32' \verb'-h32').
|
||||
|
||||
\subsection{Вспомогательные утилиты}
|
||||
Для запуска наблюдений рекомендуется использовать скрипт
|
||||
\texttt{STARTobs}\footnote{\url{https://github.com/eddyem/small_tel/blob/master/Auxiliary_utils/bash_scripts/STARTobs}},
|
||||
который включает питание аппаратуры,
|
||||
открывает створки телескопа и купола, устанавливает температуру светоприемника фотометра в~$-45\degr$C.
|
||||
Скрипт
|
||||
\texttt{STOPobs}\footnote{\url{https://github.com/eddyem/small_tel/blob/master/Auxiliary_utils/bash_scripts/STOPobs}}
|
||||
выполняет указанные действия в обратном порядке, закрывая створки и отключая питание.
|
||||
Обратите внимание на то, что этот скрипт не паркует телескоп перед отключением питания, запарковать необходимо
|
||||
скриптом \verb'park_telescope'. В случае телескопа~\No\,1 парковочным положением является наведение телескопа на
|
||||
осветитель <<плоского поля>>.
|
||||
|
||||
При наблюдении в режиме автоматического сценария без участия человека необходимо выполнить следующую базовую
|
||||
последовательность действий.
|
||||
\begin{enumerate}
|
||||
\item Проверить состояние погоды (\texttt{chkweather}). Если скрипт завершен с ошибкой, запускать наблюдения нельзя.
|
||||
\item Включить питание и открыть телескоп и купол (\texttt{STARTobs}).
|
||||
\item\label{cycle} В цикле проверять состояние погоды и выполнять наблюдения по программе (менять фильтры в турели,
|
||||
менять фокусное расстояние на поправку к фильтру, выполнять экспозицию перенаводить телескоп).
|
||||
\item Проверить состояние телескопа при помощи \verb'send_coords' (если оно не равно~0, перенавести телескоп на
|
||||
объект). Также, чтобы не потерять экспозиций, можно проверять командой \verb':Gmte#', отправляемой в отладочный
|
||||
порт \texttt{stellariumdaemon} время (в минутах) до перекладки (если оно меньше времени экспозиции плюс две--три
|
||||
минуты, вызвать \verb'send_coords' для перенаведения телескопа с перекладкой).
|
||||
\item В случае неблагоприятных условий погоды в течение более, чем 3--5 минут, либо окончании ночи, припарковать
|
||||
телескоп и закрыть купол, иначе~--- вернуться к п.\,\ref{cycle}.
|
||||
\item\label{flats} При необходимости выполнить съемки <<плоских полей>> и прочих калибровочных данных.
|
||||
\item Выполнить \texttt{STOPobs} для полного завершения наблюдений.
|
||||
\end{enumerate}
|
||||
|
||||
В случае переменчивой погоды допускается парковку телескопа и пункт~\ref{flats} отложить до
|
||||
наступления утра, а при закрытом куполе мониторить погоду: в случае, если состояние вернется в
|
||||
нормальное и будет таковым свыше 15~минут, можно открыть купол и продолжить наблюдения.
|
||||
|
||||
Для упрощения определения времени начала и окончания наблюдений можно воспользоваться утилитой
|
||||
noon\footnote{\url{https://github.com/eddyem/small_tel/tree/master/Auxiliary_utils/Sun}}.
|
||||
По умолчанию эта утилита отображает время прохода видимого диска Солнца через небесный меридиан
|
||||
(т.е. истинный солнечный полдень). Время~--- в секундах UNIX-time.
|
||||
В случае, если утилита запущена под именем \verb'sunrise', отображается время ближайшего восхода
|
||||
Солнца с пересечением заданного угла под горизонтом (аргумент утилиты).
|
||||
Запуск под именем \verb'sunset' дает время захода. Без аргументов вычисляется время окончания или
|
||||
начала астрономических сумерек (для определения времени начала или окончания наблюдений). Помимо
|
||||
значения угла аргументом может быть <<standard>> (пересечение горизонта), <<civil>>~-- граница
|
||||
гражданской ночи, <<nautic>>~-- граница навигационной ночи или <<astro>>~-- граница астрономической
|
||||
ночи.
|
||||
|
||||
\section{Юстировка полярной оси и коррекция системы наведения}
|
||||
Юстировка полярной оси производится механически при помощи ручного пульта управления телескопом.
|
||||
Для точной коррекции понадобится также переносной компьютер (чтобы иметь возможность выставить
|
||||
звезду в центр кадра). Юстировка производится итеративно путем последовательных наведений на
|
||||
Полярную звезду и звезду вдалеке от полюса (ближе к югу). Вначале коррекцией с пульта южная звезда
|
||||
устанавливается в центр кадра ПЗС, далее телескоп наводится на Полярную и при помощи шестигранных
|
||||
ключей необходимо выставить ось телескопа так, чтобы звезда находилась в центре кадра. Посредством
|
||||
небольшого количества итераций ось выставляется с точностью до десятка угловых секунд.
|
||||
|
||||
Для расчета данных системы коррекции наведения (СКН) необходимо получить астрометрические поля
|
||||
минимум в сотне равномерно распределенных по полусфере точках. Координаты точек рассчитываются при
|
||||
помощи octave-функции \verb'angdist':
|
||||
\begin{verbatim}
|
||||
num_pts = 100;
|
||||
indices=[0:num_pts/2-1]+0.5;
|
||||
phi = acos(1 - 2*indices/num_pts);
|
||||
theta = pi * (1 + sqrt(5)) * indices;
|
||||
phi=pi/2-phi; % Zd -> H
|
||||
lowest=20*pi/180;
|
||||
idx=find(phi<lowest);
|
||||
phi(idx)=[];
|
||||
theta(idx)=[];
|
||||
|
||||
s=size(phi,2);
|
||||
|
||||
A=[]; H=[];
|
||||
for i = 1:s; A=[A 180-mod(theta(i), 2*pi)*180/pi]; H=[H phi(i)*180/pi]; endfor
|
||||
[~,idx]=sort(A);
|
||||
As=A(idx); Hs=H(idx);
|
||||
|
||||
f=fopen("azimuth-altitude", "w");
|
||||
for i = 1:s
|
||||
Az = As(i);
|
||||
if (Az < 0); Az += 360.; endif
|
||||
fprintf(f, "%s\t%s\n", ang(Az), ang(Hs(i)));
|
||||
printf("%s\t%s\n", ang(Az), ang(90-Hs(i)));
|
||||
endfor
|
||||
fclose(f);
|
||||
\end{verbatim}
|
||||
Она использует функцию \verb'ang', преобразующую угловую меру в строковый вид:
|
||||
\begin{verbatim}
|
||||
function s=ang(a)
|
||||
% convert angle (in degr) into a string DD:MM:SS
|
||||
sgn = "";
|
||||
if(a < 0) sgn = "-"; a = -a; endif
|
||||
d = floor(a);
|
||||
a = (a-d)*60.;
|
||||
m = floor(a);
|
||||
a = (a-m)*60.;
|
||||
s = sprintf("%s%02d:%02d:%02d", sgn, d, m, round(a));
|
||||
endfunction
|
||||
\end{verbatim}
|
||||
В итоге генерируется файл, который отправляется на вход скрипта, выполняющего наведения телескопа
|
||||
на все точки в альт-азимутальных координатах:
|
||||
\begin{verbatim}
|
||||
#!/bin/bash
|
||||
# ./sendcmds < azimuth_altitude
|
||||
|
||||
function sendcmd(){
|
||||
echo $1 | nc 192.168.70.33 10001 -q10
|
||||
}
|
||||
|
||||
badweather=0
|
||||
|
||||
while read A H; do
|
||||
chkweather 1600 > lastweather && badweather=0 || badweather=$((badweather+1))
|
||||
[ $badweather -gt 5 ] && break
|
||||
echo "badweather=$badweather"
|
||||
sendcmd ":Sz${A}#"
|
||||
sendcmd ":Sa${H}#"
|
||||
sendcmd ":MS#"
|
||||
while true; do
|
||||
ANS=$(sendcmd ":Gstat#")
|
||||
echo $ANS
|
||||
[ $ANS == "0#" ] && break
|
||||
sleep 2
|
||||
done
|
||||
/usr/bin/fli_control -r /tmp/10micron.fitsheader -x20000 field
|
||||
done
|
||||
\end{verbatim}
|
||||
|
||||
После запускается скрипт \verb'solve_all', выполняющий астрометрию:
|
||||
\begin{verbatim}
|
||||
#!/bin/bash
|
||||
for f in *; do
|
||||
solve-field --use-sextractor --no-remove-lines --uniformize 0 --radius 2 \
|
||||
-p -L 1.3 -H 1.4 -u arcsecperpix $f
|
||||
done
|
||||
rm -f *.axy *.corr *.xyls *.match *.rdls *.solved *.wcs
|
||||
\end{verbatim}
|
||||
Астрометрия производится при помощи пакета astrometry.net\footnote{\url{http://astrometry.net/}},
|
||||
установленного локально (с локально развернутыми индексными файлами необходимого масштаба). В итоге получается
|
||||
набор файлов с суффиксом \verb'.new', использующихся далее. Для окончательных расчетов таблицы ошибок
|
||||
используется
|
||||
утилита \verb'PCS_create'\footnote{\url{https://github.com/eddyem/small_tel/tree/master/Auxiliary_utils/PCS_create}} (к
|
||||
сожалению, разработчики монтировки 10Micron не позаботились об автоматическом или полуавтоматическом
|
||||
выполнении подобных работ):
|
||||
\begin{verbatim}
|
||||
PCS_create -Hd --ha > PCS_list
|
||||
PCS_create -HDd --ha > PCS_listHAdelta
|
||||
PCS_create -t > PCS_list_10micron
|
||||
\end{verbatim}
|
||||
В результате получается список ошибок в удобочитаемом человеком виде (для исключения выбросов) и в
|
||||
виде, согласно протоколу монтировки <<10Micron>>. Можно скорректировать выходной файл
|
||||
\verb'PCS_list_10micron', оставив 100~объектов без выбросов погрешностей наведения (монтировка не
|
||||
принимает более ста значений). Далее этот файл передается в монтировку при помощи скрипта:
|
||||
\begin{verbatim}
|
||||
#!/bin/bash
|
||||
|
||||
function sendcmd(){
|
||||
echo "Send $*"
|
||||
echo "$*" | nc localhost 10001 -q10
|
||||
}
|
||||
|
||||
sendcmd "pause"
|
||||
sendcmd ":newalig#"
|
||||
while read str; do
|
||||
sendcmd $str
|
||||
done < PCS_list_10micron
|
||||
sendcmd ":endalig#"
|
||||
sendcmd ":getalst#"
|
||||
sendcmd "continue"
|
||||
|
||||
echo "Well done"
|
||||
\end{verbatim}
|
||||
Команды <<pause>> и <<continue>> дают понять утилите \verb'stellariumdaemon', что необходимо
|
||||
прервать или продолжить прием внешних команд наведения (для обеспечения безопасности передачи
|
||||
данных). Далее каждая вычисленная точка отклонений передается в монтировку и дается команда
|
||||
пересчитать коэффициенты СКН.
|
||||
|
||||
|
||||
\end{document}
|
||||
Reference in New Issue
Block a user