Как получить кадр с камеры (Linux+Python+INDI)?

Скажем, перед вами возникла задача… такая же, как когда-то передо мною. Или похожая. Задача получения кадра изображения с камеры, подключенной к мини-компу типа Raspberry Pi / Orange Pi и т.п. клона.

Все эти мини-компы (пока что), уверенно работают под разными клонами Linux. Я привык к RH-way дистрибутивам, поэтому с удовольствием установил не самую обновляемую Fedora 22 на мой Orange Pi компик.

Мне нравится идея универсализации, создания некой абстрактной прослойки меж астрооборудованием ил астрософтом. На винде это ASCOM (пусть он трижды кривой и тормозной, но свою функцию «универсализатора» он выполняет). На юниксах и, в частности, на Linux — это INDI.

Я довольно неплохо знаю ASCOM, писал и драйвера, и в клиентских прогах использовал как монтировку, так и камеры. Если не брать во внимание, что мне не нравится dotnet и win-программирование (да и сама винда как ось) в целом, то идеология ASCOM мне близка. Скажем, наша задача получения кадра с камеры решается так:

  • есть аском. Он просто есть. Он есть центр этой вселенной. Всё общение происходит через него;
  • есть драйвер камеры. Скажем, QHY5 камерки. Или симулятор. Или Starlight Oculus (именно её кадры я получал на Orange Pi), или … В этом и суть, что все драйвера всех камер реализуют ASCOM.iCamera интерфейс. Он декларирует, что все дрова должны поддерживать таки и такие вызовы;
  • есть софтина, которую я пишу. Например, «получалка одного кадра длительностью 1с». В этой софтине я подключаюсь к COM-объекту ASCOM.Camera (написание не точное, лишь чтобы предать суть), то есть создаю экземпляр нужного класса. И у этого объекта уже есть методы/свойства задания выдержки, экспозиции и получения массива кадра. С виду всё логично.

В инди всё … по-Индийски, я думаю. Нисколько не хотя обидеть индусов, встреченные мною программисты часто из них … (нет-нет, я не буду ругаться матом сейчас) :).

  • первым делом запускается INDI-сервер для моей камеры:
    /usr/bin/indiserver -v -m 100 indi_sx_ccd
    Можно сказать, что ASCOM сам это делает, подгружая нужный «драйвер».
    То есть в INDI, в отличии от ASCOM, нет центра. Есть один процесс под эту камеру. Второй — под другую. Третий под монти и т.п. В этом есть смысл, но есть и геморой, кмк;
  • теперь на выбранном языке программирования (я выбрал Python) мы пишем INDI-Клиент. Это класс! Не в смысле, как классно, что мы пишем клиент, а в смысле, это именно объявление ООП-класса 🙂
    Собственно, экземпляр этого класса и общается с камерой… через callback’и.

import PyIndi
class IndiClient(PyIndi.BaseClient):
… и понеслось

Создаём экземпляр класса, запускаем коннект и дальше объект живёт своей жизнью:

  • инди-сервер вызывает метод newDevice, типа появилось новое устройство;
  • инди-сервер вызывает метод newProperty, передаёт им свойства. Все, что сам сочтёт нужным в последовательности, которую сам сочтёт нужным. В объёме, который именно ему будет интересен. Как в седьмом классе школы — тебе не интересно учить площадь треугольников, но никого это не волнует — тебе всё равно перечисляют все свойства треугольника и не только эту ненужную сейчас информацию;
  • чтобы начать экспозицию, мы в newProperty получаем факт подключения и заполнения нужных свойств, даём команду серверу «смени число в свойстве CCD_EXPOSURE». Подняв его выше 0, начинается экспозиция. Правда, нужно крепко обкуриться в ГОА, чтобы так перевернуть простую клиент-серверную логику?
  • получение кадра изображения — через callback вызов экземпляра класса, метод newBLOB. Типа ура, новый бинарник пришёл.

