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

  1. 74
    Это Басила Басила - #10 0
    +6
    Плюсую нечитая яростно)
    зы: еще больше плюсую, за теорию, и за практику и вообще за приятную и понятную подачу. Исполать тебе) Лис, твой выход)
    »
    Написано:
    Группа: Модераторы, Публ/Комм: 3/1 059
    Даннинг с Крюгером погубят человечество.
    игривые картинки
    "Сложные проблемы всегда имеют простые, легкие для понимания неправильные решения."
     
  2. Выкл.
    Это valkerman valkerman - #20 0
    +8
    Товарищ, ты офигенен. Я из-за лени и недостатка времени эту затею бросил. Теперь допилю - ты всю основную работу проделал.
    »
    Написано:
    Группа: Посетители, Публ/Комм: 0/24
     
  3. 0
    Это Tesla254 Tesla254 - #30 0
    +7
    Вот решение первой проблемы. Модуль покажет реальную высоту до поверхности.
    »
    Написано:
    Группа: Посетители, Публ/Комм: 0/44
     
    1. 3
      Это Iavasdemsul Iavasdemsul - #40 0
      0
      Отличная идея. Спасибо.
      »
      Написано:
      Группа: Посетители, Публ/Комм: 2/23
       
  4. Выкл.
    Это Reistlyn Reistlyn - #50 0
    -8
    Перенес в "Гайды" (тут это более к месту)
    »
    Написано:
    Группа: Модераторы, Публ/Комм: 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. 53
      Это Lynx Lynx - #80 0
      +4
      Этот скрипт написан вручную. Вот это - хардкор.
      »
      Написано:
      Группа: Хорошие котейки, Публ/Комм: 0/550
       
      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/27
     
    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/44
       
      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/27
     
    1. 3
      Это Iavasdemsul Iavasdemsul - #190 0
      +1
      Ага, уже разобрался с векторами и направлениями, последняя редакция скрипта здесь в теме на форуме:
      kOS - програмируемый автопилот
      »
      Написано:
      Группа: Посетители, Публ/Комм: 2/23
       
  12. 1
    Это ux3sty ux3sty - #200 0
    +3
    Я лишь посоветую использовать вместо/вместе сырой математики ПИД регуляторы, можно будет исправить некоторые проблемы, если правильно подобрать коэффициенты.
    »
    Написано:
    Группа: Посетители, Публ/Комм: 5/112
     
  13. 0
    Это beglum beglum - #210 0
    0
    Господы, помогите пожалуйста.
    Скачал расширение с оф. сайта модов для KSP (на курсе, как я понял).
    И само окно, после установки модуля корабля, не открывается. И способа открыть его я не нашел.
    »
    Написано:
    Группа: Посетители, Публ/Комм: 0/1
     
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Чат
  • Опрос
  • Стримы
    Куда пойти, если сайт упал?
Последние комментарии
  • Басила Басила написал в
    До Луны и обратно (всего 4 комм.)
    так прямо в заголовке же - "До Луны и обратно"
  • PrimeTert PrimeTert написал в
    До Луны и обратно (всего 4 комм.)
    Как же редки стали здесь подобные видео((
    Отличный ролик, жаль теперь посты нормально не пролайкать
  • Басила Басила написал в
    Стервятник & дроид-диверсант ... (всего 10 комм.)
    картинки можно вставлять через кнопку "Картинка" над полем ввода текста. Вот так:

    на мой похож)
  • Slv Slv написал в
    До Луны и обратно (всего 4 комм.)
    Про РСС лучше в начале статьи указывать :-)

    PS блин снова боты минусаторы :-)
  • Major Tom Major Tom написал в
    До Луны и обратно (всего 4 комм.)
    шикарный ролик. очень!
  • Басила Басила написал в
    130 лет истории АВТОМОБИЛЕЙ (всего 6 комм.)
    Мастерство сьемки - моё почтение! Ну и модели, изобретательность в подборе деталей на высоте)
Все комментарии
Обновления на форуме
54 Всего
0 Польз.
54 Гостей
Яндекс, Google
Онлайн список
Новостей на страницу:
Наверх