Потихоньку пишется система управления оставшимися тремя телескопами — уже чисто астросибовскими (т.е. и телескоп, и купол, и монтировка - "Астросиб"). Я уже писал, что там используется какой-то любительский контроллер от sidereal servo, и что там были проблемы с недетерминированностью получения координат осей по энкодерам через контроллер (контроллер эту информацию вообще никак не использует, являясь лишь посредником). По мере написания библиотеки нижнего уровня, пишу и разные вспомогательные утилиты-тесты, использующие ее функции. Возьмем тестовую утилитку: будем гнать телескоп до 40°, каждые 10° меняя скорость (1, 2, 5 и снова 1 градус в секунду), а потом вернем на нуль с максимально возможной скоростью (я установил 15°/с, но, судя по графикам, быстрей 8-9 не выходит, надо в настройках контроллера посмотреть; хотя, в принципе, и столько достаточно). Контроллер опрашивается каждые 0.1 секунду, данные логгируются. И вот, как выглядит разница показаний осевого энкодера и "моторного" (условные отсчеты частотного привода):
Я сомневаюсь, что это вызвано неравномерностью движения. Скорей всего, контроллер не непрерывно берет данные с энкодера, а изредка, "выплевывая" все остальное. В итоге ошибка по времени нарастает от "немножко" секунд назад до "0.1-немножко" секунд назад, что и дает такие кошерные гребни. Думаю, так оно и есть: ведь чем больше скорость, тем больше расхождение (т.к. за эти 0.1 секунды телескоп проезжает все больше и больше, вот и гребни выше становятся; да и гребни имеют строго регулярную структуру). Ну, думаю, а что, если максимально увеличить скорость опроса? Поставил 0.05с и… Получил "хардлок" на мьютексе работы с портом: поток, посылающий команды, просто не имел никакой возможности заблокировать мьютекс, т.к. фактически время опроса было около 0.6с. Поставил на этот случай usleep на 50мкс - заработало. Теперь движение: 1, 2, 5 и 10 угловых минут в секунду с последующим возвращением быстро. График возвращения я обрезал, т.к. там слишком большой размах - не видно масштаб мелочевки. Вот тако оно колбасится по оси склонений:
А вот так - по часовому углу:
Время в секундах, разница в угловых минутах. Нам нужно знать реальные координаты с точностью не хуже 0.1'', а тут… Ну, ничего, либо к концу недели, либо на следующей (на этой, скорей всего, к телескопам невозможно будет попасть: обещают круглосуточно всю неделю снег, отправлять трактор на расчистку бессмысленно) "отделю" энкодеры и повторю. Что до измерения скоростей простым делением Δx/Δt, получаем для склонений:
и для часового угла:
Скорость - в угловых минутах в секунду. Видно, что даже по "моторным отсчетам" как-то странно. Возможно, если PID-регулятор контроллера попытаться подергать, можно немножко улучшить картину (хотя бы с отсчетами мотора), но таки странно: когда двигатель вышел на скорость, с чего ему вдруг туда-сюда болтаться? Это ж как надо PID-регулятор так расстроить, чтобы ТАКОЕ было?
Я уже писал, что производитель контроллера предлагает какое-то "маздай-онли" ПО. Честно говоря, видя такую дичь, я вообще не понимаю, как можно гарантировать хотя бы пятиминутные экспозиции на телескопах, пользующихся этим контроллером, при помощи этого ПО. Даже если очень аккуратно настроить ПИД-регулятор. Интересно бы пораспрашивать тех, кто пользуется "из коробки". Начальство даже предлагало на одном из телескопе попробовать "ПО от производителя", на что я ответил, что это уже совсем без меня. У меня на маздай такая же непереносимость, как на змеюку. Я уж молчу о том, что автоматизировать (а уж тем паче - роботизировать - такой телескоп будет просто невозможно).