Мой исходник Python+INDI+Starlight Oculus AllSky камеры, чутка замусоренный в процессе поиска рабочего решения, я выложу сюда:
http://download.milantiev.com/astro/INDI/allsky.py.

И да, там огромный простор для чистки, оптимизации и улучшений. Но … мне хватило трёх дней борьбы с INDI, чтобы получив первый кадр больше не лезть в эту программу целый месяц. Нижняя часть программы вовсе не используется, но показывает неплохой диагностический пример использования INDI. Мопед не мой, моя адаптация под задачу.

Астрофото: иголка в стоге сена — NGC891

Не очень согласованный по масштабу и размеру цели снимок, но в этом есть его … небольшой шарм. Я сразу вспомнил начало своего астрофото пути и порадовался, несвойственно мне чуть придавшись ностальгии.

Roman FSQ NGC891 LRGB 29of5m 100percent 768x768 - Астрофото: иголка в стоге сена - NGC891 Roman FSQ NGC891 LRGB 29of5m full size 768x575 - Астрофото: иголка в стоге сена - NGC891

На самом деле я просто тестировал годзиллу и не знал, что ж выбрать на фокус 390 мм 🙂

GoogleDoc журнальчик отснятого

Спросил меня Женя Букликов, есть ли такой софт, чтобы записывать что когда ты отснял, а тот сам складывал и выводил суммы. Я сходу решил показать ему гуглдок, точнее гугл-таблицы. Это, если кто не в курсе, упрощённый аналог экселя, доступный с любой точки инета почти с любого современного устройства. Вот что получилось, здесь набросок начала журнала.

dss journal 768x364 - GoogleDoc журнальчик отснятого

В левой части сырой журнал. За сегодня отсняли такой-то объект, такие-то субы.

В правой части выжимка из журнала по объектам. Плюс «Итого», куда ж без него.

Поймал самолёт в кадр

В 2017м году в небе летает столько разного рукотворного, что даже в длинный телескоп с небольшим полем в пол градуса по широкой стороне, можно поймать не только один из тысячи пролетающих где-то далеко спутников, но и … самолёт.

Не абы какая редкость, но мне понравился этот пятиминутный кадр на мак 8″ f10.

IC348 plane - Поймал самолёт в кадр

Звезда пропала!!!

Снимали сегодня Плеяды…. Полная Луна, правда, так что думал, что баловство и толку не будет. Но нет, Антон углядел интересный эффект. Одна звезда, а именно эта, возьми да пропади на некоторых кадрах:

variable star 768x598 - Звезда пропала!!!

Разные мысли пришли в голову команде обсерватории L71. От бегающих горячих пикселей, до транзита чуть ли не НЛО :). Реальность оказалась проще, но не менее интересной. Вот фотометрия звезды, сделанная Антоном (Rain Dog):

variable graph - Звезда пропала!!!

Тут видно, что то ли звезда переменная, то ли транзит достаточно сложной формы. Антон начал копать и нашёл, что эта звезда, и правда, переменная. Причём иногда переменная. И меняет светимость аж на 6m! То есть изменение её яркости видно невооружённым взглядом на серии снимков.

Сначала, правда, было не ясно: звезда это или галактика. Тут пишут, что с вероятностью 90% это галактика. И там же, что это точно звезда.

Но потом Антон нашёл её в каталоге flare stars и соответственно на aavso.
https://www.aavso.org/vsx/index.php?view=detail.top&oid=35864

VSX Variability Types: UV
Eruptive variables of the UV Ceti type, these are K Ve-M Ve stars sometimes displaying flare activity with amplitudes from several tenths of a magnitude up to 6 mag. in V. The amplitude is considerably greater in the ultraviolet spectral region. Maximum light is attained in several seconds or dozens of seconds after the beginning of a flare; the star returns to its normal brightness in several minutes or dozens of minutes.

Mag. range Mag. range 15.0 — 20.4 p

 

