CCD_Capture

Apr. 7th, 2023 02:29 pm
eddy_em: (Default)
Исправил кое-какие баги в CCD_Capture, но таки часть еще осталась: иногда подвисает передача по сети (особенно когда окно двигаешь — видимо, потоки между собой начинают "драться"); в standalone режиме сегфолтится при отключении камеры (т.е. где-то я что-то прошляпил); возможно, еще какие-то невыявленные пока баги есть (а пока баг не выявлен, обозвать его "фичей" не выйдет).
Почему-то получилось, что использование openmp только тормозило: при openmp выполнение эквализации изоображения в 1Мпиксель занимало 20мс, а без нее — 1мс. Ну, понятно, там требуется синхронизация потоков. Однако, элементарные операции преобразования в псевдоцвета тоже ускорились (!!!), когда я выкинул openmp (а там-то вообще независимо каждый пиксель обрабатывается — ничего синхронизировать не нужно). Еще косяк — с отображением (почему-то без эквализации гистограммы вообще сплошной синий фон, надо будет изменить "линеаризацию": вычислять на масштабе 0..максимальная яркость кадра, а не 0..65536 — в 8-битном режиме вообще черт знает что выходит).
Провел тесты по скорости. Экспозиция — 1мс, сначала проверил на "dummy" — эмуляторе светоприемника: кадр 1050×1050: 34..62 в режиме standalone, 35..42 — по сети; кадр 100×100: 83..103 — standalone, 36..48 — network.
И на Basler: кадр 1928×1208: 18..19 — standalone, 18..19 — network; 100×100: 30..35 — standalone, 28..31 — network.
Ну, по крайней мере, не 2 кадра в секунду, как было у меня с использованием "куска автогида" от предыдущего спектрографа. Будем запускать напрямую ccd_capture и смотреть хоть локально, хоть по сети (с туннелированием портов посредством ssh). Жаль, что биннинг вообще никак не отражается на скорости считывания (хотя, казалось бы: если биннинг выполняется средствами DSP самой камеры, то даже 2×2 уже должен в 4 раза скорость считывания повысить). Ну, все равно нужно будет включать биннинг 4×4, т.к. уж слишком огромная звезда получается.
Пока забью на некоторые баги и вернусь к improclib — таки надо быстрей сделать автогид для ESPriF.
eddy_em: (Default)
Сегодня практически добил простейший серверок для светоприемников. Можно добавить любой светоприемник, турель или фокусер написав библиотеку-обертку над его API. Еще вчера думал, что все почти готово, но пришлось кучу дополнительных опций добавить + отладить небольшие косяки.
В "одной коробчонке" заключены standalone-приложение, сервер и клиент. Сервер работает исключительно локально (чтобы не париться с безопасностью: в случае необходимости можно и ssh-прокси сделать). Можно его повесить на UNIX-сокет (привязанный к файлу или нет) или обычный INET-сокет. Standalone оставил старый функционал. Клиент/сервер поддерживают почти все то же самое, что он умеет (кроме вещей, которые мне показались бессмысленными). Запустить одновременно сервер и standalone или несколько одинаковых серверов/standalone нельзя, как обычно. Клиентов можно хоть 1000 запустить. Вне экспозиции делай что хочешь, но пока светоприемник занят, можно лишь геттеры вызывать, в т.ч. для турелей и фокусеров.
Основную отладку я делал на эмуляторах ('Dummy device'), во второй половине дня с ZWO'шной камерой поигрался, заодно несколько багов отыскав. Чтобы отладить все устройства, завтра потренируюсь на FLI (на "роботелескопах" все устройства флишные).
Протокол специально сделал текстовым: подключаюсь для отладки своим терминалом и могу вообще любые команды вводить (в т.ч. те, которые клиент бы не ввел). В режиме standalone можно смотреть текущие изображения встроенной OpenGL-смотрелкой, а вот клиент этого не умеет. В будущем думаю вообще смотрелку убрать, сделав ее самостоятельным приложением — в лучшем духе UNIX-way. Аналогично можно убрать standalone, но над этим надо подумать.
eddy_em: (Default)
Практически закончил преальфа-версию сервера. Проверил на 'dummy' и ZWO'шной камере. Надо будет еще проверить работу с FLI'шными (на "роботелескопах" и турель, и фокусер есть помимо камеры).
Правда, тестируя клиента, заметил, что забыл сделать обработчики типа кадра (dark/light), скорости считывания (fast/slow) и разрадности АЦП (high/low). Но это несложно будет сделать.
Сервер во время экспозиции не дает возможности менять параметры и двигать фокусер/турель. Раз в минуту пишет в лог температуры элементов ПЗС. Протокол общения с клиентом — как обычно, текстовый. Я сначала все функции проверил, подключившись к сокету своим tty_term, а уже потом проверял самим клиентом.
Конечно, нужно поглубже потестировать, в т.ч. в release-режиме (проходил я уже такое, что в debug все работает, а в release сегфолтится).
eddy_em: (Default)
В общем, оказалось, что рукожопие разработчиков этой игрушки зело велико! Я все думал: чего у меня чип не охлаждается? А оказалось, что как только ты теряешь связь с камерой (т.е. выходишь из приложения), все в ней остается в таком состоянии, как было. А Пельтье почему-то разгоняется очень медленно: от 0% до 100% (при этом потребляя 2.5А) около 6 минут!!! Вот как можно было такой кривой алгоритм написать? Ну загони ты его за 10с до максимальной мощности, а потом, как достиг температуры, варьируй. Нет, они идут другим путем!

