Всем привет! Мы - команда Soyuz Developer Team - команда разработчиков симулятора космического корабля Союз-ТМА.
Мы занимаемся этим проектом довольно давно, но более-менее какие-то результаты стали получать только недавно (в связи с довольно большим порогом вхождения в системы корабля).
Наш проект - полноценный симулятор космического корабля Союз-ТМА 200й серии летавшего с 2003 по 2012 год. В симуляторе будут реализованы все алгоритмы вычислительной системы корабля, идентичные штатному вычислительному комплексу "Аргон-16" и спец.-вычислителю "КС-020". Так же будет реализована штатная логика работы других систем (напр. управление двигателями и др.).
Наша задача сделать симулятор, который повторяет все алгоритмы реального корабля, что бы все действия которые вы проводите с кораблем (выдача команды или изменение положения корабля в пространстве) имели такой же результат если бы вы выдали их на реальном корабле.
На первом этапе разработки мы (так как не имели опыта в области gamedev) стали делать 3d модели, текстуры и т.д, но через определенное время поняли, что в первую очередь надо было реализовать сами алгоритмы, поэтому было решено описать вначале сами алгоритмы, циклограммы и т.д. Так как мы планируем в симуляторе моделировать все режимы полета (предстартовая подготовка, выведение на орбиту, орбитальный полет, сближение и стыковка, расстыковка и спуск), это ставило определенные сложности в реализации штатного набора алгоритмов, поэтому мы решили сделать отдельное программное обеспечение, моделирующее полет по заданным Начальным Условиям и посылающее в Систему Компьютерной Генерации Изображения (среду, где будет происходить формирование 3D моделей и их расположение на сцене согласно параметрам поступающим из ПО управления) параметры текущего положения и ориентации каждого объекта на сцене - корабля, станции и других небесных тел в виде структур массивов. Обмен между ПО и СКГИ происходит по TCP\IP.
Главному ПО мы дали название (которое может некоторым покажется смешным) - СПО "МиУ", что обозначает Специальное Программное Обеспечение "Моделирование и Управление". В нем будут пока что происходить все операции - ввод и отработка начальных условий, организация взаимодействия с математической моделью движения корабля и с моделью Интегрированного Пульта Управления (ИнПУ) являющегося основным инструментом взаимодействия оператора с моделью корабля. Пока что все это - отдельное ПО, обмен с которым происходит так же по TCP\IP, но в планах перенести все это в dll-библиотеки, подгружаемые в "МиУ".
Получается, что в данный момент СПО "МиУ" и его компоненты (ИнПУ и Блок Математического Моделирования) являются самим симулятором. Пока что все это без вывода в 3д - только цифры текущего положения двух объектов (корабля и станции) и их параметры.
Теперь подробнее про "МиУ".
СПО "Моделирование и Управление"
На фото выше представлен скриншот текущего состояния "МиУ".
Данное СПО вряд ли будет публиковаться как симулятор, оно скорее всего только для отработки алгоритмов вычислительной системы и не более. Написано на С++ в среде C++ Builder 6. Пользовательский интерфейс реализован по подобию UI тренажера подготовки космонавтов "ДОН-СОЮЗ ТМА-М" в ЦПК.
Возможности пока ничтожны, зато успехи велики.
По запуску СПО пользователю предлагается провести процесс инициализации, в котором будет проведена проверка сопутствующий файлов программы (файлы конфигурации, файлы моделей и т.д.), а так же попытка установки связи с моделью Блока Управления Моделированием и моделью ИнПУ. Ход процесса инициализации можно проконтролировать в журнале:
При успешной инициализации загорятся иконки моделей,
что будет свидетельствовать о установке соединения с выбранными оператором моделями.
После чего пользователю необходимо будет ввести Начальные Условия текущего положения космического корабля Союз и МКС. Делается это в несколько этапов:
1 - Выбор режима полета
- Посадка экипажа в корабль за два часа до команды Пуск (Контакт Подъема) ( Ткп - 02:: ) - в этом режиме происходит предстартовая проверка систем корабля экипажем совместно с специалистами пуска ( в симуляторе - выставка согласно бортовой документации (чеклисту) параметров корабля и подготовка к пуску);
- Выведение - процесс от момента пуска (Ткп - Время Контакта Подъема) до Контакта Отделения;
- Орбитальный полет - этап от момента КО (Контакта Отделения) до начала режима дальнего сближения. О процедурах входящих в состав этого режима напишу отдельно;
- Сближение и стыковка - этап начиная от дальнего сближения до касания корабля и станции.
- Расстыковка - начинается за час до расчетного времени расстыковки Союз-ТМА и МКС, за это время экипаж должен произвести ряд стандартных операция входящих в состав подготовки к расстыковки. Заканчивается разделением корабля на отсеки перед входом в плотные слои атмосферы.
- Спуск - этап от разделения до ввода двигателей мягкой посадки.
Переходим к следующему этапу. Исходя из выбранного режима пользователь вводит остальные параметры начальных условий -
Параметр ориентации:
И дополнительные характеристики корабля и МКС
И напоследок необходимо ввести время и дату начала режима.
После чего на главной форме нажимается кнопка "Отработка НУ" которая отрабатывает введенные пользователем Начальные Условия (или загруженные из файла) и выставляет начальное состояние признаков для модели Вычислительной системы и БУМ.
Остается только выдать команду "ПУСК" и начнется процесс моделирования.
По запуску процесса моделирования начинается движение КА и происходит запуск таймера обработки текущего состояния моделей (обработка команд от ИнПУ выдаваемых оператором и квитанций факта исполнения команд в ИнПУ , обработка признаков для моделей атмосферы и др.).
Пока что эта команда не работает, т.к. происходит наладка операций на такт таймера. Таймер будет не один, так же будет таймер БЦВК, который будет имитировать такт вычислительной системы "Аргон-16".
Так же в данный момент занимаемся моделью атмосферы в которую входит модель Системы Обеспечения Теплового Режима и Системы Обеспечения Жизнедеятельности. Модель атмосферы должна в основном моделировать температуру и давление в отсеках корабля.
Формат СОТР выглядит следующим образом:
Дополнительно ввели графики для отслеживания изменения параметров:
Ну а теперь перейдем к самой интересной части...
Система Имитации Визуальной Обстановки
В тренажере стыковки "Дон-Союз ТМА" для решения задачи 3-х мерной визуализации используется Система Компьютерной Генерации Изображений «Ариус-СТ»
Назначение системы согласно сайту компании Бликс www.bliks.ru
формирование цветных, управляемых в реальном масштабе времени по командам от вычислительной системы тренажера изображений трехмерных динамических сюжетов внешней визуальной обстановки, наблюдаемых одновременно в шести средствах наблюдения рабочего места операторов «РМО ТМА» тренажера «Дон-Союз ТМА» (визир ВСК-4Т, левый иллюминатор №3, правый иллюминатор №6, ИнПУ-1,2, «Блистер объект», «Блистер фон»), моделирования совместно с другими системами тренажера отдельных режимов работы бортовой телевизионной системы «КЛ-100-01М» и форматов системы «Символ» для рабочего места «РМО ТМА».
У нас же задачи проще:
Программа должна генерировать 3-д модели и изменять их положение и ориентацию на сцене согласно параметрам от СПО "МиУ".
Требования к графике - реалистичные текстуры, хорошее и правильное освещение, отсутствие пластмассовости.
Вывод картинки должен быть в девяти режимах, из которых 8 статических (неподвижная точная с неподвижным связанным с некоторым объектом вектором направленности) - визир ВСК-4Т, левый иллюминатор №3, правый иллюминатор №6, ИнПУ-1,2, «Блистер объект», «Блистер фон» и один режим отображения динамический - вид от "лица командира корабля" имитирующий глаза космонавта.
Управление планируется от первого лица.
Вот приблизительно что видит командир корабля на своем штатном месте:
Ну и то что мы сделали - вид от первого лица.
Какую информацию выводить на экран пока не решили, будем этим заниматься когда все алгоритмы закончим и отладим их.
Еще несколько скриншотов 3д которые мы разработали для нашего симулятора.
Моделирование большинства деталей делалось по чертежам корабля :
В следующем посту расскажу еще что-нибудь.
Планируем конечно публикацию в Steam.
Оставляйте ваши комментарии и предложения, как только реализуем динамику, опубликуем на GitHub.
P.S.
У нас не хватает людей и если кто желает поучаствовать в проекте на свободных началах (денег нет, но интересное путешествие в мир космоса гарантируем) - пишите Soyuz.developer@gmail.com