Простейшая симуляция на стоковом KSP — различия между версиями
Greywind (обсуждение | вклад) |
Greywind (обсуждение | вклад) (→Как работает симуляция) |
||
(не показано 12 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
Полная сборка симуляции довольно требовательная к ресурсам компьютера - в основном в плане оперативной памяти (минимум нужно 12 гигабайт ОЗУ). | Полная сборка симуляции довольно требовательная к ресурсам компьютера - в основном в плане оперативной памяти (минимум нужно 12 гигабайт ОЗУ). | ||
− | Поэтому попробовать процесс симуляции можно на стоковом KSP минимальным набором нужных модов. | + | Поэтому попробовать процесс симуляции можно на стоковом KSP с минимальным набором нужных модов. |
= Что понадобится = | = Что понадобится = | ||
== Необходимое ПО == | == Необходимое ПО == | ||
− | Kerbal Space Program 1.6.0+ [https://store.steampowered.com/app/220200/Kerbal_Space_Program/] | + | *Kerbal Space Program 1.6.0+ [https://store.steampowered.com/app/220200/Kerbal_Space_Program/]. |
− | KSPTOT 1.6.0+ [https://github.com/Arrowstar/ksptot/releases] | + | *KSPTOT 1.6.0+ [https://github.com/Arrowstar/ksptot/releases]. |
− | Putty [https://www.putty.org/] | + | *Putty [https://www.putty.org/]. |
+ | *Zello - mobile push-to-talk рация (или настоящая рация). | ||
== Необходимые моды == | == Необходимые моды == | ||
− | kOS [https://github.com/KSP-KOS/KOS/releases] | + | *kOS [https://github.com/KSP-KOS/KOS/releases]. |
− | KSPTOTConnect [https://github.com/Arrowstar/ksptot/releases] | + | *KSPTOTConnect [https://github.com/Arrowstar/ksptot/releases]. |
== kOS скрипты == | == kOS скрипты == | ||
− | kos/ | + | *kos/warput из [https://github.com/1greywind/simplest-possible-simulation/archive/v0.2.zip архива]. |
− | kos/res из [https://github.com/1greywind/simplest-possible-simulation/archive/v0. | + | *kos/res из [https://github.com/1greywind/simplest-possible-simulation/archive/v0.2.zip архива]. |
== Стартовый сейв для KSP == | == Стартовый сейв для KSP == | ||
− | saves/initial_save.sfs из [https://github.com/1greywind/simplest-possible-simulation/archive/v0. | + | saves/initial_save.sfs из [https://github.com/1greywind/simplest-possible-simulation/archive/v0.2.zip архива]. |
== Шаблоны для Mission Architect == | == Шаблоны для Mission Architect == | ||
− | ma/duna-depature.mat из [https://github.com/1greywind/simplest-possible-simulation/archive/v0. | + | ma/duna-depature.mat из [https://github.com/1greywind/simplest-possible-simulation/archive/v0.2.zip архива]. |
+ | ma/duna-correction-burn.mat из [https://github.com/1greywind/simplest-possible-simulation/archive/v0.2.zip архива]. | ||
+ | |||
= Установка = | = Установка = | ||
== Установка КСП == | == Установка КСП == | ||
− | Купите KSP в одном из магазинов ( | + | Купите KSP в одном из магазинов (Steam, GOG, cайт разработчиков) и установите на ваш компьютер. |
Запомните путь к папке, куда была установлена игра (далее он будет указываться как $KSP_PATH). | Запомните путь к папке, куда была установлена игра (далее он будет указываться как $KSP_PATH). | ||
Строка 33: | Строка 36: | ||
## Выберите тип игры "Песочница", название "Симуляция" | ## Выберите тип игры "Песочница", название "Симуляция" | ||
## Нажмите "Пуск!" | ## Нажмите "Пуск!" | ||
− | # Скопируйте файл initial_save.sfs из папки saves из [https://github.com/1greywind/simplest-possible-simulation/archive/v0. | + | # Скопируйте файл initial_save.sfs из папки saves из [https://github.com/1greywind/simplest-possible-simulation/archive/v0.2.zip архива] в папку $KSP_PATH/saves/Симуляция |
== Установка KSP TOT == | == Установка KSP TOT == | ||
− | Скачайте архив с релизом KSP TOT под вашу версию KSP. Распакуйте архив в удобную вам папку. | + | *Скачайте архив с релизом KSP TOT под вашу версию KSP. Распакуйте архив в удобную вам папку. |
− | Кроме программы KSP TOT в этом же архиве лежит плагин KSPTOTConnect. | + | *Кроме программы KSP TOT в этом же архиве лежит плагин KSPTOTConnect. |
+ | *Скопируйте сценарии duna-depature.mat и ma/duna-correction-burn.mat из папки ma [https://github.com/1greywind/simplest-possible-simulation/archive/v0.2.zip архива] в папку KSPTOT. | ||
== Установка модов == | == Установка модов == | ||
Строка 44: | Строка 48: | ||
== Установка скриптов kOS == | == Установка скриптов kOS == | ||
− | Скопируйте файлы warpup и res из папки kos из [https://github.com/1greywind/simplest-possible-simulation/archive/v0. | + | Скопируйте файлы warpup и res из папки kos из [https://github.com/1greywind/simplest-possible-simulation/archive/v0.2.zip архива] в папку $KSP_PATH/Ships/Script. |
+ | |||
+ | == Настройка голосового канала == | ||
+ | Установите приложение Zello на смартфон или используйте настоящую рацию. | ||
= Запуск симуляции = | = Запуск симуляции = | ||
Строка 53: | Строка 60: | ||
## Выберите "Симуляция" и нажмите "Загрузить". | ## Выберите "Симуляция" и нажмите "Загрузить". | ||
## Нажмите Alt+F9 и выберите initial_save из списка. | ## Нажмите Alt+F9 и выберите initial_save из списка. | ||
− | # Включите kOS сервер | + | # Включите kOS сервер [[Файл:Start kos server.gif|none|thumb|Запуск kOS сервера]] |
# Запустите Putty (putty.exe) | # Запустите Putty (putty.exe) | ||
− | # Подключитесь к kOS серверу | + | # Подключитесь к kOS серверу [[Файл:Connect to kos server.gif|none|thumb|Подключение к kOS серверу]] |
# Запустите KSP TOT (KSPTrajectoryOptimizationTool.exe) | # Запустите KSP TOT (KSPTrajectoryOptimizationTool.exe) | ||
− | # Подключитесь к KSPTOTConnect | + | # Подключитесь к KSPTOTConnect [[Файл:Connect to ksptot.gif|none|thumb|Подключение KSPTOT к KSP]] |
− | # Запустите | + | # Запустите Mission Architect в KSPTOT |
+ | # Убедитесь что работает голосовая связь через Zello или рацию. | ||
= Как работает симуляция = | = Как работает симуляция = | ||
− | *Итак | + | [[Файл:Only scheme..png|right|512px]] |
+ | На схеме показаны каналы обмена информацией внутри симуляции: | ||
+ | * Через putty терминал ЦУП запускает kOS команды на компьютере симуляции: | ||
+ | ** Команда warput используется для ускорения времени до нужного момента. Команда принимает один аргумент - дату до которой нужно ускорить время в формате количества секунд с начала эпохи. Даты в этом формате получаются из KSPTOT. | ||
+ | ** Команда res выдает в терминал информацию о запасах ресурсов на борту. | ||
+ | * С помощью KSPTOT ЦУП делает следующее: | ||
+ | ** Утилита Mission Architector (MA) используется для расчета маневров и контроля их выполнения экипажем. | ||
+ | ** Утилита Maneuver Execution Assistant используется для получения времени включения двигателей. | ||
+ | ** Любое поле для ввода даты используется для получения даты в формате "количество секунд с начала эпохи" для команды warput. | ||
+ | ** Загружает данные маневра в KSP | ||
+ | ** MCC Real Time System может использоваться для получения телеметрии из KSP | ||
+ | * Связь между ЦУПом и Экипажем идет через голосовой канал связи (Zello или рацию). | ||
+ | |||
+ | = Приступаем к симуляции полета = | ||
+ | Итак: | ||
+ | *В KSP идет симуляция полета. | ||
*Запущен kOS сервер. | *Запущен kOS сервер. | ||
*У нас есть kOS терминал, с помощью которого мы можем контролировать симуляцию. | *У нас есть kOS терминал, с помощью которого мы можем контролировать симуляцию. | ||
− | *KSPTOT подключен к KSP через KSPTOTConnect и запущен | + | *KSPTOT подключен к KSP через KSPTOTConnect и запущен Mission Architect. |
− | + | *Голосовой канал связи готов к использованию. | |
+ | |||
+ | Далее назначаем роли. Минимум вам понадобится два человека: | ||
+ | *Один (далее ЦУП) будет совмещать роли Руководителя Полета, Главного оператора, Менеджера ресурсов и Баллистика | ||
+ | *Другой (далее Экипаж) будет выполнять все роли в экипаже: Командира и пилота. | ||
+ | |||
+ | Наш план полета: | ||
+ | * Мы начинаем на орбите Кербина в период, удобный для отлета к Дюне. | ||
+ | * Наша задача: | ||
+ | ** Рассчитать маневр отлета к Дюне. | ||
+ | ** Выполнить его. | ||
+ | ** Проверить параметры орбиты после выполнения маневра. | ||
+ | ** Если нужно, рассчитать коррекцию. | ||
+ | |||
+ | Как выполнить план полета: | ||
+ | * ЦУП связывается с Экипажем и сообщает что начинает расчет маневра | ||
+ | * Для для расчета маневра нужно: | ||
+ | ** Загрузить в MA сценарий расчет отлета к Дюне (duna-depature.mat) | ||
+ | ** Импортировать параметры начальной орбиты из KSP | ||
+ | ** Запустить оптимизацию | ||
+ | * После завершения оптимизации ЦУП связывается с Экипажем и сообщает что маневр готов | ||
+ | * Экипаж подтверждает готовность принять маневр. | ||
+ | * ЦУП загружает маневр в KSP и сообщает Экипажу что маневр загружен | ||
+ | * Экипаж подтверждает, что видит маневр и для проверки называет величину маневра | ||
+ | * ЦУП теперь должен рассчитать время включения двигателя | ||
+ | ** Для этого в утилиту Maneuver Execution Assistant импортируются параметры текущей орбиты | ||
+ | ** Импортируются параметры маневра. | ||
+ | ** В терминале запускается команда "run res.", которая выводит текущую массу корабля | ||
+ | ** Масса корабля и параметры двигательной установки (Isp=350s, Thrust=250kN) вводятся в Maneuver Execution Assistant. | ||
+ | ** Нажимается кнопка "Compute Burn Timing Information" | ||
+ | * ЦУП вызывает экипаж и сообщает ему время включения двигателя относительно времени выполнения маневра (Burn Start Time = T-100 sec -> Время включения двигателя 100 секунд до времени маневра). | ||
+ | * Экипаж подтверждает получение времени включения двигателя. | ||
+ | * ЦУП запрашивает у экипажа, сколько времени ему нужно на подготовку к маневру | ||
+ | * Экипаж оценивает время на построение ориентации корабля для выполнения маневра (в минутах, например 1 минута) и сообщает ЦУПу. | ||
+ | * ЦУП рассчитывает дату для ускорения времени по формуле: T = Время маневра - Время включения двигателя - Время на подготовку. Допустим время маневра - 40210 секунд, время включения двигателя - 100 секунд до маневра и экипаж просит 1 минуту (60 секунд) на подготовку. Дата для перемотки времени = 40050. | ||
+ | * ЦУП запрашивает у Экипажа готовность к ускорению времени. | ||
+ | * Экипаж подтверждает | ||
+ | * ЦУП вводит в терминале команду "run warput(40050)." - начинается ускорение времени в игре. | ||
+ | * ЦУП запрашивает у Экипажа, видит ли тот ускорение времени. | ||
+ | * Экипаж подтверждает. | ||
+ | * Когда ускорение времени заканчивается, Экипаж сообщает об этом ЦУПу. | ||
+ | * Экипаж выполняет маневр: | ||
+ | ** Строит ориентацию для маневра. | ||
+ | ** В установленный момент времени запускает двигатель. | ||
+ | ** ЦУП наблюдает за выполнением маневра с помощью телеметрии KSPTOT. | ||
+ | ** Ждет когда индикатор dV маневра дойдет до нуля. | ||
+ | * Экипаж сообщает ЦУПу о успешном выполнении маневра. | ||
+ | * ЦУП проверяет результат выполнения маневра: | ||
+ | ** Загружает в MA сценарий duna-correction-burn.mat | ||
+ | ** Смотрит на параметры орбиты в боксе Final Spacecarft State: если там Orbiting about = Duna и в попапе при наведении Periapsis Alt. = 100-200 км, то коррекция не нужна. Если нет, то: | ||
+ | ** Запускается оптимизация | ||
+ | ** Если в результате оптимизации получается орбита, удовлетворяющая граничным условиям (Periapsis Alt. = 100 km, Inclanation = 0-10 degree), то маневр передается экипажу для исполнения как и было сделано ранее. Если нет, то: | ||
+ | ** Надо попробовать увеличить диапазоны переменных оптимизации или время маневра | ||
+ | * План полета считается выполненным, если после коррекции корабль оказывается на курсе, ведущем к Дюне с перицентром орбиты ~100 км и небольшим наклонением. |
Текущая версия на 08:22, 5 марта 2019
Полная сборка симуляции довольно требовательная к ресурсам компьютера - в основном в плане оперативной памяти (минимум нужно 12 гигабайт ОЗУ). Поэтому попробовать процесс симуляции можно на стоковом KSP с минимальным набором нужных модов.
Содержание
Что понадобится
Необходимое ПО
- Kerbal Space Program 1.6.0+ [1].
- KSPTOT 1.6.0+ [2].
- Putty [3].
- Zello - mobile push-to-talk рация (или настоящая рация).
Необходимые моды
kOS скрипты
Стартовый сейв для KSP
saves/initial_save.sfs из архива.
Шаблоны для Mission Architect
ma/duna-depature.mat из архива. ma/duna-correction-burn.mat из архива.
Установка
Установка КСП
Купите KSP в одном из магазинов (Steam, GOG, cайт разработчиков) и установите на ваш компьютер. Запомните путь к папке, куда была установлена игра (далее он будет указываться как $KSP_PATH).
Установка начального сейва симуляции
- Запустите KSP
- В главном меню выберите "Начать игру"
- Далее выберите "Новая игра"
- Выберите тип игры "Песочница", название "Симуляция"
- Нажмите "Пуск!"
- Скопируйте файл initial_save.sfs из папки saves из архива в папку $KSP_PATH/saves/Симуляция
Установка KSP TOT
- Скачайте архив с релизом KSP TOT под вашу версию KSP. Распакуйте архив в удобную вам папку.
- Кроме программы KSP TOT в этом же архиве лежит плагин KSPTOTConnect.
- Скопируйте сценарии duna-depature.mat и ma/duna-correction-burn.mat из папки ma архива в папку KSPTOT.
Установка модов
- Скачайте архив с релизом kOS под вашу версию KSP. Распакуйте архив в папку $KSP_PATH.
- Скопируйте папку GameData из папки куда разархивировали KSP TOT в папку $KSP_PATH.
Установка скриптов kOS
Скопируйте файлы warpup и res из папки kos из архива в папку $KSP_PATH/Ships/Script.
Настройка голосового канала
Установите приложение Zello на смартфон или используйте настоящую рацию.
Запуск симуляции
- Запустите начальный сейв в KSP:
- Запустите KSP.
- Нажмите "Начать игру".
- Нажмите "Сохраненная игра".
- Выберите "Симуляция" и нажмите "Загрузить".
- Нажмите Alt+F9 и выберите initial_save из списка.
- Включите kOS сервер
- Запустите Putty (putty.exe)
- Подключитесь к kOS серверу
- Запустите KSP TOT (KSPTrajectoryOptimizationTool.exe)
- Подключитесь к KSPTOTConnect
- Запустите Mission Architect в KSPTOT
- Убедитесь что работает голосовая связь через Zello или рацию.
Как работает симуляция
На схеме показаны каналы обмена информацией внутри симуляции:
- Через putty терминал ЦУП запускает kOS команды на компьютере симуляции:
- Команда warput используется для ускорения времени до нужного момента. Команда принимает один аргумент - дату до которой нужно ускорить время в формате количества секунд с начала эпохи. Даты в этом формате получаются из KSPTOT.
- Команда res выдает в терминал информацию о запасах ресурсов на борту.
- С помощью KSPTOT ЦУП делает следующее:
- Утилита Mission Architector (MA) используется для расчета маневров и контроля их выполнения экипажем.
- Утилита Maneuver Execution Assistant используется для получения времени включения двигателей.
- Любое поле для ввода даты используется для получения даты в формате "количество секунд с начала эпохи" для команды warput.
- Загружает данные маневра в KSP
- MCC Real Time System может использоваться для получения телеметрии из KSP
- Связь между ЦУПом и Экипажем идет через голосовой канал связи (Zello или рацию).
Приступаем к симуляции полета
Итак:
- В KSP идет симуляция полета.
- Запущен kOS сервер.
- У нас есть kOS терминал, с помощью которого мы можем контролировать симуляцию.
- KSPTOT подключен к KSP через KSPTOTConnect и запущен Mission Architect.
- Голосовой канал связи готов к использованию.
Далее назначаем роли. Минимум вам понадобится два человека:
- Один (далее ЦУП) будет совмещать роли Руководителя Полета, Главного оператора, Менеджера ресурсов и Баллистика
- Другой (далее Экипаж) будет выполнять все роли в экипаже: Командира и пилота.
Наш план полета:
- Мы начинаем на орбите Кербина в период, удобный для отлета к Дюне.
- Наша задача:
- Рассчитать маневр отлета к Дюне.
- Выполнить его.
- Проверить параметры орбиты после выполнения маневра.
- Если нужно, рассчитать коррекцию.
Как выполнить план полета:
- ЦУП связывается с Экипажем и сообщает что начинает расчет маневра
- Для для расчета маневра нужно:
- Загрузить в MA сценарий расчет отлета к Дюне (duna-depature.mat)
- Импортировать параметры начальной орбиты из KSP
- Запустить оптимизацию
- После завершения оптимизации ЦУП связывается с Экипажем и сообщает что маневр готов
- Экипаж подтверждает готовность принять маневр.
- ЦУП загружает маневр в KSP и сообщает Экипажу что маневр загружен
- Экипаж подтверждает, что видит маневр и для проверки называет величину маневра
- ЦУП теперь должен рассчитать время включения двигателя
- Для этого в утилиту Maneuver Execution Assistant импортируются параметры текущей орбиты
- Импортируются параметры маневра.
- В терминале запускается команда "run res.", которая выводит текущую массу корабля
- Масса корабля и параметры двигательной установки (Isp=350s, Thrust=250kN) вводятся в Maneuver Execution Assistant.
- Нажимается кнопка "Compute Burn Timing Information"
- ЦУП вызывает экипаж и сообщает ему время включения двигателя относительно времени выполнения маневра (Burn Start Time = T-100 sec -> Время включения двигателя 100 секунд до времени маневра).
- Экипаж подтверждает получение времени включения двигателя.
- ЦУП запрашивает у экипажа, сколько времени ему нужно на подготовку к маневру
- Экипаж оценивает время на построение ориентации корабля для выполнения маневра (в минутах, например 1 минута) и сообщает ЦУПу.
- ЦУП рассчитывает дату для ускорения времени по формуле: T = Время маневра - Время включения двигателя - Время на подготовку. Допустим время маневра - 40210 секунд, время включения двигателя - 100 секунд до маневра и экипаж просит 1 минуту (60 секунд) на подготовку. Дата для перемотки времени = 40050.
- ЦУП запрашивает у Экипажа готовность к ускорению времени.
- Экипаж подтверждает
- ЦУП вводит в терминале команду "run warput(40050)." - начинается ускорение времени в игре.
- ЦУП запрашивает у Экипажа, видит ли тот ускорение времени.
- Экипаж подтверждает.
- Когда ускорение времени заканчивается, Экипаж сообщает об этом ЦУПу.
- Экипаж выполняет маневр:
- Строит ориентацию для маневра.
- В установленный момент времени запускает двигатель.
- ЦУП наблюдает за выполнением маневра с помощью телеметрии KSPTOT.
- Ждет когда индикатор dV маневра дойдет до нуля.
- Экипаж сообщает ЦУПу о успешном выполнении маневра.
- ЦУП проверяет результат выполнения маневра:
- Загружает в MA сценарий duna-correction-burn.mat
- Смотрит на параметры орбиты в боксе Final Spacecarft State: если там Orbiting about = Duna и в попапе при наведении Periapsis Alt. = 100-200 км, то коррекция не нужна. Если нет, то:
- Запускается оптимизация
- Если в результате оптимизации получается орбита, удовлетворяющая граничным условиям (Periapsis Alt. = 100 km, Inclanation = 0-10 degree), то маневр передается экипажу для исполнения как и было сделано ранее. Если нет, то:
- Надо попробовать увеличить диапазоны переменных оптимизации или время маневра
- План полета считается выполненным, если после коррекции корабль оказывается на курсе, ведущем к Дюне с перицентром орбиты ~100 км и небольшим наклонением.