Вот такое интересное мини-исследование на ровном месте получилось. Кстати, вот анимация этой «исчезающей» звезды:

star variable - Звезда пропала!!!

Новости обсерватории: Первая половина июля 2017 года

Продолжается, и чуть спадает ажиотаж вокруг астрохостинга. Постепенно стартовые процедуры затихают и работа входит в обычный ритм. Там подправь, тут подкрути. Здесь провода переложи. Постараюсь описать подробно в отдельном тексте.

Астросъёмкой почти не занимался. Нужно ставить автоматизаторы. Потому как неснимающий настроенный телескоп под небом — это недоразумение, которое нужно срочно устранять.

К сожалению, это весь кратенький отчёт за две недели.

 

Астросъёмка: Июнь 2017 года

В июне мои астро-приоритеты временно сместились на запуск хостинга. Я почти не снимал для себя, как мне казалось — только и занимался что настройкой чужого железа. Конечно же, это не так, но срабатывает «правило красного светофора». Это когда ты едешь по городу и проехал 5 зелёных не заметив, но стоит тебе увидеть красный, как в голову лезет мысль «блин, как не везёт, опять красный свет!».

Вот мне и засела в голову мысль, что в июне я больше гайки крутил. Может оно так и есть. Скорее всего, нет. Что ж, попробую вспомнить всё сделанное в обсерватории:

  • гости приезжали. Правда, уж очень быстр уехали, даже чаю не попили. Пара дядек из Питера — Fatalik и Serega2007;
  • Спартак с женой приезжали на несколько дней. Настраивали его шмидт-ньютон. Правда, по факту, к сожалению оказалось, что нужно ещё чуть улучшить механику объектива. Досадная задержка. Но победа всё равно будет за нами 🙂
  • хостинг-обсерваторию активно доделываю. Ну там дыры всякие заделал. Пока что заморозил проект автоматизации крыши, таскаю её автомобильным буксировочным тросом. К августу, конечно же, нужно будет вернуться к вопросу не столь даже автоматизации, как механизации крыши. Зимой, со снегом и возможной наледью, я могу и не осилить открытие крыши вручную;
  • %25C0%25EB%25FC%25E1%25EE%25EC%25FB 2017 %25CE%25EB%25E5%25E3 %25C0%25F1%25F2%25F0%25EE %25CD%25FC%25FE%25F2%25EE%25ED 2017 07 05 1432 - Астросъёмка: Июнь 2017 годана данный момент запустили три астрографа в новой обсерватории и два — в старой. Ещё без дела болтается мой ньютон… пойду-ка установлю его на пока что свободное место в новой обсерватории что ли. Сказано? Сделано :), водрузил треногу и ньютон на шестое место, самое юго-восточное, рядом с «серверным шкафом». Выходит, уже 4 астрографа в новом и 2 в старом сарае — красота!
  • купил чуть леса и возобновили строительство гостевого дома. Новость не совсем астрономическая, но гостевой дом приятно дополнит инфраструктуру обсерватории;
  • купил и сейчас Серёга монтирует ещё три солнечные батареи с их отдельным контроллером. Итого будет полтора киловатта неистовой мощщи солнечной электростанции.

Погоду давали много и часто. И, хоть за отчётный период было солнцестояние, длительность астроночи не падала меньше 3.5 часов. Что, после Подмосковья, лично для меня экстра приятно!

 


  1. Ньютон 250
    1. со стыдом признаю, что ньютон чуть ли не весь месяц простоял в углу. Сиё недопустимое действо я, конечно же, пресёк … как только появилось время.
  2. Мак 200
    1. Всё ещё продолжаю возиться с ZWO1600! Хорошая камера, но … нужен БТА… на край БТИ. Так что снял камеру с объектива. Вернул KAF8300 и уже тестово поснимал одну планетарку. Получилось… не очень. Почему-то сильный смаз по DEC. Буду изучать по погоде.
  3. Ньютон 320
    1. Переставил винду (о, надо бы сделать её образ, дюже хлопотно переставлять её с нуля). Чуть поснимал Лебедя и … почему-то нужно опять юстировать. То ли телескоп, то ли наклон камеры. Начну с телескопа, конечно же — теперь я асс (как Пушкин) в юстировке.

