Автор: Iavasdemsul Категория: Kerbal Space Program » Гайды

kOS-скрипт посадочного автопилота

Добрых шестичасовых суток!

Хочу представить вам свои наработки по созданию автоматического пилотирования на основе скриптов kOS. Сегодня речь пойдет об автоматической посадке на Кербин …постойте! – скажут некоторые – во-первых, в чем сложности посадки на Кербин?! – есть же парашюты; а во-вторых, есть MechJeb. Правильно, ни то и ни другое не мешает нам расслабиться и наслаждаться жизнью, т.е. полетом. Но мы были бы не мы, если бы не ставили перед собой дополнительных задач, которые помогают нам смотреть шире на обыденные для нас вещи.
Итак, автоматическая посадка на Кербин без парашютов и MechJeb’а, имея в наличии всего лишь kOS-процессор на борту и скрипт посадки “landing.ks”.




Теперь от теории к практике.



P. S. Подводные камни.
Как всегда, не все так прекрасно, как очень хочется. Нельзя просто так запустить скрипт на любом аппарате, удобном для посадки на Кербине, или еще где. Необходимо учесть два параметра, разных для каждого аппарата.
1. Измерение высоты полета над поверхностью не учитывают высоту самого крафта, в следствии чего расчетная финальная высота в реальности оказывается ниже уровня земли, и мы получаем не очень мягкую посадку.
2. Инертность работы скрипта ведет к зависанию аппаратов с двигателями с большим TWR над поверхностью земли, т.к. импульсы тяги больше, чем нужно, и скрипт вылетает из-за потери ретрогрейда.
Если в решении второй проблемы я ввел в скрипт программный лимит тяги (эмпирически выведен лимит в TWR=2), то для решения первой приходится вводить данные о высоте крафта в скрипт, а точнее высоту расположения командного модуля относительно самой нижней точки крафта.

Пока все. Спасибо за внимание.

Скрипт landing.ks

landing.zip [1,93 Kb] (cкачиваний: 302)