Короче говоря, в моей CCD_Capture полноценную поддержку этого дела не получится реализовать без постоянно работающего сервера.
Значит, пора писать сервер! Да и удобно: можно будет логи температуры писать и т.д., и т.п. Получится новый монстр "три в одном": standalone + server + client.
eddy_em: (Default)
Хочется разработчиков этого дела очень нехорошими словами обозвать: SDK они выложили в бинарном виде. Из документации лишь скудные комментарии в заголовочном файле + pdf, который не сильно-то лучше! Пара файлов-примеров. И сиди, методом тыка Монте-Карло разбирайся, что там как работает. Вот, скажем, непонятно, почему у конкретно этой КМОПины не изменяется readout speed. Непонятно, почему при каждой инициализации все настройки слетают в дефолт, хоть я явно ничего не вызываю (т.е. невозможно один раз задать температуру камеры и спокойно работать дальше; а когда задаешь, нужно выждать до 5 секунд, чтобы вентилятор завелся и заработал охладитель — значит, отдельные запуски будут выполняться дольше). Непонятно, почему биннинг работает только 1x1 и 2x2, если в свойствах прописано до 4х4 (а еще у меня когнитивный диссонанс возникает от биннинга 3x3). Да и вообще, есть разные интересные параметры, которые вообще подробно не документированы, и совершенно непонятно, что с ними делать.

Одним словом, нельзя так разрабатывать! Ну, если лень тебе документацию писать — выложи исходники, чтобы люди могли сами разобраться. А то и, глядишь, что получше наворотят… А если зажопил исходники — так будь добр, напиши подробнейшую документацию и примеров побольше выложи!
eddy_em: (Default)
В поисках совершенства (надоело уже туда-сюда тягать всякие фичи среди 100500 утилит для по сути одного и того же — получения FITS-файлов с CCD/CMOS), решил сделать эдакий универсал. Поддержка каждой камеры реализуется в виде модуля: динамической библиотеки, открываемой через dlopen. В каждой библиотеке экспортируется лишь 3 объекта: структуры Camera, Focuser и Wheel. А в них уже содержатся свойства и методы конкретной железки, реализованные в этой библиотеке.
Еще давно сделал для FLI (по сути это и содрано с fli_control), сейчас вожусь с поддержкой ZWO-ASI, понемногу приходится изменять содержимое структур, т.к. в CMOS кое-какие совсем иные вещи есть, и хочется их тоже поддерживать. Главное — после всех этих извращений с ZWO, проверить, все ли для FLI работает.