Условия съёмки: погоды полно. Жара. Ночи короткие, но приятные! Не то что зимой всё бегом-бегом.

Астросъёмка: Вторая половина Мая 2017 года

Хороший отчётный период. Произошло много и, кажется, всё позитивное!

  • гости приезжали. Пока что один — Сергей, StarDiver. Заехал на вечер и на ночь. Познакомились, чай попили и пообщались. Я с интересом наблюдал за новыми игрушками:
    — Meade ACF 10″ и его забавная манера уводить звезду в астигматизм при дефокусе. Прям таки маску не нужно! Недофокус — палка под 45 градусов. Перефокус, палка на 180° от первой развёрнутая;
    — QHY23. Очень интересная CCD камера в наше время кмосов;
    — ZWO ASI 1600. Отдельная песня. Как раз пою её сейчас в отдельной заметке.
  • %25C0%25EB%25FC%25E1%25EE%25EC%25FB 2017 %25CE%25EB%25E5%25E3 %25C0%25F1%25F2%25F0%25EE %25D0%25EE%25EC%25E0%25ED 2017 06 03 0287 - Астросъёмка: Вторая половина Мая 2017 годасарайка новая растёт и крепнет. Провёл все провода, закопал канавы, положил пол. Подключил и базово настроил Orange Pi;
  • один Клиент хостинга решил пока не приезжать (дела-дела), выслал мелкую апошку деловыми линиями. Встретил их у шоссе, телескоп установил. Сегодня базово настрою его и можно снимать. Если спросят, прописка у телескопа теперь «АстроХостел Краснодар, дом 2, кв. 4» 🙂
    В смысле, второй павильон, место номер 4. Это если считать от северо-запада рядами направо и вниз.

Погоду порой дают. В основном, рваную, но достаточно много. В последние несколько ночей (и сегодня тоже), развлекаюсь с данной погонять игрушкой — быстрой камерой ZWO ASI 1600. Хороша, чертовка!

2017 05 27 Jhonson 90of100s 50percent - Астросъёмка: Вторая половина Мая 2017 годаОбработал несколько отснятых в начале мая астрофотографий. Снимал комету. Всё внимание к новому сараю. Пока что и раскладку по телескопам подробную писать не буду.

zwo1600 M13 L bin1 16of15s 100percent 150x150 - Астросъёмка: Вторая половина Мая 2017 года  M57 1000of3s g30 150x150 - Астросъёмка: Вторая половина Мая 2017 года  M87 complex 18.5h 100percent 150x150 - Астросъёмка: Вторая половина Мая 2017 года


  1. Ньютон 250
    1. перешёл на QHY9. Юстирнул. Доволен! Снимаю в L / Ha. Но надо бы переводить в цвет. Как был ньютон цветным, таким пусть и остаётся. Только с возросшим разрешением и чувствительностью.
  2. Мак 200
    1. 1600ка! Камера новая. Сейчас мак занят ей. До этого снимал SH2-106. Кстати, сегодня хочу попробовать её на ZWO поснимать.
  3. Ньютон 320
    1. Если хватит рук, буду юстировать. Чуток помялся верх, видимо перекос камеры. К сожалению, основную работу БТИ в этот раз пропустили. Ждём-с новолуния и бум открывать новые астероиды.

Условия съёмки: погода появляется. Ночь короткая. Луна растёт.

Подбор камеры к дипскай телескопу

Астролюбитель? АстроФотоЛюбитель? АстроФотограф! Вот кто ты, вероятно. Раз читаешь этот текст. Быть может ты опытный боец и мои мысли лишь позабавят тебя, а может ты в самом начале Пути и готов выслушать мой вариант ответа на вопрос: «Какую камеру стоит купить к этому дипскай астрографу«?