- + +97
У Вас НЕТ прав на выставление оценки для этой новости.
Для выставлени оценки необходимо пройти регистрацию на сайте.
Если Вы уже зарегистрировались, то войдите на сайт.
  1. 74
    Это Басила Басила - #10 0
    +8
    Плюсую нечитая яростно)
    зы: еще больше плюсую, за теорию, и за практику и вообще за приятную и понятную подачу. Исполать тебе) Лис, твой выход)
    »
    Написано:
    Группа: Модераторы, Публ/Комм: 3/1 017
    Даннинг с Крюгером погубят человечество.
    игривые картинки
    "Сложные проблемы всегда имеют простые, легкие для понимания неправильные решения."
     
  2. Выкл.
    Это valkerman valkerman - #20 0
    +8
    Товарищ, ты офигенен. Я из-за лени и недостатка времени эту затею бросил. Теперь допилю - ты всю основную работу проделал.
    »
    Написано:
    Группа: Посетители, Публ/Комм: 0/24
     
  3. 0
    Это Tesla254 Tesla254 - #30 0
    +7
    Вот решение первой проблемы. Модуль покажет реальную высоту до поверхности.
    »
    Написано:
    Группа: Посетители, Публ/Комм: 0/45
     
    1. 3
      Это Iavasdemsul Iavasdemsul - #40 0
      0
      Отличная идея. Спасибо.
      »
      Написано:
      Группа: Посетители, Публ/Комм: 2/23
       
  4. Выкл.
    Это Reistlyn Reistlyn - #50 0
    +2
    Перенес в "Гайды" (тут это более к месту)
    »
    Написано:
    Группа: Модераторы, Публ/Комм: 41/330
     
  5. 0
    Это DimasusFX DimasusFX - #60 0
    0
    Спасибо за очень полезный скрипт, плюсую!
    »
    Написано:
    Группа: Посетители, Публ/Комм: 0/3
    Совы не то, чем кажутся...
     
  6. 3
    Это Пряморукий пилот Пряморукий пилот - #70 0
    0
    Никаких скриптов; только вручную - только хардкор!
    »
    Написано:
    Группа: Посетители, Публ/Комм: 5/58
    Art is distillation of experience. - Daniel Wallace
     
    1. 51
      Это Lynx Lynx - #80 0
      +4
      Этот скрипт написан вручную. Вот это - хардкор.
      »
      Написано:
      Группа: Хорошие котейки, Публ/Комм: 0/495 [Онлайн]
       
      1. 3
        Это Пряморукий пилот Пряморукий пилот - #90 0
        0
        Хардкорно было, когда программы двоичным кодом для ламповых и транзисторных компьютеров писали. А этот скрипт был бы гораздо полезнее для посадки на безатмосферные планеты и луны.
        UPD: Ладно, все равно поставил плюс за труды; применение этому скрипту , при желании, можно найти. (Хотя лично я предпочитаю геморройный путь размещать ретрансляторы везде, где только можно, для предотвращения казуса потери связи.)
        »
        Написано:
        Группа: Посетители, Публ/Комм: 5/58
        Art is distillation of experience. - Daniel Wallace
         
  7. 2
    Это sahsa_sahencie sahsa_sahencie - #100 0
    0
    Цитата: Пряморукий пилот
    Никаких скриптов; только вручную - только хардкор!

    Вручную нельзя посадить беспилотный аппарат в RT при потере связи.
    А скрипт и вправду полезен.
    »
    Написано:
    Группа: Посетители, Публ/Комм: 0/34
    Радуга достраивает орбиту!
     
  8. 7
    Это lis_vamp lis_vamp - #110 0
    +3
    несколько подсказок.. высоту можно считать не только alt:radar.
    а вот такой конструкцией ship:geoposition:TERRAINHEIGHT. собственно получает ship:Altitude - ship:geoposition:TERRAINHEIGHT.
    по тяге можно тоже написать ограничитель ТВР..
    остаётся один вопрос, в горах сядет?
    »
    Написано:
    Группа: Посетители, Публ/Комм: 0/28
     
    1. 3
      Это Iavasdemsul Iavasdemsul - #120 0
      0
      Только ship:geoposition:terrainheight выдает странные значения, и не всегда

      ship:altitude - ship:geoposition:terrainheight = alt:radar

      особенно при наклонном падении. Работает лишь при отвесном спуске.
      Про ТВР я написал, что ограничил программно.
      А проблему с измерением высоты решили модом LaserDist.
      Прицепил лазер на "пятую точку" и добавил:

      set laser_module to ship:modulesnamed("laserdistmodule")[0].
      if not laser_module:getfield("enabled") {
      laser_module:setfield("enabled",true).
      }
      lock curr_h to laser_module:GETFIELD("Distance") * sin(vang(up:vector,ship:facing:topvector)).
      //
      set h to 0.1. //!!!!!!!Высота LaserDist модуля корабля.
      //


      Теперь вычисляется не alt:radar, а curr_h:



      Остается разобраться со спуском вдоль склона, когда alt:radar < curr_h.
      »
      Написано:
      Группа: Посетители, Публ/Комм: 2/23
       
  9. 0
    Это MegaLoogin MegaLoogin - #130 0
    0
    Что за язык программирования в скрипте, и можно по подробнее об этом моде ?
    »
    Написано:
    Группа: Посетители, Публ/Комм: 0/4
     
    1. 0
      Это Tesla254 Tesla254 - #140 0
      +4
      »
      Написано:
      Группа: Посетители, Публ/Комм: 0/45
       
      1. 0
        Это MegaLoogin MegaLoogin - #150 0
        0
        Огромное спасибо !
        »
        Написано:
        Группа: Посетители, Публ/Комм: 0/4
         
  10. 1
    Это Gonzales_Gonzo Gonzales_Gonzo - #160 0
    +2
    Крутотень, почти как здесь
    https://www.youtube.com/watch?v=q1xSKBVOU6w

    И исходники там же есть, можно сравнить подходы авторов - https://github.com/jb10181/KOS_Suicide_Burn
    »
    Написано:
    Группа: Посетители, Публ/Комм: 0/99
     
    1. 3
      Это Iavasdemsul Iavasdemsul - #170 0
      0
      Спасибо, интересный алгоритм у JB.
      В теории различий нет, та же формула, только значения конечной скорости и высоты у него заданы нулевыми.
      Сам же скрипт разбивает полет на три части, где дает максимальную тягу при снижении ниже "критической" высоты, а потом при достижении нужной скорости в -6 м/с, просто регулирует тягу +/- 10% в зависимости от девиации вертикальной скорости.
      »
      Написано:
      Группа: Посетители, Публ/Комм: 2/23
       
  11. 7
    Это lis_vamp lis_vamp - #180 0
    +1
    Направление/наклон корабля доверим встроенному SAS

    если тебе нужен просто ретрогрэйд, то так и фиксить его "lock steering to srfretrograde."
    »
    Написано:
    Группа: Посетители, Публ/Комм: 0/28
     
    1. 3
      Это Iavasdemsul Iavasdemsul - #190 0
      +1
      Ага, уже разобрался с векторами и направлениями, последняя редакция скрипта здесь в теме на форуме:
      kOS - програмируемый автопилот
      »
      Написано:
      Группа: Посетители, Публ/Комм: 2/23
       
  12. 1
    Это ux3sty ux3sty - #200 0
    +3
    Я лишь посоветую использовать вместо/вместе сырой математики ПИД регуляторы, можно будет исправить некоторые проблемы, если правильно подобрать коэффициенты.
    »
    Написано:
    Группа: Посетители, Публ/Комм: 5/114
     
  13. 0
    Это beglum beglum - #210 0
    0
    Господы, помогите пожалуйста.
    Скачал расширение с оф. сайта модов для KSP (на курсе, как я понял).
    И само окно, после установки модуля корабля, не открывается. И способа открыть его я не нашел.
    »
    Написано:
    Группа: Посетители, Публ/Комм: 0/1
     
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Чат
  • Опрос
  • Стримы
    Хотите ли Вы сотрудничества между проектами SpaceDock.ru и Ангар Джеба?