Вот, работая с ZWO, заметил, что я, дурья моя башка, забыл на TeA выделить место под блок питания камеры! С какого-то перепугу я решил, что она от USB будет питаться. Ага. Пельтьюха от USB! Как бы не так!!! В общем, придется опять колхоз разводить.
Да, у этой камеры (а скорей — ее библиотеки) есть очень паршивая особенность: каждый раз при инициализации камеры все значения сбрасываются в дефолт, т.е. температура тоже. А если хочешь установить температуру, нужно до экспозиции какое-то время выждать, пока не включится вентилятор (иначе после окончания экспозиции охладитель не заработает).
eddy_em: (Default)
Я уже жаловался, что эта камера как бы в линуксе поддерживается, но в реальности не работает. И вот сегодня молодой сотрудник таки получил с нее изображения на стареньком компьютере в позапрошлогодней бубунте!
На астрофоруме мне советовали перепрошить камеру. И действительно: на той же бубунте залили новую прошивку (asi120mm compatible) и камера заработала в т.ч. и на моем компьютере!
Ох уж эти рукожопые…
Остается еще найти исходные коды SDK (хотя, если их ТАК скрывают, подозреваю, что там жуткий "индусокод").
eddy_em: (Default)
Я уже писал об ИК светодиоде, сейчас провел эксперименты с ПЗСкой. Подопытный — CCD FLI ProLine PL16803. Все испытания при температуре чипа -30°C.
Read more... )
Да уж, что сказать: ПЗС, даже мягко говоря, на звание научных вообще никак не претендуют! А еще до применения на телескопах мы проводили их лабораторное исследование. Самую малошумящую повесили на первый телескоп, да и то ее характеристики оставляют желать лучшего! Какие там 0.01 звездной величины? Там хотя бы 0.05 стабильно получать (да и то, не слабее 12..13 величины)…
eddy_em: (Default)
Наконец-то добил основной необходимый функционал для "кузнечика": код на гитхабе.
Утилита умеет получать полнокадровые изображения и сохранять их в 8-битные FITS и png, а также отображать в псевдоцветах (синий - 0, красный - 255) полученные изображения (сначала эквализуется гистограмма изображения, а затем преобразуется в цвет в соответствии с одним из выбранных алгоритмов: линейный, корень или логарифм).
Пока что замечен один косяк: при выходе из демонстрационного режима откуда-то возникает сегфолт. У меня там уйма одновременно работающих потоков, поэтому выяснять, где косяк, можно довольно-таки долго.
Но зато уже можно использовать камеру для подсмотра щели.
"Смотрелку" я выдрал из apogee_control'а, но добавил возможности делать паузу при "нащелкивании" уймы изображений, а также "щелкать" вне серии (чтобы не сохранять изображение). При желании можно нажать ctrl+S и сохранить текущий кадр. Ну и можно для удобства визуализации зеркалировать изображение и так, и эдак...
eddy_em: (Default)
Линус, кажется, сошел с ума. Иначе зачем клепать новые версии ядра с такой нечеловеческой скоростью? В итоге многие производители железа просто забили на этот идиотизм и перестали поддерживать линукс.
Вот так и FLI. На сайте производителя уже модуль ядра под версией 1.3.2. Однако, даже под древнючее третье ядро скомпилировать его не представляется возможным (даже Makefile написан с переменной SUBDIRS вместо M).
Я уже когда-то (в далеком 2017 году) потратил день-другой на переделку модуля 1.3.0 под ядро >4.9.0 (судя по шапке, проверял на ядрах 4.9.4 и 4.12.5), но вот обновил ядро на 5.4.16 и пришлось опять это вытворять! Благо, перемен совсем немного: макрос access_ok принимает теперь лишь два параметра вместо трех. Решилось это просто добавлением в начало файла макроса:
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0)
#define ACCESS_OK(a,b,c)  access_ok(b, c)
#else
#define ACCESS_OK(a,b,c)  access_ok(a, b, c)
#endif