Начну с самого начала. Какие бывают камеры для съёмки объектов глубокого (далёкого) космоса. CCD или CMOS, на самом деле не имеет почти что никакого значения в начале выбора. Имеет значение:

  • цена. Что логично, раз есть машина Жигули, а есть Ламборджини, то есть и астрокамера Canon EOS 450 Da б/у за 6500р, а есть какой-нить 35×35мм чёрнобелый монстр весом под пять кило и ценой с десяток килобаксов;
  • цветная или монохромная. По сути, все сенсоры с рождения монохромные («чёрно-белые»). Цветовая дифференциация наступает позже. Тогда, когда производитель сенсора решает, будет ли он наносить микросветофильтры по маске мсье Байера или оставит как есть — чб. Какие-то сенсоры, поэтому есть и чб, и цветные. Но многие, к сожалению, только цветные. Это порой сильно сужает выбор;
  • размер пикселя. Наиважнейшая техническая характеристика астрокамеры. Производитель, производя произведение CCD / CMOS искусства, от балды выбирает размер каждого пикселя в сетке Х на Y пикселей на своём новом сенсоре. Обычно, линейный размер каждого пикселя дипскай астрокамер лежит в пределе от 1мкм (очень мелкий) до 9мкм. Есть, конечно, камеры и с 28мкм пикселем, но это те самые ламборджини обычно : ).
  • разрешение камеры. Нетрудно догадаться, что количество пикселей производитель так же берёт с потолка. В одном сенсоре это лишь пол миллиона точек (камера разрешением пол мегапикселя). В другой же их аж 50 миллионов (50 мегапикселей). Обычное разрешение современных дип-астрокамер варьируется примерно от 2 до 35 Мпикс. Вдобавок к разрешению, производитель ещё и пропорции берёт с того же туманного потолка. Бывают 1:1 (квадратные), бывают 3:2, 19:6 и другие;
  • шум считывания. Тынц, сказала камера. Или тихо, без затвора, отсняла кадр и давай его переводить в цифру, загонять по USB / Ethernet / WiFi / … в комп. По пути от конденсатора накопления электронов пикселя к компу, к сожалению, так или иначе, возникает беспорядок. Какой-то электрон затерялся. А кой-где пришёл новый. В итоге мы говорим, что нормированный шум этой астрокамеры составляет столько-то электронов. Обычно мы говорим про 1 .. 16е шум считывания;

Ещё есть темновой шум, есть время считывания, бывают камеры с холодильником, а есть без него — это, хоть и важно, но тоже вторично. То есть понятно, что при езде на машине по городу АКПП удобней ручной коробки передач. Но и на ручной люди ездят. Говорят. Не суть. Суть вопроса — начать понимать какая же камера нужна. А с частностями уже можно разобраться позже.

В астрофотографии, на удивление новичков, отсутствует понятие увеличение. Однако, есть термин «масштаб изображения». Допустим, мы говорим, что эта галактика угловым размером 11 угловых минут отображается на камере размером в 666 пикселей. Это означает, что каждому пикселю досталось 11 * 60 / 666 = 0.99 угловых секунд. Угловой размер пикселя зависит только от фокусного расстояния объектива в миллиметрах и линейного размера пикселя (обычно в микронах). Простая формула, дальше покажу её, множит и делит одно на другое, выдавая искомое число 0.99″ из примера выше.

 

С камерами, надеюсь, стало чуууууть-чуть понятней. Вернёмся к объективу. К «этому самому» объективу (телескопу), который ты сдуру купил или планируешь. Который имеет определённую апертуру и фокусное расстояние. С точки зрения подбора камеры, для большинства простых объективов, всё равно какой он схемы (ньютон, апошка, шк-шка, мак, …), какое у него центральное экранирование и сделан ли он литой трубой или собран на ферме. Важна только апертура и важно только фокусное.

