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

  1. Оффлайн

    Freze

    Хорошие люди

    Сообщений: 79

    konstantinua00, airspeed считается относительно атмосферы (которая вращается вместе с планетой), ship:velocity:orbit не зависит от частоты вращения планеты - в этом их отличия. groundspeed и ship:velocity:surface похоже, что да. Я с орбитами мало связывался точно сказать не могу, попробуй проверить свои догадки на практике.

    pikabu

    22 февраля 2016 - 20:19 / #441
  2. Оффлайн

    konstantinua00

    Посетители

    Сообщений: 3257

    Freze писал:
    airspeed считается относительно атмосферы (которая вращается вместе с планетой)

    тогда какая разница между groundspeed и airspeed?

    Я владелец ковчега костей!
    Мои версии (на компьюторе, на данный момент):
    9; 13; 13.2; 13.3; 14.3; 14.4; 15; 15.2; 16; 17.1; 18; 18.2; 18.3(demo); 18.4; 19; 19.1; 20; 20.1; 20.2; 21; 21.1; 22; 23; 23.5; 24; 25; 90; 1; 04; 05
    forum.kerbalspaceprogram.com/threads/24858-Old-versions-of-KSP-(some-versions-still-wanted!) - почти все версии до 0.14

    кое-что затеваю :-p

    22 февраля 2016 - 20:49 / #442
  3. Оффлайн

    Freze

    Хорошие люди

    Сообщений: 79

    konstantinua00, airspeed - модуль вектора скорости относительно атмосферы, groundspeed - модуль проекции вектора скорости на поверхность планеты(горизонтальная составляющая), verticalsped - модуль проекции вектора скорости на прямую перпендикулярную поверхности планеты(вертикальная составляющая). вектор скорости по идее - ship:velocity:surface, надо бы это проверить. Орбитальная скорость - она и в Африке орбитальная.
    Сообщение отредактировал Freze 22 февраля 2016 - 21:06

    pikabu

    22 февраля 2016 - 20:53 / #443
  4. Оффлайн

    konstantinua00

    Посетители

    Сообщений: 3257

    интересно, а как добыть heading (азимут угол над горизонтом) прогрейда?

    угол над горизонтом из ground speed и vertical speed еще достать можно, но вот с азимутом проблемы...

    Я владелец ковчега костей!
    Мои версии (на компьюторе, на данный момент):
    9; 13; 13.2; 13.3; 14.3; 14.4; 15; 15.2; 16; 17.1; 18; 18.2; 18.3(demo); 18.4; 19; 19.1; 20; 20.1; 20.2; 21; 21.1; 22; 23; 23.5; 24; 25; 90; 1; 04; 05
    forum.kerbalspaceprogram.com/threads/24858-Old-versions-of-KSP-(some-versions-still-wanted!) - почти все версии до 0.14

    кое-что затеваю :-p

    22 февраля 2016 - 21:14 / #444
  5. Оффлайн

    Freze

    Хорошие люди

    Сообщений: 79

    konstantinua00, азимут чего - либо кроме направления взгляда ком. модуля, из-за кривости то ли kOS то ли ксп в целом противная задача. Тебе точно нужен именно АЗИМУТ ВЕКТОРА СКОРОСТИ В ГРАДУСАХ? steering, если что, можно привязывать к направлениям и векторам, с которыми гораздо удобнее работать.

    pikabu

    22 февраля 2016 - 21:22 / #445
  6. Оффлайн

    konstantinua00

    Посетители

    Сообщений: 3257

    Freze, просто хотел автопосадку устроить по азимуту антипрогрейда и углу на горизонтом (УНГ), высчитываемому по спецформуле

    а так придется кОСу быть штурманом, говорящим УНГ, а направляющим быть мне

    Я владелец ковчега костей!
    Мои версии (на компьюторе, на данный момент):
    9; 13; 13.2; 13.3; 14.3; 14.4; 15; 15.2; 16; 17.1; 18; 18.2; 18.3(demo); 18.4; 19; 19.1; 20; 20.1; 20.2; 21; 21.1; 22; 23; 23.5; 24; 25; 90; 1; 04; 05
    forum.kerbalspaceprogram.com/threads/24858-Old-versions-of-KSP-(some-versions-still-wanted!) - почти все версии до 0.14

    кое-что затеваю :-p

    22 февраля 2016 - 22:28 / #446
  7. Оффлайн

    EmigrantD

    Посетители

    Сообщений: 2

    Очень бы хотелось КИРИЛИЦУ.

    Видеть:

    3
    2
    1
    "Поехали"

    А не:

    "Start"

    Может как то можно реализовать?
    Сообщение отредактировал EmigrantD 1 апреля 2016 - 08:54
    1 апреля 2016 - 08:53 / #447
  8. Оффлайн

    nikollor

    Хорошие люди

    Сообщений: 1279

    EmigrantD, в 1.1 будет возможно. Нужно автора мода попинать.
    1 апреля 2016 - 10:42 / #448
  9. Оффлайн

    EmigrantD

    Посетители

    Сообщений: 2

    nikollor, Подскажите пожалуйста как вводить значение переменной, в процессе исполнения программы. Например запускаешь программу, она просит ввести три числа в терминал, вводишь значение высоты желаемого перигея, апогея, и угла орбиты, и он полетел.

    Никак не могу найти
    Сообщение отредактировал EmigrantD 2 апреля 2016 - 20:51
    1 апреля 2016 - 12:58 / #449
  10. Оффлайн

    sss253

    Посетители

    Сообщений: 2

    EmigrantD,
    В kOS нет подобных инструментов. Можно только через считывание некоторых кнопок (далеко не всех) организовать меню.
    Это проще показать. Вот кусочек кода с подобным меню:


    CLEARSCREEN.

    LIST BODIES IN planetList.//список планет
    SET bl TO 0.//порядковый номер планеты в списке
    SET bln TO 0.//порядковый номер планеты для определения параметра
    SET planet TO 0.//запись параметра планеты
    SET planetn TO 0.//запись имени планеты

    //************печать списка планет***************************
    SET cur TO 2.//-----------------------позиция курсора
    SET cicl TO 0.//-----------------------вкл. цикл

    SET q TO planetList:length.//количество файлов
    SET nm TO 0.// счетчик файлов для печати
    SET nm1 TO q.// предел ппечати
    SET np TO 2.// номер строки печати
    SET n TO 0.// номер файла для печатати

    IF q > 0 {// если список не пуст
    UNTIL nm = nm1 { // печать левой панели
    PRINT " " AT(2,np).
    PRINT planetList[n] AT(2,np).// печать имени файла
    SET n TO n 1.// следующий номер файла
    SET np TO np 2.// следующий номер строки печати
    SET nm TO nm 1.// счетчик файлов
    WAIT 0.001.
    }
    }
    //************управление курсором************************
    PRINT "*" AT(1,cur).//позиция курсора
    ON AG4 {//курсор вниз
    PRINT " " AT(1,cur).
    SET cur TO cur 2.
    SET bl TO bl 1.
    IF cur > q * 2 1 {
    SET cur TO cur - 2.
    SET bl TO bl - 1.
    }
    PRINT "*" AT(1,cur).
    PRESERVE.
    }
    ON AG5 {//курсор вверх
    PRINT " " AT(1,cur).
    SET cur TO cur - 2.
    SET bl TO bl - 1.
    IF cur < 2 {
    SET cur TO cur 2.
    SET bl TO bl 1.
    }
    PRINT "*" AT(1,cur).
    PRESERVE.
    }
    ON AG6 {//ввод / прерывание цикла
    SET cicl TO 50.
    PRESERVE.
    }
    //************цикл выбора планеты**********************
    UNTIL cicl > 30 {
    SET planet TO 0.
    SET planetn TO "Planet: ".
    FOR BOD IN planetList {
    SET bln TO bln 1.
    IF bln = bl 1 {
    SET planet TO planet BOD:RADIUS.
    SET planetn TO planetn BOD:NAME.
    }
    }
    PRINT planetn " " at(12,0).
    PRINT planet " " at(12,1).
    SET bln TO 0.
    WAIT 0.001.
    }

    Подобным образом можно ступенчато менять параметр. Неудобно, нудно, но....
    Можно использовать и остальные кнопки, но несколько иначе.
    Сообщение отредактировал sss253 21 апреля 2016 - 23:59
    21 апреля 2016 - 23:42 / #450
  11. Оффлайн

    TomAnderson

    Посетители

    Сообщений: 75

    Хотел написать скрипт для автоматического сбора науки с орбиты.
    Но не нашёл команды которая может определить биом. :( Есть такой?
    28 апреля 2016 - 18:24 / #451
  12. Оффлайн

    Finn

    Хорошие люди

    Сообщений: 1291

    sss253, ошибаешься. Можно сразу задавать переменные перед запуском программы. При том сколько хочешь. По-моему где-то в этой теме я писал свой грубый алгоритм по автовзлету на любой ракете.запускалась она по команде run programmname(120,90,2). Где первое число апогей второе перегей и третье уже забыл что. Поищи. Запускать программу с задаными перед стартом процедуры переменными вполне возможно

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

    28 апреля 2016 - 23:28 / #452
  13. Оффлайн

    sss253

    Посетители

    Сообщений: 2

    Finn, Совершенно согласен. Но, вопрос стоял о вводе данных в процессе выполнения скрипта (как я понял).
    29 апреля 2016 - 00:30 / #453
  14. Оффлайн

    Tractorist

    Посетители

    Сообщений: 1

    Здравствуйте. А не подскажите, как написать скрипт, чтобы он через определенные интервалы времени (например 0,5 с) писал в файл значение скорости и высоты корабля?
    16 мая 2016 - 19:09 / #454
  15. Оффлайн

    Lynx

    Модераторы

    Сообщений: 2844

    Jenyaza01,
    а откуда ты берешь вектор "вверх?"
    24 августа 2016 - 19:50 / #455
  16. Оффлайн

    Jenyaza01

    Хорошие люди

    Сообщений: 363

    ну, на данный момент лучшие результаты SHIP:FACING:ROLL-270, это даёт 0* пока я смотрю хоть немного на восток, но если посмотреть на западную сторону, этот 0 оказывается внизу, и... в общем, СВВП сразу падает.
    SHIP:UP (и не только, SHIP:FACING:YAW) даёт направление, только куда-то не туда, под 30* к горизонту, и тоже "плавает" по неизвесному мне правилу. Даже HEADING тоже под 30* указывает, стоя на полосе он равен 214.
    SHIP:UP:ROLL даёт ноль. И ещё что-то тоже ноль.
    Крафт простейший, кабина - бак - по бокам 2 движка - хвост. Никаких поворотов. Шасси нет, на полосе лежит ровно.

    вики kOS уже давно скурил, понятно там практически всё, кроме этой самой системы направлений, поворотов и векторов. Гайды Finn-a видел. Примеры смотрел. Туго.
    Сообщение отредактировал Jenyaza01 24 августа 2016 - 20:28

    [ SmallTweaks ] [ WaterTanks ] [ 3D Primitives ] [ Kerbin 2.5x (тесты) ] [ KSP Rebalance (в разработке) ]

    24 августа 2016 - 20:22 / #456
  17. Оффлайн

    Freze

    Хорошие люди

    Сообщений: 79

    Jenyaza01,
    тебе именно вектор нужен или все-таки углы?

    UPD. Короче вот:
    Можно сделать операцию VECTOREXCLUDE.
    Это спроецирует первый вектор на плоскость перпендикулярную второму.
    Например set v1 to vxcl(craft_up, kerbin_up).

    Потом можно с помощью vang() найти углы между v1` и k_forvard/k_left. Или спроецировать на эти оси v1 указанным выше способом и решать треугольник.

    Вангую следующий вопрос: как отличить левый угол от правого после выполнения vang().

    Прикрепленная картинка
    &#65279;
    Сообщение отредактировал Freze 24 августа 2016 - 21:55

    pikabu

    24 августа 2016 - 21:24 / #457
  18. Оффлайн

    Jenyaza01

    Хорошие люди

    Сообщений: 363

    То есть после   set v1 to vxcl(craft_up, kerbin_up)  v1 будет направлен в ту сторону, в какую наклонён крафт, и его длина - синус угла отклонения?

    Осталось узнать craft_up и kerbin_up
    SHIP:FACING:FOREVECTOR  - это "вперёд" у крафта, верно? Может, тогда 
    SHIP:FACING:FOREVECTOR  R(90,0,0) - это "вверх" у крафта?

    тебе именно вектор нужен или все-таки углы?
    я влип угол между векторами

    [ SmallTweaks ] [ WaterTanks ] [ 3D Primitives ] [ Kerbin 2.5x (тесты) ] [ KSP Rebalance (в разработке) ]

    24 августа 2016 - 22:40 / #458
  19. Оффлайн

    Vanderkin882

    Посетители

    Сообщений: 14

    Эээээ.... Ооооо.... Моооозг кипит , 

    О привет

    25 августа 2016 - 00:16 / #459
  20. Оффлайн

    Freze

    Хорошие люди

    Сообщений: 79

    Jenyaza01 писал:

    SHIP:FACING:FOREVECTOR  - это "вперёд" у крафта, верно? Может, тогда 
    SHIP:FACING:FOREVECTOR  R(90,0,0) - это "вверх" у крафта?
    Ну да, я в свое время так и делал. Строил вектора "вверх" и "влево" от SHIP:FACING:FOREVECTOR.

    Jenyaza01 писал:

    То есть после   set v1 to vxcl(craft_up, kerbin_up)  v1 будет направлен в ту сторону, в какую наклонён крафт, и его длина - синус угла отклонения?
    Не совсем. Это на картинке так нарисовано, поскольку у тебя по рысканью отклонения нет, там все довольно сложно.
    А что ты такое делаешь, что тебе в векторной форме решать надо? Не уж то автопилот для приземления?

    pikabu

    25 августа 2016 - 00:45 / #460

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

gecko

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

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

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