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

  1. 75
    Это Басила Басила - #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
     
    1. 53
      Это Lynx Lynx - #80 0
      +4
      Этот скрипт написан вручную. Вот это - хардкор.
      »
      Написано:
      Группа: Хорошие котейки, Публ/Комм: 0/557
       
      1. 3
        Это Пряморукий пилот Пряморукий пилот - #90 0
        0
        Хардкорно было, когда программы двоичным кодом для ламповых и транзисторных компьютеров писали. А этот скрипт был бы гораздо полезнее для посадки на безатмосферные планеты и луны.
        UPD: Ладно, все равно поставил плюс за труды; применение этому скрипту , при желании, можно найти. (Хотя лично я предпочитаю геморройный путь размещать ретрансляторы везде, где только можно, для предотвращения казуса потери связи.)
        »
        Написано:
        Группа: Посетители, Публ/Комм: 5/58
         
  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
     
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Чат
  • Опрос
  • Стримы
    Куда пойти, если сайт упал?
Последние комментарии
  • Lynx Lynx написал в
    JC-1 (SpacePlaza) (всего 17 комм.)
    Почитал я про нитрометан - разлагается с выделением температуры. В каком он там месте одновременно окислитель и восстановитель содержит непонятно, это не смесь, а чистое вещество.
  • Vovanm88 Vovanm88 написал в
    JC-1 (SpacePlaza) (всего 17 комм.)
    По вики правильно то, что и перекись и гидразин и нитрометан(и прочая) дичь - все монотопливо, оба monopropellant, а что такое monofuel - нипанятно, но судя по поисковой выдаче слово более применимо к нитрометану, и вообще используется в испаноязычных странах
  • Lynx Lynx написал в
    JC-1 (SpacePlaza) (всего 17 комм.)
    Нормальный гуманитарий и словарь нормальный напишет.
    Может правильно и так и так, лишь бы вещество ОДНО было?
    А еще может есть разница между monofuel и monopropellant?
  • Pand5461 Pand5461 написал в
    JC-1 (SpacePlaza) (всего 17 комм.)
    Таки если словарь пишут гуманитарии, то

    Definition of monopropellant
    : a rocket propellant containing both the fuel and the oxidizer in a single substance

    (https://www.merriam-webster.com/dictionary/monopropellant)
    Но я всё-таки в том лагере, что считает, что однокомпонентное топливо не "сгорает в самом себе", а разлагается с выделением тепла.
  • Vovanm88 Vovanm88 написал в
    JC-1 (SpacePlaza) (всего 17 комм.)
    ny partially nitrated alcohol esters are suitable for use as monopropellants. "Trimethylene glycol dinitrate" or 1,3-propanediol dinitrate is isomeric with PGDN, and produced as a fractional byproduct in all but the most exacting laboratory conditions; the marginally lower specific gravity (and thus energy density) of this compound argues against its use, but the minor differences in chemistry may prove useful in the future.[citation needed]

    The related "dinitrodiglycol", more properly termed diethylene glycol dinitrate in modern notation, was widely used in World War 2 Germany, both alone as a liquid monopropellant and colloidal with nitrocellulose as a solid propellant. The otherwise desirable characteristics of this compound; it is quite stable, easy to manufacture, and has a very high energy density; are marred by a high freeze point (-11.5 deg. C) and pronounced thermal expansion, both being problematic in spacecraft. "Dinitrochlorohydrin" and "tetranitrodiglycerin" are also likely candidates, though no current use is known. The polynitrates of long chain and aromatic hydrocarbons are invariably room temperature solids, but many are soluble in simple alcohols or ethers in high proportion, and may be useful in this state.


    вот хотя бы
  • Marschig Marschig написал в
    JC-1 (SpacePlaza) (всего 17 комм.)
    Не "наверное", а совершенно точно греет.
    The most common use of monopropellants is in low-impulse rocket motors, such as reaction control thrusters, the usual propellant being hydrazine which is generally decomposed by exposure to an iridium catalyst bed (the hydrazine is pre-heated to keep the reactant liquid). This decomposition produces the desired jet of hot gas and thus thrust.
Все комментарии
Обновления на форуме
86 Всего
0 Польз.
86 Гостей
Яндекс, Google
Онлайн список
Новостей на страницу:
Наверх