Апертура. Я не откажусь от полуметрового светосильного телескопа. А вот от шестиметрового длиннофокусного без адаптивки — откажусь.

Шутка, конечно, но с долей правды. «Апертура ради апертуры» — это тупик наркомана. Хочется больше… больше. Ещё больше!

Мне кажется, всегда нужно отталкиваться от задачи. Если задача — съёмка дипов, то скорей всего хочется, чтобы с одной стороны, не было оверсемплинга. С другой, чтобы undersampling не возник. А теперь ты спросишь, что за бесовские слова? 🙂 А я отвечу, попивая утренний чай. Что сумничал я только из-за понравившегося мне слова. А означает оно, что было бы круто, если б масштаб изображения на камере совпадал с тем, что может выдать твой объектив и с тем, что может пропустить твоя атмосфера. И чем же, простите на милость, мы ограничены? Хто мешает жить как завещал Великий Хаббл и пророк его — телескоп его имени? Таких основных факторов лишь два:

  1. диф. предел. Тут о нём хорошо рассказал Эрнест: тынц на астрономи.ру.
    Хорошо рассказал он, по моему мнению потому, что привёл простую понятную таблицу предела разрешения. Для 6″, например, разрешение меньше 0.8″ никак не получится;
  2. но 0.8 диф. предела — это неплохо. Потому как атмосфера у нас редко даст разрешение лучше 1″ — 1.5″. Бывает и 0.5″, но это только по праздникам. И то не на долго. Обычно же полтора-два в Краснодарском крае, 2 — 2.5 в Подмосковье. Про Чили вспоминать принципиально не буду. Хоть там 0.2 — 0.8″ сиинг.

Вот и получается, что 150-ка — подходящий объектив для камеры с боль-мень стандартным масштабом 1″ на пиксель (одна угловая секунда на пиксель). А для 500-ки можно замахнуться на разрешеньице покруче. Вот только реализовать его, скорей всего, может не получиться. А может получиться. 50 на 50.

Сиинг и дифракция, превращают звезду из элегантной точки, диаметром ноль целых и ноль десятых, в то, что мы в астрофотографии на фотке называем «звездой». В, если смотреть в профиль, колокол. В центре точки (звезды) яркость высокая, дальше поменьше-меньше-меньше и … утонуло в шумах. Астрономы нашли универсальный способ измерения размера звезды, назвав его FWHM. Я не буду останавливаться на этом подробно сейчас, скажу лишь, что FWHM 1″ — классно и прикольно. FWHM 2″ тоже неплохо, хоть и чуть смазано. FWHM 0.5 угловых секунд блин… это очень круто и чаще невозможно на этом оборудовании под этим небом вовсе.

Вот мы и нашли ориентир. Если говорить о короткой дудке (апошка 80 мм или фотообъектив, или), то диф. предел не даст разогнаться. На таком объективе 2 — 4″ на пиксель смотрятся органично. Огромные поля…. Орион чё-ко-пай, Плеяды, галактика Андромеды и т.п. ждут тебя, позируя в фас и профиль на небе.

Объектив (телескоп) поапертуристее просит 1″ на пиксель. Да, можно и 0.2″ на пиксель забарлушить, да не пропустят такое разрешение те два вышеозвученных негодяя — дифракция и сиинг. Так что 1″ само то.

Я начал набрасывать табличку, где исходя из фокусного можно подобрать оптимальную камеру под задачу. Тынц на гуглдок, где можно ввести свои значения и получить ответы на свои вопросы.

Теперь задача сильно упростилась. Из многообразия камер на рынке теперь можно выбрать пяток тех, что хоть как-то подходят технически. Дальше глянуть в пустой кошелёк и отбросить из них половину. Оставшиеся 2-3 камеры изучить детально и принять решение, что к Этому Телескопу нужна Именно Эта астрокамера.

 

astrocamera.table  768x416 - Подбор камеры к дипскай телескопу

(вдруг кто-то не читал мой бред и пропустил ссылку на табличку)