kerbal.ruвики сборки «Оператор»
Оператор / Вики / Практика

Рандеву и стыковка

Как догнать аппарат на орбите: подгонка плоскости, фазовое окно, переход, гашение относительной скорости. Скриптом и руками, с разбором того, где автоматика заканчивается.

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

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

Почему нельзя просто лететь к цели

Первое, что хочется сделать, — направить нос на станцию и дать тягу. На орбите это не работает: разгон в сторону цели поднимает вашу орбиту, период растёт, и вы начинаете отставать. Классический результат — аппарат уходит выше и назад, а цель убегает вперёд.

Работает обратная логика: чтобы догнать — опуститесь ниже. Нижняя орбита короче, период меньше, вы обгоняете цель по углу. Поднимаетесь — отстаёте.

Шаг 1. Плоскости

Если ваша орбита наклонена относительно орбиты цели, никакие манёвры «в плоскости» не помогут: вы будете пролетать мимо сверху или снизу.

Плоскости сводятся прожигом поперёк движения, и делать это надо строго в точке пересечения плоскостей — там, где орбиты «ножницами» проходят одна сквозь другую. Цена манёвра:

Δv = 2 · v · sin(Δi / 2)

При скорости 2280 м/с и расхождении в 2° это 80 м/с. При 20° — уже 790 м/с, дороже, чем вывести спутник на орбиту. Отсюда правило: наклонение задают на пуске, а не исправляют потом. Азимут пуска считается из нужного наклонения, об этом Автоматизация запуска по шагам.

Скриптом:

RUNONCEPATH("0:/lib/rendezvous.ks").
PRINT r_relInc(TARGET).            // расхождение плоскостей, °
o_burn(r_nodeMatchPlanes(TARGET)). // свести

Про знак. Прожиг поперёк можно дать в две стороны, и «правильная» интуитивно не определяется: KSP работает в левой системе координат, где привычные формулы дают зеркальный результат. Мы на этом уже теряли полёт — разбор здесь. Поэтому модуль знак не вычисляет, а проверяет: строит узел дважды и оставляет тот, после которого расхождение плоскостей меньше. Проверка занимает доли секунды и не ошибается.

Шаг 2. Фазовое окно

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

Нужный угол опережения:

θ = 180° − ω_цели · t_перелёта

где t_перелёта = π · √(a³/μ) для переходной орбиты с большой полуосью a = (r₁ + r₂)/2.

Практически: если вы на 80 км, а станция на 250 км, ждать нужно, пока станция окажется примерно на 40–50° впереди вас. Если цель уже пролетела нужную точку — придётся ждать следующего совпадения, и чем ближе периоды орбит, тем дольше ожидание.

PRINT r_phase(TARGET).        // где цель сейчас, °
PRINT r_phaseNeeded(TARGET).  // где должна быть в момент старта

Ловушка одинаковых орбит. Если ваш период совпал с периодом цели, фаза не меняется никогда — окно не наступит, сколько ни жди. Модуль это ловит и говорит прямо: смени высоту на 5–10 км и повтори. Разные периоды — единственный способ сократить разрыв.

Шаг 3. Переход

Обычный хомановский прожиг: разгон в нижней точке поднимает противоположную апсиду до орбиты цели. Дальше вы летите по инерции, а расстояние до цели само сокращается.

o_burn(r_nodeTransfer(TARGET)).

Хороший переход приводит на 1–5 км от цели. Если промахнулись на десятки километров — почти всегда причина в том, что окно поймано неточно или плоскости сведены не до конца.

Шаг 4. Гашение скорости

Вы рядом, но летите мимо со скоростью в сотни метров в секунду. Дальше работают уже не орбитальные скорости, а относительные: разница векторов вашей скорости и скорости цели.

Чтобы затормозить, нос направляют по вектору относительной скорости — тяга гасит разницу. Дальше подход короткими импульсами, где скорость сближения держат пропорционально дистанции: за километр — метров двадцать в секунду, за сотню метров — один-два.

r_kill(TARGET, 0.5).        // погасить относительную скорость
r_approach(TARGET, 100).    // подойти на 100 м

Или всё сразу, от подгонки плоскости до подхода:

r_go(TARGET, 100).

Шаг 5. Стыковка — руками

Дальше скрипт из библиотеки останавливается, и это осознанное решение.

Причаливание — другая механика: нужно совместить оси двух портов, а не только позиции; порты имеют магнитный захват, который срывает выравнивание на последних метрах; аппарат надо разворачивать двигателями ориентации, не трогая маршевые. Автопилот для этого пишется отдельно и ломается от каждой нестандартной компоновки.

Практично так:

  • MechJebDocking Autopilot, надёжен на дистанциях до сотни метров;
  • руками — выбрать целевой порт (правый клик → «Установить как цель»), переключить управление на свой порт, дальше по навболу: удерживать маркер скорости на маркере цели, подходить со скоростью 0,5–1 м/с;
  • RCS обязателен — без него причалить нельзя.

Магнит захватывает с полуметра, при скорости до 1 м/с. Быстрее — отскок или поломка.

Порядок для скрипта

RUNONCEPATH("0:/lib/rendezvous.ks").
IF NOT HASTARGET { PRINT "цель не выбрана". } ELSE { r_go(TARGET, 100). }

Готовый файл лежит в Ships/Script/missions/rendezvous.ks. Аппарат должен быть уже на орбите — это операция, а не запуск: вывод на орбиту делает отдельный скрипт.

Что важно помнить

  • Скрипт работает только на аппарате в фокусе. kOS выполняет код на процессорах в радиусе 2,5 км от активного аппарата; всё остальное в игре заморожено. Рандеву нельзя «поставить в фоне» и заняться другим пуском.
  • Монотопливо кончается быстрее, чем кажется. Подход и причаливание съедают его десятками единиц. Модуль бережёт резерв (C_MONO_RESERVE), но запас закладывайте при постройке.
  • Стыковочные порты должны совпадать по размеру. Мелкий с крупным не соединится.
  • У станции должен быть свободный порт, повёрнутый в удобную сторону. Об этом думают на этапе компоновки — Орбитальные станции.

Что вызывать и с какими параметрами — kOS: справочник библиотеки kerbal.ru. Как строится станция целиком — Орбитальные станции. Наземная сборка и снабжение — Наземные базы и снабжение.

Связанные статьи