eddy_em: (Default)
eddy_em ([personal profile] eddy_em) wrote2020-06-05 01:52 pm

О гидировании Ц-1000 боковым гидом

Наконец-то дообработал результаты прошлой ночи. Возникли проблемы с solve-field: он ругался на python и отваливался. Я уже и питон удалил старый (3.6), и обновил все, и установил последнюю версию solve-field… Благо, на форуме подсказали добавить в командную строку --no-remove-lines --uniformize 0, и все заработало.
Очередные лучи ненависти в адрес любителей питона!!! Уж до чего глючная штука: стоит хотя бы минорную версию не ту использовать — и кирдык… А этим товарищам нужен пакет astropy, который я не могу вкорячить в генту: даже в оверлее science он слишком старый и хочет питон 2.7, который уже давным-давно deprecated!

Когда уже разработчики научного ПО выкинут этот кусок сами знаете чего и будут писать исключительно на С/С++?

Итак, я провел три серии наблюдений: одновременно мониторил изображения с MMPP и атиковской камеры гида Zeiss-1000, чтобы понять, насколько велики расхождения между средними координатами полей. Далее при помощи solve-field вычислялась астрометрия. Как-то так для MMPP:
#!/bin/bash
for f in ZP20200603_03*.fits; do
    solve-field --no-remove-lines --uniformize 0 --use-sextractor -p -O --radius 0.15 --ra 18:15:55.55 --dec -25:43:28.58 -L 0.2 -H 0.25 -u arcsecperpix $f
done
rm -f *.axy *.corr *.xyls *.match *.rdls *.solved *.wcs

и для Atik:
#!/bin/bash
for f in obj*.fits; do
    solve-field --no-remove-lines --uniformize 0 --use-sextractor -p -O --radius 0.5 --ra 18:15:56 --dec -25:43:29 -L 1.1 -H 1.2 -u arcsecperpix $f
done
rm -f *.axy *.corr *.xyls *.match *.rdls *.solved *.wcs

(сначала натравил solve-field на пробный кадр серии вслепую, а потом из его выхлопа получил значения координат центра поляны, размера и масштаба). Масштаб у атика: 1.165''/pix, поле 27×20'; у MMPP 0.105''/pix и поле примерно 7.2×7.2'.
Дальше вот таким скриптом я получил таблички для времени (UNIX-time) и координат центра площадки MMPP:
#!/bin/bash

for idx in 1 2 3; do
> table_${idx}
for f in ZP20200603_0${idx}*.new; do
    TIME=$(fitshdr $f | grep "^JD " | awk '{print $3}')
    TM=$(echo "($TIME-2440587.5)*86400"| bc -l)
    echo "$TM $(xy2sky -d $f 1024 1024 | awk '{print $1 " " $2}')" >> table_${idx}
done
done

И вот таким — для атика:
#!/bin/bash

for idx in 1 2 3; do
    > table_${idx}
    ls Atik${idx} -1|while read f; do
        AF=Atik${idx}/$f
        TM=$(fitshdr $AF | grep ^UNIXTIME|awk '{print $2}')
        echo "$TM $(xy2sky -d $AF 696 520 | awk '{print $1 " " $2}')" >> table_${idx}
    done
done

Ну, и вот какие получились результаты.

Первая площадка, Z с 54° по 49°, центр: 18:44:19.8 +39:36:52.
Рассогласование по прямому восхождению

Рассогласование по склонению

Вторая площадка, Z с 20° по 28°, центр: 16:32:44.5, +23:08:57.
Рассогласование по прямому восхождению

Рассогласование по склонению

Третья площадка, Z с 69° по 74°, центр: 18:15:55.55, -25:43:28.58.
Рассогласование по прямому восхождению

Рассогласование по склонению

Результаты совсем ужасные. Я надеялся, что рассогласование не будет превосходить десятых долей секунды, а вона оно как! Особенно здоровое рассогласование для низко лежащей третьей площадки. Вот такое вот отсутствие изопланатизма! Мало того, что диаметр гида меньше среднего диаметра областей атмосферных неоднородностей (что приводит не к "размазыванию" изображения, а к его сдвигу как целого), так еще и явный тренд на последнем рисунке показывает, что, скорее всего, у трубы гида есть собственные гнутия.

Рассогласования координат центров площадок (гид минус фотометр). 1: dα=-9.5'', dδ=41.976''; 2: dα=-20.772'', dδ=42.462''; 3; dα=-8.82'', dδ=53.118''.


К сожалению, я не смог разобраться, как сделать перекладку трубы, чтобы и с перекладкой посмотреть, что будет, а звонить кому-то в 2 часа вечера не хотелось.
Скрипт для обработки табличных данных:
function procfile(n)
    close all;
    A = dlmread(sprintf("Atik_%d", n));
    Z = dlmread(sprintf("Zphot_%d", n));
    T0 = max(A(1,1), Z(1,1));
    Tlast = min(A(end,1), Z(end,1));
    A(find(A(:,1)>Tlast),:) = [];
    Z(find(Z(:,1)>Tlast),:) = [];
    A(find(A(:,1)<T0),:) = [];
    Z(find(Z(:,1)<T0),:) = [];
    A(:,1) -= T0;
    Z(:,1) -= T0;
    A(:, [2 3]) *= 3600;
    Z(:, [2 3]) *= 3600;
    Amed = median(A(:,[2 3]));
    Zmed = median(Z(:,[2 3]));
    printf("#%d, Dalpha=%g'', Ddelta=%g''\n", n, Amed(1)-Zmed(1), Amed(2)-Zmed(2));
    A(:, [2 3]) -= Amed;
    A(find(abs(A(:,2))>3),:) = [];
    A(find(abs(A(:,3))>3),:) = [];
    Z(:, [2 3]) -= Zmed;
    fg = figure;
    plot(A(:,1), A(:,2), Z(:,1), Z(:,2));
    xlabel("t, s"); ylabel("\\Delta\\alpha, ''");
    plotgr(sprintf("alpha_%d", n), fg);
    plot(A(:,1), A(:,3), Z(:,1), Z(:,3));
    xlabel("t, s"); ylabel("\\Delta\\delta, ''");
    plotgr(sprintf("delta_%d", n), fg);
    close all;
endfunction

И скрипт для построения графиков:
function plotgr(nm, h)
    l=legend("Atik", "Zeiss", "location", "north");
    H = 4; W = 8;
    set(h,'PaperUnits','inches')
    set(h,'PaperOrientation','landscape');
    set(h,'PaperSize',[W,H]);
    set(h,'PaperPosition',[0,0,W,H]);
    set(gca, 'fontsize', 8, 'fontweight', 'bold');
    print(h, '-dpdf', sprintf("%s.pdf", nm));
    print(h, '-dpng', sprintf("%s.png", nm));
endfunction


Как она ни плакала, а В.Л. Афанасьев был прав, утверждая, что нельзя гидировать Цейсс посредством бокового гида!