и заменой access_ok на ACCESS_OK в теле исходника.
eddy_em: (Default)
Закончил утилитку для работы с Atik'овскими ПЗС.
Жаль, что у имеющегося светоприемника нет 8-битного режима, считывание довольно-таки длительное (около 0.3с на кадр 100х100 пикселей). Есть режим "preview", где считывание несколько более шустрое, но в нем изображение нестабильное: нет четкого начала координат, и картинка постоянно куда-то смещается.
В остальном к технической ночи 24 апреля я практически готов (остался лишь переходной фланец для установки камеры вместо Apogee'йской, его ко вторнику в мастерских обещали изгоготовить).
А вот к техническим ночам 1-2 мая надо будет еще сварганить что-нибудь, позволяющее установить камеру в 700-мм гиде + съюстировать ее.

Atik

Apr. 16th, 2018 03:50 pm
eddy_em: (Default)
До чего, однако, рукожопие доводит! Два часа я бился с непонятными сегфолтами в управлялке Atik'овскими ПЗС, пока не увидел, что в режиме отладки имена вызываемых функций не совпадают с тем, что я вызываю. Причина проста — использовал с более свежей версией библиотеки заголовочный файл от старой. Вот чем еще коварно распространение библиотек в виде бинарников, а не исходников, как у людей.
Ну, хотя бы так. Иначе валялись бы наши две камеры (гид для Z-1000 и новый подсмотр SCORPIO) как множество других бесполезных железяк на складе... К сожалению, имеется такая практика, когда начальство без каких-либо консультаций покупает железо, а потом оказывается, что это железо вообще неработоспособно, либо функционал сильно кастрирован. Реверсить же — тот еще геморрой, не всегда можно реверсом весь нужный функционал восстановить. Да и тупо времени жалко на этот реверс, когда можно сразу купить нормальное железо.

Лично я бы никому не рекомендовал брать ПЗС от Atik, т.к. эта компания не выдает исходных кодов SDK/библиотек. И даже INDI-модули она распространяет в виде бинарных файлов!

P.S. работать в выходной — просто замечательно! Сегодня практически весь день я один на целом этаже (разве что ненадолго появлялся сосед)! Никто не мешает, кайф!!!
eddy_em: (Default)
Товарищи линуксоиды — любители астрономии, посоветуйте, пожалуйста, нормальную ПЗСку небольшого (до пары мегапикселей) формата с пельтье-охлаждением, которую можно будет повесить на гид БТА. Нынешняя камера уже совсем никакущее изображение дает. Нам по весне зеркало вешать, а для юстировочных измерений без автогида никак.
Посмотрел на grasshopper3 — dmesg показал vid/pid, но /dev/videox не появилось. На сайте какой-то бред: все только в deb-пакетах под какую-то древнючую бубунту, требуется регистрация — не думаю, что есть смысл время тратить. На астрофоруме народ часто пользуется продукцией qhyccd. У них есть репа на гитхабе. Скачал свеженькое, а там бинари…

Что ж за сволочи эти производители железа? Знают же прекрасно, что народ в линуксе работает, а поддержки линуксовой практически 0! Кто в здравом уме будет под вендами заниматься чем-то, требующим больше чем бездумно тыкать клавиши и возить мышкой? Особенно если требуется разрабатывать ПО.
eddy_em: (Default)
Потихоньку решил сделать standalone управлялку FLI'шными ПЗСками, турелями и фокусерами. Сделал поверхностный рефакторинг "mytakepic", пока только ПЗС управляет. Решил отдельную репу не делать, а положить в тот же mytekepic отдельной директорией. Словил сегодня утром kernel panic — видимо, модуль ядра, который я в виртуалбоксе для новых ядер портировал, на компутере забыл обновить. Поставил его в автозагрузку на всякий случай.
Помимо старых функций добавил еще возможность открывать/закрывать затвор (нужная функция) и задавать старт экспозиции по внешнему триггеру. Пришлось, правда, еще и в исходниках библиотеки поковыряться: документация к ней совсем уж унылая. Очень хочется сделать в userspace, но лень.
eddy_em: (Default)
Фух! Таки управился!
Протестировал все варианты компиляции: и с SGREAD, и без него, и с ASYNCWRITE. Не знаю, чем эти методы отличаются, но скорость считывания во всех трех случаях была примерно одинаковой — около 3.5с на весь кадр 4k×4k. По сравнению с apogee, конечно, это очень шустро. Но вот использовать для USB'шного устройства модуль ядра в 21 веке — дикость какая-то!!!

Обновил архив с модулем на гитхабе в репе "mytakepic" (вот такое дурацкое название осталось у читалки). Теперь надо будет переделать этот mytakepic, чтобы он работал с фокусером и турелью от тех же FLI (надо будет для отладочно-юстировочных работ, пока не запустим RTS2).
Модуль проверен на ядрах 4.9.4 и 4.12.5.
eddy_em: (Костерок)
Итак, добил я сегодня часть, связанную с сетевым управлением камерой: код на гитхабе.
Добавил еще два параметра: "-E" позволяет ввести сетевую маску для поиска сетевых камер, а т.к. этот поиск длится довольно-таки долго, то при получении MSG_ID (при обнаружении камеры моя сишная обертка над libapogee выдает соответствующее сообщение) в первый раз, далее можно просто использовать ключ "-M", подставляя ему параметром всю строку (в т.ч. тег <d>) MSG_ID.
Возможно, когда-нибудь я наконец-то добавлю сохранение параметров в конфигурационном файле (по аналогии с mplayer'ом), чтобы не надо было каждый раз одни и те же параметры набирать.
eddy_em: (Костерок)
2015.05.07_17:33:53
Темновой с экспозицией в 5с

Сегодня пришлось ковырять новую камеру Apogee. На сей раз получилось разобраться намного быстрей, чем в прошлый раз, когда нам поменяли "на точь такую же", а оказалось, что начинка там была совершенно иной...

Интересно? )
eddy_em: (Костерок)
Вчера я [вроде бы] закончил написание обертки для библиотечки libapogee ver3.0, чтобы работать с новой ПЗСкой AltaF-16M. Обертку засунул в репозиторий apogee_control, заодно немного подправил саму apogee_control.

ишшо )

УРА!

Jun. 19th, 2012 12:36 pm
eddy_em: (Default)
Таки нашел я нормальную библиотеку для чертовой камеры U16M.
Нашел я ее, как ни странно, на сайте разработчиков (предлагающих на главной купить это дело за 100 баксов), а между тем, исходники-то — вот они.
Сразу предупреждаю: файлы apogee-devel… не помогут (там вообще хрен знает что), зато в директории old-versions лежит файлик apogee-driver-source-3.7.0.tgz, который я и использовал.


Read more... )

July 2025

S M T W T F S
  12345
6789101112
1314 1516 171819
20212223242526
2728293031  

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 18th, 2025 07:16 pm
Powered by Dreamwidth Studios