Последние комментарии
  • Басила Басила написал в
    Aerion AS2 ( вариант до декабр ... (всего 5 комм.)
    Тоже недавно про него смотрел, сходство отличное) Но может, и правда пантеры надо было поставить? Заодно и ЦТ сдвинулся бы.
  • Qweryt Qweryt написал в
    Aerion AS2 ( вариант до декабр ... (всего 5 комм.)
    если что то этот самолёт-сверхзвуковой бизнес джет
  • Pand5461 Pand5461 написал в
    Aerion AS2 ( вариант до декабр ... (всего 5 комм.)
    За эстетику плюс. Но скорости - божечки мои. Лучше бы было на пантерах или виплашах собрать.
  • Soul Soul написал в
    Aerion AS2 ( вариант до декабр ... (всего 5 комм.)
    Плохо, что демонстрационный полёт выполнен в тёмное время суток.
  • KUDRJA KUDRJA написал в
    Aerion AS2 ( вариант до декабр ... (всего 5 комм.)
    Забыл написать:

    Во время взлёта подождите, пока самолёт разгонится до 100 м/с, затем нажимайте клавишу S ( тангаж вверх ) и при скорости 120 м/с самолёт взлетит.

    Во время посадки старайтесь не опускать скорость ниже 50 м/с.

    Версия KSP: 1.4.4
  • MaxxDamage MaxxDamage написал в
    Стратосферный Самолёт Универса ... (всего 6 комм.)
    "Я его слепила из того что было, а потом что стало, то и запустила"
Все комментарии
Обновления на форуме
159 Всего
0 Польз.
159 Гостей
Яндекс, Google
Онлайн список
Новостей на страницу:
Наверх