RU
Ко всем проектам
ПРОЕКТ / ksp-autopilot

Авто-посадка ракет в Kerbal Space Program

Скрипты автопилота на Python управляют ракетами в Kerbal Space Program без участия человека через мод kRPC: телеметрия и команды управления передаются по TCP. Один скрипт выводит аппарат на устойчивую орбиту, второй включает в себя первый, но дополнительно возвращает ускоритель к мягкой вертикальной посадке возле площадки, пока верхняя ступень выходит на орбиту. Работа проверена в игре в 25 автономных полетах. В данный моент является личным проектом, а не публичным продуктом.

Python kRPC PID / vis-viva

Скрипты

02 скрипта
01 Запуск на орбиту

Выход на устойчивую орбиту

launch_to_orbit.py проводит активный аппарат через гравитационный разворот и выполняет циркуляризацию в апоцентре, формируя устойчивую орбиту высотой 70-80 км. Поддерживаются одно- и двухступенчатые ракеты. Для двухступенчатой схемы первая ступень отделяется после выработки топлива, а вторая завершает выход на орбиту.

Целевая высота, завершение гравитационного разворота, запас топлива первой ступени и ускорение физики настраиваются через командную строку.

02 Запуск и возврат

Запуск и возврат ускорителя

launch_and_recover.py выполняет профиль двухступенчатой ракеты по типу Falcon 9: запуск и отделение первой ступени после достижения заданного остатка топлива, по умолчанию 30%. Затем обе ступени одновременно управляются в одном цикле. Ускоритель разворачивается, выполняет возвратный импульс, выпускает аэродинамические тормоза и мягко садится вертикально, пока вторая ступень продолжает выход на орбиту.

Лучший результат: ускоритель приземлился без повреждений с отклонением 0,3° от вертикали и скоростью снижения 2,85 м/с. В том же полете верхняя ступень вышла на устойчивую орбиту 70,5 × 84 км.

Запись полного полета

второй скрипт / полная миссия
REC launch_and_recover.py полная миссия: запуск, разделение ступеней и автономный возврат ускорителя к вертикальной посадке. Во вставке показан одновременный выход второй ступени на орбиту.

Ограничения

только телеметрия

Полет только по бортовым данным

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

Используются бортовые данные

  • положение и скорость (GPS / INS)
  • высота и радиовысота
  • вертикальная и полная скорость
  • масса, тяга и остаток топлива
  • ориентация
  • бортовая модель атмосферы и сопротивления

Не используются данные игры

  • апоцентр и перицентр с карты
  • расчетная точка падения из игры
  • Δv узла маневра
  • данные, недоступные реальному ускорителю

Компоненты

классическое наведение
Интерфейс
kRPC через TCP, RPC и потоки телеметрии
Наведение
vis-viva формула программа гравитационного разворота и расчет посадочного импульса
Управление
ПИД-регуляторы ограничение скорости поворота и маховики без управления вектором тяги
Датчики
Только бортовое состояние положение, скорость, масса, тяга, топливо, ориентация, радиовысота и собственная модель сопротивления
Моды
kRPC и Physics Range Extender для одновременной симуляции разделенных ступеней
Тесты
93 теста pytest для математического слоя наведения
Статус
Проверено на >25 полетах ускоритель возвращается вертикально и без повреждений