Автор: 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качиваний: 235)

- + +96
У Вас НЕТ прав на выставление оценки для этой новости.
Для выставлени оценки необходимо пройти регистрацию на сайте.
Если Вы уже зарегистрировались, то войдите на сайт.
  1. 69
    Это Басила Басила - #10 0
    +8
    Плюсую нечитая яростно)
    зы: еще больше плюсую, за теорию, и за практику и вообще за приятную и понятную подачу. Исполать тебе) Лис, твой выход)
    »
    Написано:
    Группа: Редактор, Публ/Комм: 3/952 [Онлайн]
    Даннинг с Крюгером погубят человечество.
    игривые картинки
    "Сложные проблемы всегда имеют простые, легкие для понимания неправильные решения."
     
  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. 38
    Это Reistlyn Reistlyn - #50 0
    +2
    Перенес в "Гайды" (тут это более к месту)
    »
    Написано:
    Группа: Модераторы, Публ/Комм: 41/331
     
  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/427
       
      1. 3
        Это Пряморукий пилот Пряморукий пилот - #90 0
        0
        Хардкорно было, когда программы двоичным кодом для ламповых и транзисторных компьютеров писали. А этот скрипт был бы гораздо полезнее для посадки на безатмосферные планеты и луны.
        UPD: Ладно, все равно поставил плюс за труды; применение этому скрипту , при желании, можно найти. (Хотя лично я предпочитаю геморройный путь размещать ретрансляторы везде, где только можно, для предотвращения казуса потери связи.)
        »
        Написано:
        Группа: Посетители, Публ/Комм: 5/58
        Art is distillation of experience. - Daniel Wallace
         
  7. 1
    Это sahsa_sahencie sahsa_sahencie - #100 0
    0
    Цитата: Пряморукий пилот
    Никаких скриптов; только вручную - только хардкор!

    Вручную нельзя посадить беспилотный аппарат в RT при потере связи.
    А скрипт и вправду полезен.
    »
    Написано:
    Группа: Посетители, Публ/Комм: 0/32
    Радуга достраивает орбиту!
     
  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/115
     
  13. 0
    Это beglum beglum - #210 0
    0
    Господы, помогите пожалуйста.
    Скачал расширение с оф. сайта модов для KSP (на курсе, как я понял).
    И само окно, после установки модуля корабля, не открывается. И способа открыть его я не нашел.
    »
    Написано:
    Группа: Посетители, Публ/Комм: 0/1
     
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Чат
  • Трансляции
  • Информация
    На какой стороне Силы Вы?
Последние комментарии
  • uguga uguga написал в
    Таблица автоматического расчёт ... (всего 7 комм.)
    Спасибо за замену краткого описания и превью. Выглядит теперь нормально.
  • Caballero Caballero написал в
    Русификатор для мода KAS. (всего 60 комм.)
    Спасибо большое. Для меня русификаторы - вопрос эстетики игры.
  • Kerbiter Kerbiter написал в
    Таблица автоматического расчёт ... (всего 7 комм.)
    поправил тексты и кинул на главную, автору респект
  • Marschig Marschig написал в
    Таблица автоматического расчёт ... (всего 7 комм.)
    Будет удобнее, если все расчеты по космическому аппарату свести на одну страницу, чтобы видеть всё сразу, не прыгать по разным страницам и не вводить одно и то же несколько раз.
    Лучше показывать два TWR одновременно - для полного и пустого аппарата.
    Также непонятен практический смысл расхода топлива, интереснее было бы время прожига.
  • Басила Басила написал в
    Таблица автоматического расчёт ... (всего 7 комм.)
    а я только зашел её похвалить)
  • uguga uguga написал в
    Таблица автоматического расчёт ... (всего 7 комм.)
    Господа, прошу прощения за убогую картинку на превью. Не нашёл что поставить. Честно.
Все комментарии
Обновления на форуме
129 Всего
3 Польз.
126 Гостей
Google, Яндекс, Alexa, Div_Z, Rsa, alexoff
Онлайн список
Новостей на страницу:
Наверх