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

  1. Оффлайн

    Lynx

    Модераторы

    Сообщений: 2844

    PAPIK-77, а если у тебя параллельный пакет и бустеры уже кончились, а основная тушка еще работает? По какому критерию их отстреливать?
    23 декабря 2015 - 01:30 / #341
  2. Оффлайн

    Reistlyn

    Модераторы

    Сообщений: 987

    Lynx, пропорционально величине ускорения уменьшать угол наклона.к горизонту, от 90 до 0 градусов, очевидно-же
    23 декабря 2015 - 01:36 / #342
  3. Оффлайн

    PAPIK-77

    Посетители

    Сообщений: 47

    Lynx, С бустерами ещё не разбирался... пока упростил задачу. Но думаю не сложно. Могу поделится как решил задачу отстрела башни при достижении нужного ТВРа. Хотя что там делится: если ТВР>1,05 а вертикальная скорость <= 0 то STAGE. А по бустерам, их можно отследить или по нэйму или по твёрдому топливу.
    23 декабря 2015 - 01:39 / #343
  4. Оффлайн

    Finn

    Хорошие люди

    Сообщений: 1291

    PAPIK-77, мой вариант предлагает, при снижении тяги, делать STAGE. Тяга снизилась -> STAGE.

    У меня было так представь что у меня 5 движков 1 в середине и 4 по бокам. Работают все пять, 2 боковых движка передают топливо в другие 2 боковых, а те в свою очередь в 1 центральный. Поскольку работает ступень все пять баков считаются топливом ступени. И пока все баки не кончатся будет беда. Однако при просадке тяги сразу же происходит ступень.



    К слову разбираюсь в нодах. Ну их и переделали с моего последнего с ими знакомства. Дабы ты еще перед началом программы указывал какой апогей и какой перегей хочешь, а он пытался на него выводить.
    Сообщение отредактировал Finn 23 декабря 2015 - 01:42

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

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

    PAPIK-77

    Посетители

    Сообщений: 47

    Finn,
    Всё понял - спаржа и всё такое... тогда да. Спасибо за подсказку в дальнейшем попользую.
    Главное если программировать активно тротл, можно случайно отстрелить ступень.
    Сообщение отредактировал PAPIK-77 23 декабря 2015 - 01:53
    23 декабря 2015 - 01:49 / #345
  6. Оффлайн

    Finn

    Хорошие люди

    Сообщений: 1291

    На самом деле нельзя. Макстраст показывает максимально возможный траст т.е если тротл сто процентов. Поэтому изменения тяги не влияют

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

    23 декабря 2015 - 01:59 / #346
  7. Оффлайн

    PAPIK-77

    Посетители

    Сообщений: 47

    Finn,
    А! Во как оно... бум знать.
    23 декабря 2015 - 02:08 / #347
  8. Оффлайн

    Finn

    Хорошие люди

    Сообщений: 1291

    Разобрался в нодах.... Ну и жуть...... Часа 2 маялся что бы банальную автопостройку нода сделать.

    вообщем вот код и объяснения.

    SET OK to NODE( TIME:SECONDS ETA:APOAPSIS, 0, 0 ,0). // Строим нод под название ОК через количество времени на котором будет у нас Апогей с 0 параметрами.
    SET X TO "НУЖНАЯ НАМ ВЫСОТА (ЧИСЛО В МЕТРАХ)". // задаем X.
    add OK. // Добавляем нод на орбиту
    until 0{ // запускаем бесконечный цикл
    set ok:prograde to ok:prograde 1. // Добавляем к ноду OK по прогрейду 1 единицу дельты
    wait 0.1. // Немного ждем дабы не призвать кракена ненароком
    IF OK:ORBIT:Apoapsis>X {Break.} // Условие ЕСЛИ АПОГЕЙ ПОСТРОЕНОГО НОДА > X (что у нас нужная высота) ТО выходи из цикла.
    }

    Заметьте как взять высоту апогея или перегея нода "НАЗВАНИЕ НОДА":ORBIT:APOAPSIS <- Ну или Periapsis смотря что нужно. Время же до нода пишется так "НАЗВАНИЕ НОДА":ETA.

    Чтоб зафиксироваться на нод нужно писать Lock steering to "Название нода". Т.е. у меня Lock steering to OK.

    Я просто это записываю чтоб не потерять и не дай бог забыть. К тому же вам поможет наверняка. Разбираться как найти время начала прожига пока нету времени надо бежать
    Сообщение отредактировал Finn 23 декабря 2015 - 14:01

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

    23 декабря 2015 - 13:58 / #348
  9. Оффлайн

    lis_vamp

    Посетители

    Сообщений: 71

    Finn, оптимизирую тебе код (сам похожее использую)

    SET OK to NODE(ETA:APOAPSIS, 0, 0 ,0). // time:seconds не нужен... он поумолчанию
    SET X TO "НУЖНАЯ НАМ ВЫСОТА (ЧИСЛО В МЕТРАХ)". // правда не понятно, что это за высота
    add OK.
    until OK:ORBIT:Apoapsis>X{
    set ok:prograde to ok:prograde 1.
    }.
    так же короче? :)
    23 декабря 2015 - 14:32 / #349
  10. Оффлайн

    Finn

    Хорошие люди

    Сообщений: 1291

    lis_vamp, я пробовал подобное с Until, там какие-то артефакты могут вылазить в некоторых случаях поэтому сдвинул до отдельного бесконечного цикла.

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

    23 декабря 2015 - 15:39 / #350
  11. Оффлайн

    lis_vamp

    Посетители

    Сообщений: 71

    господа, это засада...
    такой вариант
    list DockingPorts FROM Target IN TDocks.
    не работает, хотя в мануале есть... печально
    23 декабря 2015 - 18:52 / #351
  12. Оффлайн

    Finn

    Хорошие люди

    Сообщений: 1291

    lis_vamp, скрин ошибки в студию

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

    23 декабря 2015 - 19:37 / #352
  13. Оффлайн

    Lynx

    Модераторы

    Сообщений: 2844

    Finn писал:
    Разбираться как найти время начала прожига пока нету времени надо бежать
    Ну с временем прожига все просто
    [attachment=22938]
    Сообщение отредактировал Lynx 23 декабря 2015 - 21:07
    23 декабря 2015 - 21:06 / #353
  14. Оффлайн

    Finn

    Хорошие люди

    Сообщений: 1291

    Lynx, это конечно все здорово но я надеялся найти в кос команду которая выдаст ответ.
    Писать тяжелый скрипт не хочется.

    Чем больше объем тем больше жуков

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

    23 декабря 2015 - 21:23 / #354
  15. Оффлайн

    Lynx

    Модераторы

    Сообщений: 2844

    Finn, ну две функции наверное не такой и страшный объем ;) Можно еще проверку на m.0 - m.k > 0 сделать на возможность прожига. Еще добавить проверок начальных условий и никаких багов, в общем тут элементарщина полнейшая.
    Как я понял направленность КОСа - фиг ты там что простого найдешь, если даже ускорение надо с приборов снимать.

    Можно еще попробовать не время / 2 для прожига считать, а дельту / 2 чтобы точно узел посередине прожига был. Это дискуссионно.
    23 декабря 2015 - 21:33 / #355
  16. Оффлайн

    fumlead

    Посетители

    Сообщений: 59

    lis_vamp, попробуй LIST TARGET:DOCKPORTS IN TPORTS.
    23 декабря 2015 - 22:14 / #356
  17. Оффлайн

    lis_vamp

    Посетители

    Сообщений: 71

    fumlead, пробовал по-всякому.. хотя в вот тут в примере написано так, как у меня ошибку выдает

    сейчас напишу прогу для выполнения нода.. только поем
    23 декабря 2015 - 22:43 / #357
  18. Оффлайн

    Finn

    Хорошие люди

    Сообщений: 1291

    Lynx, да впринципе раньше и дельту легко было извлекать одной командой.

    Ускорение я сам легко делал брал скорость ждал секунду и вычитал следующую скорость и брал с этого всего модуль. Получалось ускорение. Если брал меньше секунды, умножал пропорционально что бы получить мс2 сейчас с нодами воевать буду

    lis_vamp, SET OK to NODE(ETA:APOAPSIS, 0, 0 ,0) НЕА НЕ В КОЕМ СЛУЧАЕ, Хорошо что заметил и проверил.

    Обязательно когда пишешь нод писать SET OK TO NODE(TIME:SECONDS ETA:APOAPSIS,0,0,0). и никак иначе. Проверил если написать как написано выше с нодом творятся артефакты, точнее не с нодом а с тем через какое время он встанет. Если же указать как я написал всё в порядке и нод встанет на апогей.

    Никак не могу понять как командой выявить время прожига для в нашего нода...:((( Пытаюсь оригинальную инструкцию ковырять и не могу ничего найти(

    Найти все не получается. Как насчет простого способа примерного подсчета?

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

    23 декабря 2015 - 23:10 / #358
  19. Оффлайн

    lis_vamp

    Посетители

    Сообщений: 71

    в общем вот
    "месяцы бессонных ночей" и тысячи проб и разбитых ракет :)
    итак всё по порядку

    как-то так..

    да, забыл
    ship:AVAILABLETHRUST из подсчёта нужен, если у движка установлен тротл лимит.. онечь помогает на том же минмусе
    Сообщение отредактировал lis_vamp 23 декабря 2015 - 23:25
    23 декабря 2015 - 23:17 / #359
  20. Оффлайн

    Finn

    Хорошие люди

    Сообщений: 1291

    То ли я туплю, то ли не пойму мозг отказывается понимать. Разъясните как это работает...

    set max_acc to ship:maxthrust/ship:mass.
    set burn_duration to nd:deltav:mag/max_acc.
    print "Estimated burn duration: " round(burn_duration) "s".
    wait until node:eta <= (burn_duration/2 60).

    lis_vamp, что то прям совсем тяжелое:) Попробуй упростить)

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

    23 декабря 2015 - 23:25 / #360

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

M. Gordon

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

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

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