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

  1. Оффлайн

    Lynx

    Модераторы

    Сообщений: 2844

    блин, глупость написал

    :(
    Сообщение отредактировал Lynx 18 июня 2017 - 01:46
    18 июня 2017 - 01:46 / #501
  2. Оффлайн

    Lynx

    Модераторы

    Сообщений: 2844

    Секундочку! А разве акселерометр на орбите не должен строго 0 показывать? Невесомость и свободное падение жы!
    18 июня 2017 - 13:26 / #502
  3. Оффлайн

    Sifno

    Хорошие люди

    Сообщений: 302

    Lynx писал:

    Секундочку! А разве акселерометр на орбите не должен строго 0 показывать? Невесомость и свободное падение жы!
    Игровой показывает строго 0.0, все по ролеплею. Но kOs туда прибавляет и гравитацию туда. Я пока не определился что удобнее.

    Не парни у меня какая-то херня происходит. Вот собрал немного данных на орбите вовремя перехода в 100км
    googleDoc 

    Вы на какой версии KSP и kOs играете? Акселерометр не врал, точнее его показания соответствуют реальному изменению показателей скорости в kOs.
    В таблице в районе 120 строк. Выделил цветом переход. Там еще можно пронаблюдать инертность акселерометра.

    Как уже выше писал таинственная сила смотрит в направлении "radial out" - голубая метка в небо.

    Если что у меня версия 1.2.2 и 
    v1.1.0 Everything`s all GUI Release 1.2.2 5 days ago

    Сопротивление воздуха в обход kOs`а меня тоже пока огорчает. Открыл aeroGUI, то что дебагпанель. И там подробно разложены все воздушные силы действующие на аппарат.
    Скидывал в атмосфере капсулу перпендикулярно ее движению, чтоб подъемной силы не образовывалось, что панель и подтверждала. Сделал пару срезов данных с той же панели.

    И решил поставить их в соответствие с указаной на ksp-вики формулой:

    Прикрепленная картинка

    where p is the atmospheric density (kg/m3), v is the ship`s velocity (m/s), d is the coefficient of drag (dimensionless), and A is the cross-sectional area (m2).

    Мне было известно сила сопротивления, плотность и скорость. Коэффициент сопротивления и площадь нет, но в ходе эксперимента она не меняется.
    Подставляю и вывожу неизвестное мне произведение характеристик, которые должны быть от среза к срезу неизменны, но это не так!
    Они троекратно плавают в зависимости от высоты. Подобная магия меня огорчает.
    Сообщение отредактировал Sifno 18 июня 2017 - 14:45

    Основы космического полета
    Формула Циолковского
    Перелет между компланарными круговыми орбитами
    Трех-импульсный перелет между круговыми орбитами

    18 июня 2017 - 14:42 / #503
  4. Оффлайн

    Sifno

    Хорошие люди

    Сообщений: 302

    Пересмотри свои выводы. Обрати внимание, акселерометр показывает ускорение не в м/с^2, а в g. Притом скорее всего в g Кербина на уровне моря.
    Терминальная скорость это не та, при которой аппарат начинает тормозить, а скорее та, при которой он перестает тормозить и скорость устаканилась. 
    Терминальную скорость нужно ловить на последних километрах падениях, при условии того что аппарат достаточно легкий и не обладал сверх избытком скорости.

    Вообще в моих замерах игровые приборы мне не врали. Врал именно kOs, скорее всего потому что он их берет не с них, а пытается высчитать сам, он же нам вектор возвращает, а это куда круче скалярных значений тех приборов.
    Сообщение отредактировал Sifno 18 июня 2017 - 15:28

    Основы космического полета
    Формула Циолковского
    Перелет между компланарными круговыми орбитами
    Трех-импульсный перелет между круговыми орбитами

    18 июня 2017 - 15:26 / #504
  5. Оффлайн

    KMS

    Хорошие люди

    Сообщений: 152

    1) именно, в g и именно на уровне моря. Естественно учтено.
    2) я в курсе. Вот как раз на 20 км. оно начинает лететь равномерно, без ускорения. С фига ли ниже-то?

    Основной минус того, что я описал, что это не расчет, а так, проверка-описание "на глаз". В частности значения терминалки для каждого случая я не высчитывал, точные значения ускорения и его изменения не учтены.

    kOS обладает погрешностью, за счет того, что выдает моментальное значение условно на "шаг" позже замера. Однако оно куда точнее встроенных "показаний" - проверено опытным путем на посадочных скриптах - данные, взятые с аргументов kOS, дают куда-более точные результаты нежели взятые с "внешних" инструментов KSP.
    18 июня 2017 - 15:45 / #505
  6. Оффлайн

    Marschig

    Модераторы

    Сообщений: 436

    Синяя коробка показывает g в данной точке пространства, а желтая банка показывает отличие текущего ускорения от g. Т.е. что-то показывает на поверхности, в атмосфере и при включенных двигателях. В свободном падении показывает 0. Как-то так.

    "Never build a rocket with a fineness ratio greater than 10!" - Wernher von Braun

    18 июня 2017 - 16:00 / #506
  7. Оффлайн

    Sifno

    Хорошие люди

    Сообщений: 302

    Кстати желтая коробка правильно показывает силу реакции опоры. Это когда ракета покоится на стартовой площадке. 
    Короче к адекватности и даже к точности желтой коробки у меня претензий нет. В свои 2 знака точности после запятой она все верно показывает.

    А вот в kOs`е появляются аномалии. Которые превышают на несколько порядков погрешность от линейного интегрирования и задержку в один тик (если даже такой есть, точность не позволяет проверить это).

    Кому скучно, приглашаю в наш (сайтовый) дискорд.
    Сообщение отредактировал Sifno 18 июня 2017 - 16:07

    Основы космического полета
    Формула Циолковского
    Перелет между компланарными круговыми орбитами
    Трех-импульсный перелет между круговыми орбитами

    18 июня 2017 - 16:08 / #507
  8. Оффлайн

    Pand5461

    Хорошие люди

    Сообщений: 114

    А что AeroGUI показывает по поводу коэффициента сопротивления на площадь (Cd*S)? Может, оно и правда меняется в 3 раза в зависимости от высоты?
    Сайтовый дискорд - это где?

    Мои kOS скрипты: https://github.com/pand5461/kOS

    18 июня 2017 - 17:16 / #508
  9. Оффлайн

    Sifno

    Хорошие люди

    Сообщений: 302

    (Cd*S) - меняется примерно в эти несколько раз. Только обратно пропорционально. Ну вполне логично что меняется, больше интересно по какому принципу.

    Дискорд? а хз, прислали какой-то в личку авто рассылкой на сайте, сказали дискорд сайта.
    А чуть позже меня засуммонило во второй какой-то.

    StedeVane ник.
    Сообщение отредактировал Sifno 18 июня 2017 - 17:31

    Основы космического полета
    Формула Циолковского
    Перелет между компланарными круговыми орбитами
    Трех-импульсный перелет между круговыми орбитами

    18 июня 2017 - 17:29 / #509
  10. Оффлайн

    Pand5461

    Хорошие люди

    Сообщений: 114

    Это какая-то там зашитая магия. В принципе-то этот коэффициент и должен меняться в зависимости от числа Маха, но что конкретно они в модель заложили - загадка.

    Мои kOS скрипты: https://github.com/pand5461/kOS

    18 июня 2017 - 17:36 / #510
  11. Оффлайн

    Sifno

    Хорошие люди

    Сообщений: 302

    Ну не могли же они полную отсебятину вложить, эта отсебятина должна основываться на чем-то.
    Буду искать.

    В общем полез в исходники мода, вдруг случайно найду таинственную силу.


    ?
    public class VesselSensors : Structure
    {
    private Vessel vessel;

    ...

    private Vector GetSensorVectorValue (string sensorType)
    {
    foreach (var part in vessel.Parts)
    {
    if (part.State != PartStates.ACTIVE && part.State != PartStates.IDLE) continue;

    foreach (PartModule module in part.Modules)
    {
    if (module is ModuleEnviroSensor)
    {
    var moduleSensorType = module.Fields.GetValue("sensorType").ToString();
    if (moduleSensorType != sensorType) continue;
    switch (moduleSensorType)
    {
    case "ACC":
    return new Vector(vessel.acceleration);

    case "GRAV":
    return new Vector(FlightGlobals.getGeeForceAtPosition(part.transform.position));

    }
    }
    }
    }
    throw new KOSException("Cannot find sensor for " sensorType);
    }

    ...

    }
    переменная vessel класса Vessel. Но данного класса в проекте не оказалось. Что натолкнуло меня на мысль, что это класс официального API ксп.
    Впрочем так и оказалось. Мод ничего сам не считает, а передает нам напрямую инфу от Сквадов.
    Нужно поиграться с другими версиями KSP.

    Печаль беда, у форума не оказалось тега [code] :(

    А у вас вообще эта таинственная сила есть? Может это у меня одного такие проблемы.
    Сообщение отредактировал Sifno 18 июня 2017 - 18:07

    Основы космического полета
    Формула Циолковского
    Перелет между компланарными круговыми орбитами
    Трех-импульсный перелет между круговыми орбитами

    18 июня 2017 - 18:08 / #511
  12. Оффлайн

    Pand5461

    Хорошие люди

    Сообщений: 114

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

    Мои kOS скрипты: https://github.com/pand5461/kOS

    18 июня 2017 - 19:23 / #512
  13. Оффлайн

    KMS

    Хорошие люди

    Сообщений: 152

    Я у себя отмечал в связи с чем и отказался от снятия показаний с приборов.
    18 июня 2017 - 19:27 / #513
  14. Оффлайн

    Pand5461

    Хорошие люди

    Сообщений: 114

    Мда, какие-то глюки. Неясно, это в kOS или в игре. Похоже на переключение систем координат. Если координатные оси вращаются (а они вращаются, т.к. меняются координаты SOLARPRIMEVECTOR), то появляются центробежные и кориолисовы силы. Видимо, до 100 км вращение системы координат идёт с большой скоростью, выше - с маленькой.

    Можешь в тех же условиях проверить, есть ли разница в скорости изменения SOLARPRIMEVECTOR на разной высоте?

    ED: про acc там пишут, что в игре, похоже, скользящее среднее для него используется, вот оно и медленнее разгоняется.
    Сообщение отредактировал Pand5461 18 июня 2017 - 20:22

    Мои kOS скрипты: https://github.com/pand5461/kOS

    18 июня 2017 - 20:21 / #514
  15. Оффлайн

    Pand5461

    Хорошие люди

    Сообщений: 114

    На викии хорошо объяснено про вращение системы отсчёта, как мне кажется.

    Мои kOS скрипты: https://github.com/pand5461/kOS

    19 июня 2017 - 11:18 / #515
  16. Оффлайн

    Soul

    Модераторы

    Сообщений: 3

    Возник вопрос: как в kOS регулировать ширину раскрытия А.Э.Р.О.Т.О.Р.М.О.За? или (подозреваю, что из той-же оперы) - величину раскрытия элеронов.
    Спасибо.
    8 августа 2017 - 23:48 / #516
  17. Оффлайн

    Pand5461

    Хорошие люди

    Сообщений: 114

    Soul,
    делается через прямой доступ к модулям.
    У аэротормоза за степень раскрытия отвечает ModuleAeroSurface, у винглетов SyncModuleControlSurface, у элеронов может быть что-то ещё.
    Посмотреть это можно в файле .craft, найти нужно примерно такой блок (пример для аэротормоза):
    ?
        MODULE
        {
            name = ModuleAeroSurface
            isEnabled = True
            aeroAuthorityLimiter = 100
            mirrorDeploy = False
            usesMirrorDeploy = False
            ignorePitch = True
            ignoreYaw = True
            ignoreRoll = True
            deploy = False
            deployInvert = False
            partDeployInvert = False
            authorityLimiter = 100
            stagingEnabled = True
            EVENTS
            {
            }
            ACTIONS
            {
                ActionToggleBrakes
                {
                    actionGroup = Brakes
                }
                ActionToggle
                {
                    actionGroup = None
                    active = False
                }
                ActionExtend
                {
                    actionGroup = None
                }
                ActionRetract
                {
                    actionGroup = None
                }
            }
            UPGRADESAPPLIED
            {
            }
        }
    Тут видим, что есть поля aeroAuthorityLimiter и authorityLimiter. По-видимому, первое отвечает за отклонение в режиме тормоза, второе - в режиме управляющей поверхности.
    Число в этом поле изменяется стандартным образом через part:getmodule(modulename):setfield("field",value). В примере с аэротормозом:

    set airbrakes to ship:partsnamed["airbrake1"]. // теперь в airbrakes хранится список всех аэротормозов на корабле
    for abrake in airbrakes {
      abrake:getmodule["ModuleAeroSurface"]:setfield("aeroAuthorityLimiter", 30). // степень открытия тормоза установлена на 30 процентов
    }
    ?
    Чтобы не запоминать имя модуля, можно сделать поиск по имени поля:

    // находит все управляющие поверхности и устанавливает отклонение в 30%
    for p in ship:parts {
      for m in p:modules {
        if m:hasfield("authorityLimiter") {
          m:setfield("authorityLimiter", 30).
        }
      }
    }
    ?

    Мои kOS скрипты: https://github.com/pand5461/kOS

    9 августа 2017 - 00:12 / #517
  18. Оффлайн

    Soul

    Модераторы

    Сообщений: 3

    Pand5461 Спасибо ещё раз! :-)

    Ещё на редите прочел:
    Задача: необходимо описать функционирование аэротормозов в трёх режимах - 1) режим старта, поверхности втянуты, зафиксированы; 2) режим входа в атмосферу, поверхности активированы, регулируют тангаж и рысканье; 3) режим падения, поверхности зафиксированы в выдвинутом положении.

    [code]function setAirbrakeControlSurfaces {  parameter value is false. // default is off
    local ab is ship:partsnamed("airbrake1").
    for p in ab {
    local m is p:getmodule("moduleaerosurface").
    m:setfield("pitch", value).
    m:setfield("yaw", value).
    }
    }
    // Режим 1:
    brakes off.
    setAirbrakeControlSurfaces(false).
    // Режим 2:
    brakes off.
    setAirbrakeControlSurfaces(true).
    // Режим 3:
    brakes on.
    setAirbrakeControlSurfaces(false).
    [/code]
    Источник
    Сообщение отредактировал Soul 9 августа 2017 - 00:59
    9 августа 2017 - 01:15 / #518
  19. Оффлайн

    Soul

    Модераторы

    Сообщений: 3

    Стоит отметить, что локализованных версиях (проверялось на 1.3.0) элементы структуры управления тоже локализованы.
    Прикрепленная картинка
    Из-за этого при обращении к таким элементам возможны ошибки, т.к. юникодные символы в скрипте обгрызаются до первого байта, и локализованые имена полей необратимо искажаются.
    Сообщение отредактировал Soul 9 августа 2017 - 17:40
    9 августа 2017 - 17:35 / #519
  20. Оффлайн

    ufaboy

    Посетители

    Сообщений: 11

    нужна помощь
    в терминале КОС не могу вставить код. В самой игре вставить текст без проблем получается. Например переименовать деталь.
    Но в терминале нет реакции на комбинацию Ctrl C(копировать) Ctrl X(вырезать) Ctrl V (вставить)
    Как это лечится?
    11 августа 2017 - 09:09 / #520

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

---

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

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

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