mirror of
https://github.com/eddyem/astrovideoguide_v3.git
synced 2026-03-22 09:41:04 +03:00
Added documentation
This commit is contained in:
@@ -1,13 +1,16 @@
|
||||
\documentclass[a4paper,12pt]{extarticle}
|
||||
\usepackage{/home/eddy/ed}
|
||||
\usepackage{afterpage}
|
||||
\usepackage{longtable}
|
||||
|
||||
\def\t#1{\texttt{#1}}
|
||||
\def\look#1{(см.\,стр.\,\pageref{#1}, п.\,\ref{#1})}
|
||||
\nocolon
|
||||
|
||||
\author{Емельянов Э.~В. \and Фатхуллин Т.~А.}
|
||||
\title{Система управления оптоволоконным спектрографом 1-м телескопа}
|
||||
\begin{document}
|
||||
\maketitle
|
||||
\maketitle\tableofcontents
|
||||
\section{Описание}
|
||||
Основой системы управления прибором является мини-компьютер под управлением ОС Gentoo Linux, расположенного
|
||||
на подвесной части. В подвесной части расположены три шаговых двигателя (управляются по CAN-шине): управление
|
||||
@@ -25,6 +28,16 @@
|
||||
Данный демон\footnote{\url{https://github.com/eddyem/astrovideoguide_v3/tree/main/LocCorr}} предназначен для анализа
|
||||
изображений, определения координат центроидов и выдачи управляющих сигналов на корректирующую аппаратуру.
|
||||
|
||||
Для сборки утилиты используется \t{cmake}: в рабочей директории проекта создается поддиректория, далее в ней
|
||||
необходимо запустить \t{cmake ..}, после чего~-- \t{make} и \t{su -c "make install"}. Утилита имеет следующие зависимости:
|
||||
\begin{description}
|
||||
\item[libusefull\_macros] библиотека\footnote{\url{https://github.com/eddyem/snippets\_library}} с функциями парсинга
|
||||
командной строки, отладочными макросами, логгированием и т.п.;
|
||||
\item[libcfitsio] для работы с FITS-файлами;
|
||||
\item[libflycapture и libflycapture-c] поддержка светоприемников Grasshopper;
|
||||
\item[набор библиотек pylonbase] поддержка светоприемников Basler.
|
||||
\end{description}
|
||||
|
||||
В качестве входных изображений могут быть файлы формата FITS, JPEG или PNG (посредством \t{inotify} производится
|
||||
мониторинг обновления одного файла либо появления новых файлов в указанной директории), CMOS-светоприемники
|
||||
Basler или Grasshopper. Возможно добавление других источников, для этого необходимо в директории проекта создать
|
||||
@@ -70,36 +83,63 @@ Basler
|
||||
|
||||
\subsubsection{Аргументы командной строки демона}
|
||||
\begin{description}
|
||||
\item[-A, --maxarea=arg]
|
||||
максимальная площадь (в пикселях) объекта (по умолчанию~150000);
|
||||
\item[-C, --canport=arg]
|
||||
порт локального сервера \t{canserver} (по умолчанию~4444);
|
||||
\item[-D, --ndilat=arg]
|
||||
количество дилатаций при обработке изображения (по умолчанию~2);
|
||||
\item[-E, --neros=arg]
|
||||
количество эрозий при обработке изображения (по умолчанию~2);
|
||||
\item[-H, --height=arg]
|
||||
высота рабочего участка изображения;
|
||||
\item[-I, --minarea=arg]
|
||||
минимальная площадь (в пикселях) объекта (по умолчанию~400);
|
||||
\item[-L, --logXY=arg]
|
||||
файл для логгирования вычисленных координат центроидов;
|
||||
\item[-A, --maxarea=arg]
|
||||
максимальная площадь (в пикселях) объекта (по умолчанию~150000);
|
||||
\item[-C, --canport=arg]
|
||||
порт локального сервера \t{canserver} (по умолчанию~4444);
|
||||
\item[-D, --ndilat=arg]
|
||||
количество дилатаций при обработке изображения (по умолчанию~2);
|
||||
\item[-E, --neros=arg]
|
||||
количество эрозий при обработке изображения (по умолчанию~2);
|
||||
\item[-H, --height=arg]
|
||||
высота рабочего участка изображения;
|
||||
\item[-I, --minarea=arg]
|
||||
минимальная площадь (в пикселях) объекта (по умолчанию~400);
|
||||
\item[-L, --logXY=arg]
|
||||
файл для логгирования вычисленных координат центроидов;
|
||||
\item[-N, --naverage=arg]
|
||||
количество изображений для вычисления средних координат центроида (от~1 до~25);
|
||||
\item[-P, --pidfile=arg]
|
||||
файл с PID сервера (по умолчанию \t{/tmp/loccorr.pid});
|
||||
\item[-T, --intthres=arg]
|
||||
порог яркости изображений при сортировке ($(I_1-I_2)/(I_1+I_2)$, по умолчанию~0.01)
|
||||
\item[-W, --width=arg]
|
||||
ширина рабочего участка изображения;
|
||||
\item[-X, --xtarget=arg]
|
||||
координата~$X$ цели (оптоволокна, щели);
|
||||
\item[-Y, --ytarget=arg]
|
||||
координата~$Y$ цели;
|
||||
\item[-b, --blackp=arg]
|
||||
доля пикселей с низкой интенсивностью, которая будет отброшена при эквализации гистограммы
|
||||
(если включена эквализация обработанного кадра);
|
||||
количество изображений для вычисления средних координат центроида (от~1 до~25);
|
||||
\item[-P, --pidfile=arg]
|
||||
файл с PID сервера (по умолчанию \t{/tmp/loccorr.pid});
|
||||
\item[-T, --intthres=arg]
|
||||
\item[-c, --confname=arg]
|
||||
имя файла конфигурации (по умолчанию \t{loccorr.conf});
|
||||
\item[-e, --equalize]
|
||||
выполнять эквализацию обработанного кадра;
|
||||
\item[-h, --help]
|
||||
вызвать данную справку;
|
||||
\item[-i, --input=arg]
|
||||
название объекта для мониторинга новых изображений (имя файла или директории,
|
||||
<<grasshopper>> или <<basler>> при захвате с КМОП-камеры);
|
||||
\item[-W, --width=arg]
|
||||
\item[-j, --jpegout=arg]
|
||||
название файла, куда будет записано обработанное изображение (по умолчанию
|
||||
\t{./outpWcrosses.jpg});
|
||||
\item[-X, --xtarget=arg]
|
||||
координата~$X$ цели (оптоволокна, щели);
|
||||
\item[-Y, --ytarget=arg]
|
||||
координата~$Y$ цели;
|
||||
\item[-b, --blackp=arg]
|
||||
доля пикселей с низкой интенсивностью, которая будет отброшена при эквализации гистограммы
|
||||
(если включена эквализация обработанного кадра);
|
||||
\item[-c, --confname=arg]
|
||||
\item[-l, --logfile=arg]
|
||||
файл, в который будет вестись логгирование;
|
||||
\item[-p, --proc=arg]
|
||||
имя модуля процессинга коррекций (<<pusirobo>>);
|
||||
\item[-v, --verbose]
|
||||
повысить уровень информативности логгирования (каждый~\t{-v} повышает на~1);
|
||||
\item[-x, --xoff=arg]
|
||||
сдвиг по оси~$X$ рабочего участка изображения;
|
||||
\item[-y, --yoff=arg]
|
||||
сдвиг по оси~$Y$ рабочего участка изображения;
|
||||
\item[--ioport=arg]
|
||||
номер порта сокета для подключения управления (по умолчанию 12345);
|
||||
\item[--maxexp=arg]
|
||||
максимальная экспозиция (в миллисекундах, по умолчанию 500);
|
||||
\item[--minexp=arg]
|
||||
минимальная экспозиция (в миллисекундах, по умолчанию 0.001).
|
||||
\end{description}
|
||||
|
||||
\subsubsection{Конфигурационные параметры}
|
||||
@@ -281,7 +321,8 @@ relay=newval - Send relay commands (Rx=0/1, PWMX=0..255)
|
||||
\t{moveU} и \t{moveV}~--- относительные значения. Если требуемое значение за диапазоном перемещения, будет
|
||||
возвращено \t{FAILED}.
|
||||
|
||||
Запрос \t{imdata} возвращает состояние граббера:
|
||||
|
||||
\subsubsection{Калибровка корректора положения звезды}
|
||||
Калибровка выполняется автоматически в режиме \t{stpstate=setup}. Для начала ее проведения необходимо установить
|
||||
все подвижки в среднее положение, навести телескоп на относительно яркую звезду, сфокусироваться телескопом,
|
||||
установить звезду как можно более близко к метке рабочего оптоволокна и включить процедуру калибровки.
|
||||
@@ -396,9 +437,14 @@ $$
|
||||
разные порты USB. В случае, если базовое устройство перестанет корректно работать, автоматически произойдет
|
||||
переподключение к резервному.
|
||||
|
||||
Компилируется при помощи \t{cmake}. Из внешних зависимостей имеет лишь библиотеку
|
||||
\t{libusefull\_macros}\footnote{\url{https://github.com/eddyem/snippets\_library}} .
|
||||
|
||||
\subsubsection{Аргументы командной строки}
|
||||
положения по обеим осям. Таким образом, смещению по оси~$U$ на $N_U$~шагов будут соответствовать изменения
|
||||
координат~$\D{y_u}$ и~$\D{x_u}$, а смещению по оси~$V$ на $N_V$~шагов~---~$\D{x_v}$ и~$\D{y_v}$.
|
||||
|
||||
\begin{description}
|
||||
|
||||
\item[-P, --pid=arg] PID устройства преобразователя;
|
||||
\item[-V, --vid=arg] VID устройства;
|
||||
\item[-e, --echo] включить опцию <<эха>> введенных пользователем команд;
|
||||
\item[-i, --device=arg] название файла устройства преобразователя;
|
||||
@@ -408,7 +454,8 @@ $$
|
||||
\item[-s, --speed=arg] скорость соединения по CAN-шине (в бодах);
|
||||
\item[-v, --verbose] повысить уровень подробностей логгирования (каждая \t{-v} повышает уровень на 1);
|
||||
\item[--pidfile=arg] имя PID-файла процесса (по умолчанию: \t{/tmp/canserver.pid}).
|
||||
В результате вычислим искомые коэффициенты по уравнению~\eqref{maineq}.
|
||||
|
||||
\end{description}
|
||||
|
||||
\subsubsection{Сетевой протокол}
|
||||
В целях безопасности сетевое соединение для подключения клиентов открывается исключительно на локальном
|
||||
@@ -543,8 +590,11 @@ application because of the present device state'
|
||||
всем подключенным клиентам.
|
||||
|
||||
|
||||
Для перемещения в заданное абсолютное положение дадим команду~\t{absmove}:
|
||||
\begin{verbatim}
|
||||
\subsection{Демон \t{spec\_server}}
|
||||
\input{spec_server.tex}
|
||||
|
||||
\subsection{Интерфейс наблюдателя}
|
||||
\input{webinterface.tex}
|
||||
|
||||
\section{Электронные компоненты}
|
||||
\subsection{Преобразователь USB--CAN}\label{canusb}
|
||||
@@ -718,4 +768,41 @@ typedef enum{
|
||||
запуска микроконтроллера (little endian \t{uint32\_t}).
|
||||
\end{description}
|
||||
|
||||
\end{verbatim}
|
||||
\section{Запуск утилит в автоматическом режиме}
|
||||
Управляющий узлами спектрографа мини-ПК установлен на подвесной части. При подключении к новой сети
|
||||
необходимо сначала сконфигурировать сетевой интерфейс. По умолчанию LAN1 настроен на IP \t{192.168.3.226/23} с
|
||||
шлюзом \t{192.168.2.11} и DNS \t{192.168.2.111}. Интерфейс LAN2 настроен на \t{10.0.0.1/8} и может использоваться для
|
||||
диагностических целей. Пароль корневого пользователя: \t{root@spec}, пароль пользователя \t{eddy}, под которым
|
||||
запускаются сервисы: \t{eddy@spec}.
|
||||
|
||||
Для того, чтобы сервисы запускались автоматически, в \t{/etc/local.d} находится скрипт \t{utils.start}:
|
||||
\begin{verbatim}
|
||||
#!/bin/sh
|
||||
CONFDIR="/etc/spectrograph"
|
||||
LOGDIR="/var/log/spectrograph"
|
||||
sudo -u eddy /home/eddy/Doc/Pusirobo/canserver/mk/canserver \
|
||||
-l ${LOGDIR}/canserver.log -vv -s 250 2>/dev/null >/dev/null &
|
||||
sleep 1
|
||||
sudo -u eddy /home/eddy/Doc/LocCorr_new/mk/loccorr -vv -i basler \
|
||||
-p pusirobo -c ${CONFDIR}/loccorr.conf -L
|
||||
${LOGDIR}/XY.log -l ${LOGDIR}/loccorr.log -j /dev/shm/image.jpg \
|
||||
2>/dev/null >/dev/null &
|
||||
sleep 1
|
||||
sudo -u eddy /home/timur/PROGRAMS/C++/build-INASAN-SPEC/spec_server \
|
||||
${CONFDIR}/server-config.dat 2>/dev/null >/dev/null &
|
||||
\end{verbatim}
|
||||
|
||||
Конфигурационные файлы находятся в каталоге \t{/etc/spectrograph}, логгирование производится в каталог
|
||||
\t{/var/log/spectrograph}. Для ротации логов настроен logrotate. Его конфигурация располагается в файле
|
||||
\t{/etc/logrotate.d/spectrograph}:
|
||||
\begin{verbatim}
|
||||
/var/log/spectrograph/*.log {
|
||||
size 1M
|
||||
rotate 10
|
||||
compress
|
||||
notifempty
|
||||
missingok
|
||||
}
|
||||
\end{verbatim}
|
||||
|
||||
\end{document}
|
||||
Reference in New Issue
Block a user