kOS - програмируемый автопилот

  1. Оффлайн

    lis_vamp

    Посетители

    Сообщений: 71

    Finn, это плохо работает.. посчитали фактическое ускорение... исходя из этого считаем как бы время прожига..

    а что упрощать-то ... дальше некуда уже
    Сообщение отредактировал lis_vamp 23 декабря 2015 - 23:33
    23 декабря 2015 - 23:32 / #361
  2. Оффлайн

    Finn

    Хорошие люди

    Сообщений: 1291

    Всё готово

    Вот рабочий вариант
    lock steering to nextnode. // Закрепляемся на нод
    set max_acc to ship:maxthrust/ship:mass. // Задаем макс ускорение
    set burn_duration to nextnode:deltav:mag/max_acc. // Находим время прожига деля дельту прожига нода на макс ускорение
    set X to nextnode:eta - burn_duration. // Забиваем время ожидание которое равно Время до нода - Время прожига
    wait X. // Ждем время До нода минус Время прожига
    lock throttle to 1. // Прожигаем
    wait until Apoapsis>nextnode:orbit:Apoapsis. // Ждем пока Апогей корабля будет выше апогея нода.
    lock throttle to 0. // Сбрасываем тягу

    Летать и строить. Строить и летать.

    23 декабря 2015 - 23:34 / #362
  3. Оффлайн

    lis_vamp

    Посетители

    Сообщений: 71

    Finn, и получаем перекос выполнения нода.. время посчитано не верно, отсюда раньше старт выполнения.

    на длинных маневрах можно получиться совершенно неожиданные результаты
    Сообщение отредактировал lis_vamp 23 декабря 2015 - 23:44
    23 декабря 2015 - 23:42 / #363
  4. Оффлайн

    Finn

    Хорошие люди

    Сообщений: 1291

    lis_vamp, для подъема на орбиту достаточно. Получил забавную фичу:) При подъеме на орбиту корабль не успевает построить нод, т.к. строит его слишком медленно:) Весело) Там ведь как минимум тысячи полторы надо, а он у меня по 10 мс в секунду добавляет)

    К тому же ничего не стоит разделить время прожига на два и отнять это время от время до нода, тут уж взависимости от применения

    Летать и строить. Строить и летать.

    23 декабря 2015 - 23:50 / #364
  5. Оффлайн

    Finn

    Хорошие люди

    Сообщений: 1291

    Всё поломал. Работал грубо выход на 7070 км делал на 13470, но делал. Сейчас после завершении нода зачем то строит еще ноды при чем какие то непонятные, пытаюсь отловить жука:(((((( А впринципе всё заработало. К слову при увеличении высоты до 100100 смог снизить потери точности до 112105. Если еще с Нормалями поработаю, чтоб не просто добавлять прогрейд но еще и нормаль, и правильный угол выхода из атмосферы подкоректирую, думаю уложиться в 2-4% ошибки.

    Летать и строить. Строить и летать.

    24 декабря 2015 - 00:32 / #365
  6. Оффлайн

    lis_vamp

    Посетители

    Сообщений: 71

    Finn, построение маневра с точностью до 100 метров... вот чего хочу... :)
    24 декабря 2015 - 00:45 / #366
  7. Оффлайн

    Finn

    Хорошие люди

    Сообщений: 1291

    Хм проблема, которая походу не баг а фича. После завершении программы выставляет тягу по умолчанию т.е. 0.5. Хотя в конце программы есть LOCK THROTTLE TO 0. Кто-нибудь этот баг обошёл?

    Таки всё заработало, но пока только выходит на круговую орбиту, и не совсем оптимально с разбросом порядка Апогей 15% Перегей 5-8%.

    С включением тротла после завершении программы, сам не знаю как решить.

    Летать и строить. Строить и летать.

    24 декабря 2015 - 01:22 / #367
  8. Оффлайн

    fumlead

    Посетители

    Сообщений: 59

    Finn, это не совсем баг, это фича) Управление возвращается игроку, а с момента launch`a дроссель выставлен на половину) Исправить довольно просто:
    SET SHIP:CONTROL:PILOTMAINTHROTTLE TO 0.
    24 декабря 2015 - 01:23 / #368
  9. Оффлайн

    lis_vamp

    Посетители

    Сообщений: 71

    решение до боли простое... перед запуском скрипта нажать Х
    24 декабря 2015 - 01:47 / #369
  10. Оффлайн

    Silver

    Посетители

    Сообщений: 21

    lis_vamp, бритва Оккама рулит))
    Я, похоже в отстающих, только добрался до ноутпада, однако, первый автопилот таки закончил. Ракеты со стандартной схемой ступеней (последовательное включение) стабильно выводит на заданную экваториальную орбиту 75*75 ( 1 км.).

    Минусы:
    - Довольно топорна. К примеру для скругления орбиты не стал применять создание нода (как сделано у вас, хотя изначально хотел, соблазнившись красивым кодом). Скругление практически вручную, с помощью нескольких дискретных импульсов. Причина - пришел к мысли, что для стандартного вывода на круговую экваториальную орбиту - слишком избыточно, а вывод ракеты на произвольную орбиту (параметры задаются перед запуском) - крайне интересная задача, но смысл имеет лишь в RSS. В стоке экономичнее изменить опорную экваториальную орбиту.
    - Ограничение тяги на старте по TWR. Эффективнее было бы через динамическое давление. Проблема не в самом ограничении именно по TWR, а в том, что параметры ограничения устанавливаются вручную - недостаточно эффективно. В планах на завтра.
    - Опять таки топорное задание траектории. Нужную функцию так и не вычислил, параметры задаются фактически вручную - но, как ни странно, такая схема оказалась достаточно эффективной. Видимо просто сказался опыт игры. Параметры легко настраиваются. Но все равно, для полноценного автопилота - выявление функции траектории осталось в приоритете.
    - Позволяет запускать ракеты только стандартной схемы. В планах на завтра переделать по схеме, предложенной Finn.
    Сообщение отредактировал Silver 24 декабря 2015 - 02:20
    24 декабря 2015 - 02:15 / #370
  11. Оффлайн

    Finn

    Хорошие люди

    Сообщений: 1291

    lis_vamp, так не интересно:) Полная автоматика.

    Сегодня еще посмотрел как с теленет работать) Достаточно забавная штука -> Экран консоли в винду выводит. Та старая идея что говорил, типо выводишь спутник и чисто одной консолью управляешь и летаешь и сажаешь и все остальное делаешь, имея лишь одну консоль. С этим модом вообще интересно получается. К тому же для стримов можно это окно консоли в винде еще и стримить:)

    Знает кто сейчас мод который может на экшен группу, или хотя бы просто не на экшен группу может сделать СКРИНШОТ. Очень уж пригодилось бы:)



    ТЕМ КТО ЖДЕТ ГАЙД по кОС
    Гайд будет на выходных по Тротлу Дирекшену и нодам, либо в середине конце след недели по тому что сказал еще по остальным прикладным вещам.

    Товарищи завсегдатаи темы отсылайте предложения что включить прямо сюда, дабы гайд полный получился. Нужны используемые прикладные команды и структуры. Кроме тех что выше уже описал.

    Silver, я задаю твр через ускорение. Считываю скорость, жду, считываю еще раз, вычитаю из первого второе и беру от этого модуль. Получаю ускорение, если первышает допустимый порог немного убавляю тягу(на 1 процент, частота итераций 0.1 сек) Держит не выходя за пределы - 0.5 мс2

    Насчет скругление орбит немного непонятно. С текущей аэродинамикой тяжелые и сверхтяжелый ракеты, просто не выдержат резких хоть и поступательных наклонов и перевернутся. Есть конечно идея, делать скругление в зависимости от веса считываемого перед стартом. Пока у меня скругление идет по 1 градусу на каждой тысяче метров до высоты 15к метров, по 2 градуса на каждой 1500 тысяче метров от 35к метров, и на 4 градуса на каждых 2 тысячах после 50 тысяч метров.

    Вижу что достаточно не оптимально ибо обычно прожиг заканчивается(а он у меня заканчивается когда набирается требуемый перегей(который вначале является апогеем)) примерно на 40-45 градусах, при том что крафт достаточно дикий Ствол на карандаше с Лв с векторингом(215 кН вроде) и Две двушки карандашей с Лв без векторинга (235 которые), и еще отделение происходит сначала одна двушка потом другая. Дельты получается тьма, хватает с лихвой чтобы орбиты почти до Дюны проложить.

    Конечно до 15 тысяч опускаться по градусу это вполне норм мне кажется а уже после до 35 надо опуститься до 45 градусов, вот была моя логика, а потом как можно быстрее до 90, но не слишком резко чтоб не перевернуться от аэродинамики а лучше бы о ней не рассказывали по первому правилу.

    Другое дело что искомые 70-100 тысяч апогея крафт набирает при наклоне на 45 градусов и высоте в 35 тысяч за десяток секунд. Может конечно стоит сильно уменьшить тягу на время поворота.... Вообщем это вещи над которыми я сейчас размышляю если есть предложения пишите.


    Насчет нодов, слава богу разобрался, хотя то что нет команды времени прожига вообще атас. С их неудобством придется смириться ибо длинные перелеты уже не пройдут без точных нодов наверняка.

    Перелёты к луне тоже надо немного осмыслить попозже, а команду для лендеров писать еще легче. Из самого сложного остались такие проблемы как

    - Стыковка
    - Огромные перелёты
    - Посадка самолётов и космолётов на шасси. (частично решаемо посадкой на воду.(можно же биомы сканировать))

    Зная это мы сможем составить неплохую библиотеку программ. Так что работаем, господа!:)

    Летать и строить. Строить и летать.

    24 декабря 2015 - 02:38 / #371
  12. Оффлайн

    lis_vamp

    Посетители

    Сообщений: 71

    Finn, попробуй по такому профилю выходить

    24 декабря 2015 - 03:23 / #372
  13. Оффлайн

    Finn

    Хорошие люди

    Сообщений: 1291

    Работает:) Финн доволен:) Научились мы выходить на элипсовую орбиту с маленькими издержками. При выходе на 300200 выходит на 326205 тоесть погрешность составляет около 8% на апогее и около 2% на перегее. Буду улучшать результаты. К тому же я к ноду добавил RadialOUT что бы он коректней условия окончания цикла выхода на орбиту исполнял -> Перегей не ниже заданного вначали AND Апогей не ниже заданного в начале.

    Время сместил до
    set X to nextnode:eta - burn_duration/2.
    wait X.

    На тестах с другими кораблями выявились проблемы с преждевременным переключением ступени. Буду исполнять. Код кстати кому закинуть моего автопилота?

    На счет профиля, брал более пологий чем предлогал мне лис, и всё равно чувствовал как один из не самых нестабильных крафтов трещал по швам еле держал тангаж(*ОБНОВЛЕНО* 1 раз таки развалился). Задумываюсь о подборе профиля взависимости от высоты параметров указаных Апогей-перегей с расчетом на массу аппарата.
    Профиль:
    dP это у меня дельта Питч, сколько градусов изменяется за 1000 метров.
    set dp to 1.
    if altitude > 10000 {set dp to 2. set dAL to 1000.}
    if altitude > 20000 {set dp to 3. set dAL to 1000.}
    if altitude > 30000 {set dp to 1. set dAl to 1000.}
    if altitude > 42000 {set dp to 0. set P to 0.}
    Из вышесказанного на высоте 10 000 - Тангаж 80, на 20 000 Тангаж 60, на 30 000 Тангаж 30, на 42 000 Тангаж 0.

    Очень странно со ступенями, то ли баг, то ли не пойму. На некоторых крафтах с кучей ступеней работает как надо на некоторых выявляются артефакты. Надо разбираться.
    Сообщение отредактировал Finn 24 декабря 2015 - 09:34

    Летать и строить. Строить и летать.

    24 декабря 2015 - 09:19 / #373
  14. Оффлайн

    Tadip

    Посетители

    Сообщений: 69

    Ох давно тут меня не было. Кажется тут я оставлял уравнение наклона к горизонту от высоты, интересно кому-нибудь помогло?
    24 декабря 2015 - 14:04 / #374
  15. Оффлайн

    PAPIK-77

    Посетители

    Сообщений: 47

    На счёт скругления:

    Может криво написал, сори. Изымал из уже написанного(вырвал из контекста), и убрал всякий мусор.
    Сообщение отредактировал PAPIK-77 24 декабря 2015 - 14:19
    24 декабря 2015 - 14:15 / #375
  16. Оффлайн

    Finn

    Хорошие люди

    Сообщений: 1291

    По-моему каждый этот скрипт переделал под свои нужды или написал что-то по подобию

    Летать и строить. Строить и летать.

    24 декабря 2015 - 15:57 / #376
  17. Оффлайн

    PAPIK-77

    Посетители

    Сообщений: 47

    Если kos посерел, он подвис - не справился или что?

    25 декабря 2015 - 23:31 / #377
  18. Оффлайн

    Silver

    Посетители

    Сообщений: 47

    PAPIK-77, аккумулятор сел.
    25 декабря 2015 - 23:36 / #378
  19. Оффлайн

    PAPIK-77

    Посетители

    Сообщений: 47

    Silver, да лан...
    25 декабря 2015 - 23:39 / #379
  20. Оффлайн

    PAPIK-77

    Посетители

    Сообщений: 47

    Мля! Сломал себе всю голову. Задача та-же (поставленная самому себе): при приближении апоапсиса к искомому, не выключая двигатель и не уменьшая тягу, держать такой угол, который не подымал бы апоапсис, но подымал ба периапсис, плавно выравнивая тангаж по мере достижения искомого результата. Чего я только не пробовал, и искал угол между крафт-нужный апоапсис- нынешний апоапсис, и зависимость угла от разницы нужного апоапсиса и того который сейчас... и т.д. Ну жаба же, как то это считает.
    Как гРицца век живи, век...

    Уже и упрстил всё вроде донельзя: при небольшей разнице апогея и нужной орбиты понижаем тангаж до нуля. А дальше вроде всё просто: апогей больше нужного -> тангаж (–) (сколько?), апогей меньше нужного -> тангаж ( ) (опять же сколько?)
    Сообщение отредактировал PAPIK-77 26 декабря 2015 - 00:28
    26 декабря 2015 - 00:17 / #380

Статистика форума, пользователей онлайн: 1 (за последние 10 минут)

M. Gordon

Администраторы | Модераторы | Хорошие люди | Посетители | Новичок

Создано тем1933 Всего сообщений158043 Пользователей19232 Новый участникСпатик
Loading...

Нашли ошибку?
Вы можете сообщить об этом администрации.
Выделив текст нажмите Ctrl+Alt