Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » Универсальный ракетный автопилот | страница 3
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 3 из 4
На страницу: Пред.  1, 2, 3, 4  След. | Все страницы
Поиск в этой теме:
Канал Orbiter: «Универсальный ракетный автопилот»
Bloodest
 155 EGP


Рейтинг канала: 3(40)
Репутация: 18
Сообщения: 944
Откуда: Питерские мы
Зарегистрирован: 07.10.2004
Внимание! При тестировании обнаружены, временами, мертвые зависы для ДГ и Шаттла А. Так что рекомендую, для не двинутых юзеров, пускать Launcher MFD в оконном режиме - штоб снимать висюк.

В автопилоте надо иметь ввиду следующее:
1.Автопилот тупо пытается совместить метки векторов положения и скорости с центром кругов - то есть делает то что делал бы пилот ручками. Разница "лишь" Улыбка в том что автопилот знает какими моментами для вращения он располагает.
2.Дык центр кругов это не ось Z РН! Это два последовательных поворота от оси Z кабины - сперва на минус угол отклонения оси кабины (очень и очень редко используется в аддонах - это нововеддение 2005 ого)затем на угол отклонения оси вектора тяги от оси Z. В результате центр - это то направление в координатах кабины куда должна смотреть кабина и при этом вектор тяги совпадал с требуемый положением в мировом пространстве.
3. Launcher определяет только текущее положение вектора тяги.
4. Автопилот не учитывает ни моменты Эллера, ни Рунге-Куттовскую пошаговость симулятора. Моменты Эллера - это скажем, если РН вращается вокруг оси X c постоянной скоростью (тангаж) и вокруг оси Y (рысканье) дается угловое ускорение - по Эллеру возникает угловая скорость вокруг оси Z - крен. Пошаговость от метода Рунге-Кутта состоит в том что с точки зрения положения РН определяется не только начальным и конечным положением на шаге но и 3мя промежуточными положениями. И то направление, которое являетя, скажем, рысканьем в начале шага за счет изменения крена в конце шага имеет уже составляющую по тангажу. Дык все в этой составляющей за счет Эллера и пошаговости Рунге Кутта она будет иной в симуляторе и автопилоте.

Дык, Шаттл - ось кабины, да, совпадает с осью Z РН, но вот вектор тяги нет! В то время как все управление по углам симметрично осям кабины. Результат - если обычно крен не приводит ни к каким изменениям по абсолютного расстоянию вектора положения от центра кругов то в шатле - даже если совместить вектор пложения с центром и дать крен (вектор должен остаться в центре)- в шатле он отклонится. Дык если при старте нужно работать по рысканью и тангажу по Эллеру возникнет и вращение и по крену - это и приведет к перуэтам Шаттла.
Есть хелпер - п.3 - кроманда ROL - разворот в азимут пуска на земле.

Углы эллера видны если закрутить по крену РН с острого осевой тягой в безвоздушном пространстве. Нос корабля будет весети себя как волчок - описывать круги вокруг центра. За счет пошаговости часть танагажа и рысканья (и друг в друга)будут попадать в крен и поэтому при включенном автопилоте нужно прикладывать все более значительные усилия для увелечения скорости вращения по крену и шум рулевых двигателей все возрастает - идет празитная коррекция тангажа и рысканья.
    Добавлено: 08:11 03-04-2006   
Bloodest
 155 EGP


Рейтинг канала: 3(40)
Репутация: 18
Сообщения: 944
Откуда: Питерские мы
Зарегистрирован: 07.10.2004
На счет завала при старте. Именно быстро. Потому как траектория оптимизируется для безвоздушного пространства! Она примерно совпадает с реальной если на земле попавравка по углу положения не прывашиет 20-30 градусов.
Разберусь с подвисами и займусь атмосферой.
По теории
1. Существует два участка траектории атмосферный и безвоздушный. Лаунчер считает только безвоздушный.
2. На воздушном - 5ть подучастков
а) Вертикальный полет - до М=0.1-0.15
б) Завал на тангаж с М=0.1 с максимальными углами атаки при М=0.37 и с выходом на нулевые углы атаки М=0.8
в)Полет с нулевыми углами атаки - здесь танагаж образуется только за счет силы тяжести.
г)Подруливание под расчетный тангаж.
д)Разворот с атмосферного на безатмосферный участок.
Все это дело определяется нагрузками на РН от набегающего потака и перегрузками от вращения.
Пока надыбал две цифири.
Максимальный осевой скоростной поток 30КПа (для Энергии)
Максимальный угол атаки определяется произведением угол атаки (в градусах) на скоростной поток - не должен превышаить 20кПа*градус (для Тополя).
Максимальную скорость вращения надо еще поискать...
Дымаю так - пилот будет меняя угол максимального завала (ИПВ будет просчитывать траекторию с учетом ограничений и выдавать суммарное время работы двигателей) будет ручками оптимизировать атмосферную траекторию.
    Добавлено: 08:35 03-04-2006   
Bloodest
 155 EGP


Рейтинг канала: 3(40)
Репутация: 18
Сообщения: 944
Откуда: Питерские мы
Зарегистрирован: 07.10.2004
Скачки ТМА следствие поворота двигатилей - издержки всеядности ИПВ. Дык попробую что нибудь придумать.
    Добавлено: 08:48 03-04-2006   
astronavt
 86 EGP


Рейтинг канала: 1(3)
Репутация: 35
Сообщения: 403
Откуда: Новочеркасск
Зарегистрирован: 11.01.2006
Цитата:
Скачки ТМА следствие поворота двигатилей - издержки всеядности ИПВ. Дык попробую что нибудь придумать


По поводу колебаний могу дать кое-какие рекомендации. Хотя думаю для вас я тут ничего нового

не расскажу Улыбка.

Вращение РН по тангажу можно описать (очень грубо) такой Моделью:

dwx/dt = Mx/Ix (1)

dpsi/dt = wx (2)

где psi - собственно тангаж, wx - угловая скорость по тангажу, Mx - управляющий момент, Ix -

момент инерции относительно соответствующей оси.

Естественно она не учитывает взаимного влияния движений по всем трем углам. Но если

конструкция ракеты симетрична относительно продольной оси (а так в основном и есть), и нет

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

моделью объекта управления в дальнейших рассуждениях.

Как я понимаю по предыдущим постингам, автопилот просто отрабатывает задание, расчитываемое

тулзом и отображаемое красной крестовиной. Вообще-то по логике построения систем следящей

автоматики так оно и делается. Если переходить к терминам, то Ваш тулз расчитывает программу

движения, а автопилот отрабатывает эту программу и реализует стабилизирующее управление.

Если бы автопилот делал я, то поступил бы так:

1) Завел отрицательную обратную связь (ООС) по скорости, и управляющий момент тогда

формируется на основе dwx = wxz - wx, где dwx - рассогласование по скорости, wxz - заданное

значение угловой скорости. Анализ ур-я (1) на основе метода передаточных функций дает

следующий закон формирования управляющего момента:

Mx = Kpc*dwx, где Kpc = Ix/Kocc/Tkc.

В свою очередь: Kocc - коэффициент обратной связи по скорости; Tkc - постоянная времени

контура скорости.

Kocc = 1/Kkc, где Kkc - коэффициент усиления контура скорости. Его расчитывают исходя из

аппаратной реализации системы управления (влияет разрядность бортовой ЦВМ, например ), но в

"Орбитере" можно, думаю, взять Kkc = 1. Тогда

Mx = Ix*dwx/Tkc.

Tkc характеризует выстродействие контура скорости. Ее можно расчитать из логических

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

управления равно tc = 5*Tkc. Отсюда надо и плясать, но плясать будем, когда замкнем ООС по

положению Улыбка.
Такой закон обеспечит нам апериодический, т.е. без колебаний переходной процес при

регулировании скорости. ООС по скорости нужна, чтобы обеспечить устойчивость автопилота.

2) Далее, замыкаем ООС по положению. Причем делаем это так, что

wxz = Kpn*dpsi, т.е. задание для контура скорости пропорционально ошибке по углу тангажа.

Возвращаясь к передаточным функциям, получаем, что


Kpn = 1/Tkn/Kkc/Kocn,

где Tkn - постоянная времени контура положения, Kocn = 1/Kkn - коэффициент ООС по положению.

Если взять Kkn = 1, а Kkc = 1 на предыдущем шаге, то

Kpn = 1/Tkn.


И вот тут внимание!!! Колебания в контуре положения будут отсутствовать, если


Tkn >= 4*Tkc (следует из теории ОДУ 2-го порядка)


Т.е. нам нужно задаться величиной Tkn, а Tkc получиться исходя из преведенного условия.

Tkn = tn/5, где tn - время переходного процесса в контуре положения.

3) Далее нужно ввести ограничения на предельную угловую скорость wx (ограничиваем задание

для контура скорости) и предельный управляющий момент Mx. Технически они всегда ограничены.

Програмная реализация такого ограничения не составляет труда, поэтому я не буду о ней

говорить.

Все бы ничего, да величина Ix меняется в процессе полета, и весьма существенно. Тут можно

применить т.н. метода "замороженных" коэффициентов, т.е. в процессе управления перещитывать

вышеописанные коэффициенты в зависимости от Ix. В "Орбитере" это работает, я проверял Хы....

т.е., алгоритм управления такой

1) расчитывается задание по тангажу psiz.
2) считывается текущее значение тангажа psi и форируется задание для контура скорости wxz = Kpn*(psiz - Kocn*psi). Если его модуль выходит за пределы максиально допустимой скорости поворота, "обрезаем" wxz в пределы этого коридора
3) считываем текущее значение угловой скорости wx. Формируем управление
Mx = Kpc*(wxz - Kocc*wx). Если но по модулю больше максимально возможного, обрезаем его.

Момент Mx расчитывается по разному, в зависимости от того как управляем - отклонением вектора тяги или с посмощью RCS.
_________________
Я бы изменил этот мир, но Бог не дает мне исходников...
    Добавлено: 15:13 03-04-2006   
Bloodest
 155 EGP


Рейтинг канала: 3(40)
Репутация: 18
Сообщения: 944
Откуда: Питерские мы
Зарегистрирован: 07.10.2004
Спасибо за теорию. Собствено за коэффициенты 5 и 4. Собственно они заложены у меня на 30 Гы-гы .
Только это мы проходили Mx = Kpc*(wxz - Kocc*wx).
При постоянных Kpc и Kocc происходит залипание на некоторых значениях wxz и wx.
Дык
X0+V0*t+a*t^2/2=Xk=0
V0+a*t=Vk
Выделяем t и a
t=2X0/(V0+Vk) (1)
a=(V0^2-Vk^2)/2/X0 (2)
Лианеризуем (2) относительно X=X0 a=U*Koc=Ud
U- максимальное угловое ускорение, Кос - коэф ослабления - функция от располагаемого момента инерции и шага сима. Для ДГ он равен 1. Что при скорости сима 0.05 (20 fps)дает длительность переходного процесса 20 шагов.
Результат элегантен и ошеломляющ!
UPR=2*V0/sqrt(2*Ud*X0+Vk^2)-1;

Несколько портитя конструкцию требование к обеззначиванию
(2*Ud*X0+Vk^2) и 2*V0/sqrt(2*Ud*X0+Vk^2)
и восстановлению знака UPR

Форма изменения управления
|UPR
|1++++
|.+...++++
|.+.......++++...............ti.............t
--+-----------++++-----------+-------------->
|.0...............++++.......+
|.....................++++...+
|-1.......................++++

Фактически управление удет только за счет ti - длительности импульса. За счет квантования времени достижима только некоторая точность - Для указанных условий ДГ это примерно 0.001 градуса.

А на счет ТМА дык ИПВ не знает куда направлен вектор тяги он его определяет перечисляя все двигатели и множа их напарвления на их действующую тягу. Это дает возможность полета на ШаттлеА, ДГ с включенными ховерами или только на ховерах или вовсе на аксиалах ШаттлаА и причем аксиалы можно вращать в течении полета. Также определяется и несоосность тяги у Атлантиса.
А вот у тех кто рулит по тангажу поворачивая двигатель появляются скачки именно по причине такой всеядности. Как ни странно Гы-гы эти скачки можно устранить причем очень просто - ускорив время Гы-гы...
    Добавлено: 21:29 03-04-2006   
Tiger
 65 EGP


Репутация: 10
Сообщения: 140
Откуда: Россия, Барнаул
Зарегистрирован: 13.12.2005
А вот задачка, с которой LauncherMFD как таковой справляется, но автопилот зубы обламывает. Качаем аддоны:

http://www.orbithangar.com/addons/simnasa_mer.zip

http://www.orbithangar.com/addons/DeltaII_with_MER.zip

http://www.orbithangar.com/addons/CVE_DeltaII_0.0.4.zip

Копируем в конфиг пускалки следующий файл (cve_gpds_delta2_mer):

Код:
cve_gpds\cve_gpds_delta2\cve_gpds_delta2
Stage;StageElTime;StageTrust;StageFF;StageSM
6
f13;61.311;4011586.0;1456.9;228827.0
f17;63.674;2532793.0;906.3;135475.1
s19;137.395;1054000.0;355.8;68658.5
e20;2.558;0.0;0.0;15433.0
s23;433.969;43641.0;13.8;9333.0
s29;87.268;66000.0;23.0;2380.0
1
200
200
28.9


Запускаем сценарий Delta II and MER\Cape Canaveral\launch Delta ii with Spirit.scn

Грузим принудительно вышеупомянутый конфиг (имя не опознается по очевидным причинам). Если лететь вручную, то очень симпатишно выходим на заданную орбиту (правда, как она прет с тангажом 40 на 20 км в облаке плазмы... Совсем запутался... ну я уже все понял про атмосферный участок).

Автопилот банально не включается, горит красным. Что объяснимо, т.к. на первой ЖРД-ступени вообще нет обычных рулевых двигателей, только то, что я, боясь наврать, назову как в доке: vernier engines. На второй ЖРД-ступени весь положенный комплект движков, вроде бы, есть, но автопилот не работает все равно (моргает то светло- то темно-зеленым). Впрочем, сейчас я уже всей цветомузыки, продемонстрированной ИПВ, уже и не припомню.
_________________
Siberian Tiger
    Добавлено: 05:10 05-04-2006   
Bloodest
 155 EGP


Рейтинг канала: 3(40)
Репутация: 18
Сообщения: 944
Откуда: Питерские мы
Зарегистрирован: 07.10.2004
Дык изучение исходников показало что руление на 1 и 2 ступени идет через поворот движков. Рулевые двигатели отсутствуют.
Движки руления есть на 3 ей ступени:

if ( launched )
{
MET=simt - launcht + PrevMET;

// Get manual controls regardless of a/p and stage
tempP = GetManualControlLevel(THGROUP_ATT_PITCHDOWN, MANCTRL_ANYDEVICE, MANCTRL_ANYMODE) -
GetManualControlLevel(THGROUP_ATT_PITCHUP, MANCTRL_ANYDEVICE, MANCTRL_ANYMODE);

tempY = GetManualControlLevel(THGROUP_ATT_YAWLEFT, MANCTRL_ANYDEVICE, MANCTRL_ANYMODE) -
GetManualControlLevel(THGROUP_ATT_YAWRIGHT, MANCTRL_ANYDEVICE, MANCTRL_ANYMODE);

tempR = GetManualControlLevel(THGROUP_ATT_BANKLEFT, MANCTRL_ANYDEVICE, MANCTRL_ANYMODE) -
GetManualControlLevel(THGROUP_ATT_BANKRIGHT, MANCTRL_ANYDEVICE, MANCTRL_ANYMODE);

switch (stage)
{
case 1: {
SetThrusterGroupLevel( THGROUP_MAIN, 0.95 );
SetThrusterGroupLevel( THGROUP_ATT_FORWARD, 0.025 );
SetThrusterGroupLevel( THGROUP_HOVER, 1 );

SetThrusterDir(Stg1[0], _V(0.001*tempY*boosters, 0.001*tempP*boosters, 1));
SetThrusterDir(Vernier[0], _V(0, 1*tempR, 1));
SetThrusterDir(Vernier[1], _V(0,-1*tempR, 1));
} break;
case 2: {
SetThrusterDir(Stg2[0],_V(0.05*tempY,0.05*tempP,1));
} break;
case 3: {
} break;
}
}
Это проверить очень просто - стандартный KillRot не работает.
Но собственно их эффективность очень низкая - в ИПВ пока еще есть строчка с параметром U - максимальное развиваемое ускорение по танагажу в градус/с/с, его еще надо помножить на параметр маштабирования X (я его правил и он у меня счас 1)
Дык у данного аддона U=6,6*10-3 a ДГ,скажем,на старте, U=0,1
Характерное время устранения ошибки ~sqrt(2*err/U)
Тогда для 1ого градуса ошибки будет =sqrt(2/*6.6e-3)=17 секунд у ДГ 4,5 секунды. Плюс к этому надо следить не включен ли killrot он здорово все замедляет.

Гыг, могу добавить опцию HackATT, рулящюу просто через пары AddForse, которые будут создавать нужные моменты.
    Добавлено: 09:49 05-04-2006   
Bloodest
 155 EGP


Рейтинг канала: 3(40)
Репутация: 18
Сообщения: 944
Откуда: Питерские мы
Зарегистрирован: 07.10.2004
Дык вот

ftp://koavia.com/n1/LauncherMFD_A5P.rar

Тестовый патч А5Р

Изменения

1. В экране "инициализация" добавлены команды-триггеры
SED (на экране "работа" отображается транспорантом E>Z) - подавление определения
напаравления вектора тяги -Supress Engine Direсtion (Для повортников как у ТМА)
HAT (на экране "работа" отображается транспорантом HAT) - хак рулевых двигателей -
в автопилоте вместо штатных или их отсутствия используются внешние хакерские силы.

2. В экране "работа" добавлена команда-триггер ARD
Это опция автопилота - вводит управление полетом в атмосфере
Состоит из четырех стадий.

-Вертикальный полет до M=0.1 .

-Невилирование рысканья и Завал на угол тангажа по закону
[угол атаки]=172.5*A*(0.1-M)^3*(0.8-M)^2
где A- максимальный угол атаки на этом участке, М- текущее число Маха

-От М>0.8 до скоростного напора P=2.0КПа подет ведется на нулевых углах атаки и рысканья.

-На скоростных напорах P<2.0КПа производится постепенный разворот в расчетное положение с выполнением ограничения
[угол атаки или рысканья]<P/20КПа*RAD.
То есть сразу можно исправить только 10 градусов.

Угол А вычисляется автоматически исходя из параметров РН
и пока работает не везде.

PS Зыбыл главное, ARD - завал производится только по танагжу так что РН нужно разварачивать ROL-ом.
    Добавлено: 12:03 05-04-2006   
Tiger
 65 EGP


Репутация: 10
Сообщения: 140
Откуда: Россия, Барнаул
Зарегистрирован: 13.12.2005
Пробовал атмосферную фичу - при выводе "Союза" заваливается на азимут, противоположный азимуту стрельбы, а за 60-ю км пытается вырулить назад! Офигеть! Ж-жжж-жуть!

Старт "Дельты-2" с автопилотом (с HAT) - вообще спасайся, кто может. Она сразу валится на бок и начинает ездить кругами. Ой, не могу!..
_________________
Siberian Tiger
    Добавлено: 15:31 05-04-2006   
Bloodest
 155 EGP


Рейтинг канала: 3(40)
Репутация: 18
Сообщения: 944
Откуда: Питерские мы
Зарегистрирован: 07.10.2004
А вот так

ftp://koavia.com/n1/LauncherMFD_A6P.rar

Тестовый патч А6Р

Изменения

1.Исправлена ошибка в SED - удвоенный момент - уполовинен - приводил
к забросам по углу.

2.Исправлена ошибка в Автопилоте в режиме ARD - до М=0.1 и на земле
осуществлялась совместная работа гироплатформы и рулевых двигателей
- теперь до М=0.1 она отвязана от двигателей - приводила к попыткам
руления на земле, а при полете до М=0.1 к неадекватным действиям.

3.Подправлен алгоритм вычисления угла завала.

4.Изменен финал.
При остаточной скорости в 100 м/с отключается слежение за требуемой
скоростью изменения положения, само положение начинает контролироватся
с точностью в 10 раз выше (0.01 градус против 0.1)
При остаточной скорости в 10 м/с отключается и контроль положения.
Автопилот устраняет все угловые скорости.
    Добавлено: 18:58 05-04-2006   
Tiger
 65 EGP


Репутация: 10
Сообщения: 140
Откуда: Россия, Барнаул
Зарегистрирован: 13.12.2005
Bloodest :
А вот так


А так замечательно, "Союз" летит в правильную сторону. У "Дельты", правда, автопилот, вроде бы, не врубается, но я еще толком не пробовал ее гонять.

На чем бы еще таком попробовать? Вот набор РН "Ангара" есть, на мультистейже написанный, жалко, без реальных ПН...

Кстати, вопрос такой: на участке работы третьей ступени ТМА летит уже практически на одной и той же высоте, с положительным тангажом для компенсации гравитационных потерь. Это реально отвечает условию оптимальности? Мне интуитивно казалось, что самое оптимальное - дуть в прогрейд...
_________________
Siberian Tiger
    Добавлено: 07:42 06-04-2006   
Tiger
 65 EGP


Репутация: 10
Сообщения: 140
Откуда: Россия, Барнаул
Зарегистрирован: 13.12.2005
"Ангара" вылетает при загрузке. Начал пробовать "Ариану-5", вариант для вывода ATV (http://prdownloads.sourceforge.net/projectganymede/CVEL-Ariane5_2b9.zip?download). По крайней мере, летает нормально, не глючит. Но при попытке обучения на всем времени работы первой ступени и на половине второй постоянно генерируются новые "ступени" в файле обучения. Число их доходит до 11 тысяч, потом внезапно прекращается. То ли эффект от контроля вектора тяги (дрожит?), то ли еще что. В результате вычислить время работы 1-й и 2-й ступени по записям в файле корректно невозможно, хотя вся инфа вроде бы и есть.

Bloodest, ты не обижайся, что я тебе подкидываю всякие глючные аддоны - просто я из тех соображений, что "тяжело в учении - легко в бою", т.е. после релиза твоего ИПВ.
_________________
Siberian Tiger
    Добавлено: 15:52 06-04-2006   
Bloodest
 155 EGP


Рейтинг канала: 3(40)
Репутация: 18
Сообщения: 944
Откуда: Питерские мы
Зарегистрирован: 07.10.2004
На счет оптимальности - дык оптимальность определяется не высотой а законом изменения тангажа - законом управления. А вычислитель прилагает это закон на физику движения так чтобы выполнить целевые условия. Алгоритм вовсе не понимает что он компенсирует гравитационные потери. Дык если изменить целевые условия - конечную скорость и высоту то и изменится поведение.

Новые ступени в обучении генерятся если только изменяется тяга или конечная (без топлива маса). Пока принцип такой - надо перегнать файл обучения в exel и построить графики тяги и пустой массы в функции от времени и сапроксимировать их прямыми.
Соответственно в файл данных вносятся только данные начала и конца отрезков - время - длительность отрезка. И добавить в строки с переменной тягой дополнительный параметр 1 - признак линейного изменения параметров.Смотри пример

EnergyC
T;dT;F;dM;M0;Flag
14
СOMPLEX;0.00001;1.0;1.0;12370570.8;0
0;30;39471440;10938.91333;2351607;0
30;4.7;39471440;10938.91333;2023439.6;1 << 1
34.7;4.3;37118240;10401.41333;1973544.8;0 <<2
39;38;27630007.6;7657.249333;1929169.5;0
77;5;27630007.6;7657.249333;1645700;1 <<Рост
82;29;39471440;10938.91333;1602999.7;0
111;36;39471440;10938.91333;1282907.1;1 <<Падение
147;2;28814151.2;7985.406733;944421.5;1 << Еще сильнее
149;9;23657720;6365.306667;930259.9;0
158;199.7;7843999.7;1791.7;623267.8;0
357.7;47.3;7844000;1791.7;266537.8;1 << Спад
405;3.6;5706115.4;1303.4;193887.7;1 << Еще сильнее
408.6;12.2;3922000;895.8;189852.8;0
0

Точка (1) Начало сброса тяги (30 секунда полета) с 39471440 Н до 37118240 Н - длительность 4.7 секунд. Следующая строчка (2)служит данными конца участка для первой (с флагом 1). Соответственно вторая тоже может иметь флаг 1 - тогда третья будет содержать параметры конца этого второго участка. В данном случае флаг 0 и с 34.7 секунды РН летит 4,3 секунды с постоянной (пониженной тягой).

Пока ничего более путного я не придумал.

Если пустая масса не меняется то момент разделения ступеней можно обнаружить по префиксу номера участка "e" - empty, тогда как изменение тяго маркируется "f"- force.empty превалирует над
force.

Дык на счет подкидывания новья это правильное дело.
    Добавлено: 17:01 06-04-2006   
Tiger
 65 EGP


Репутация: 10
Сообщения: 140
Откуда: Россия, Барнаул
Зарегистрирован: 13.12.2005
Bloodest :
Новые ступени в обучении генерятся если только изменяется тяга или конечная (без топлива маса). Пока принцип такой - надо перегнать файл обучения в exel и построить графики тяги и пустой массы в функции от времени и сапроксимировать их прямыми.


Ага, перегнал. Вот график тяги в зависимости от аккумулированного времени. Номера по х соотвествуют номерам получившихся в обучалке ступеней (но масшатаб по х линейный для времени).



И что мы здесь видим, дорогие друзья? Помимо тривиального розжига РДТТ вначале имеется хитрая функция тяги РДТТ и ЖРД от атмосферного давления, в чем легко убедиться, полистав исходник:

Код:
        double maxthrust = ( SRBTHRUST_SL - SRBTHRUST ) * GetAtmPressure() / 1e5 + SRBTHRUST ;




Код:
   gammav      =   1.19;      //ratio of specific heats for LOX/LOH
   cpresv      =   11600000;   //Chamber pressure
   epresv      =   38200;      //Exhaust pressure (not verified)
   rconst      =   8.314;      //Gas constant
   ctempv      =   3100;      //Chamber temperature
   atmweightv   =   0.0133;      //Weight of propellant
   tareav      =   0.0593;      //Throat area
   eareav      =   3.4693;      //Exhaust area
   //next line calculates mass flow for the vulcain-2
   massflowv   =   sqrt(gammav)*pow((2/(gammav+1)),0.5*(gammav+1)/(gammav-1))*cpresv*tareav/sqrt(rconst*ctempv/atmweightv);
   //next line calculates exhaust velocity for the vulcain-2
   exvelv      =   sqrt((2*gammav*rconst*ctempv/((gammav-1)*atmweightv))*(1-pow((epresv/cpresv),(gammav-1)/gammav)));


   apres=GetAtmPressure();
   thrustvalv=(massflowv*exvelv)+eareav*(epresv-apres);


Конечно, можно и саппроксимировать прямыми, но и Ежу понятно, что при вертикальном старте закон изменения давления от времени будет один, а при реальном - другой. Что делать, шеф!? Совсем запутался...
_________________
Siberian Tiger
    Добавлено: 08:12 07-04-2006   
Bloodest
 155 EGP


Рейтинг канала: 3(40)
Репутация: 18
Сообщения: 944
Откуда: Питерские мы
Зарегистрирован: 07.10.2004
Ну что можно посоветовать - делать как есть.
Дык ИПВ все равно по тяге не понимает атмосферу. Атмосферный автопилот просто рулит тангажом в прогрейд. Надо приделывать... Это еще более усложнит обучалку и главное работу по созданию файлов данных.

Хотя я, лично не понимаю, зачем весь этот расчет, поворяемый на каждом тайм степе - пустая трата ресурсов.
    Добавлено: 13:28 07-04-2006   
Tiger
 65 EGP


Репутация: 10
Сообщения: 140
Откуда: Россия, Барнаул
Зарегистрирован: 13.12.2005
Давай пока не надо переделывать. Надо поиспытывать - если болванка окажется на расчетной орбите, значит все ОК, а как она туда попала, дело десятое.
_________________
Siberian Tiger
    Добавлено: 13:34 07-04-2006   
Bloodest
 155 EGP


Рейтинг канала: 3(40)
Репутация: 18
Сообщения: 944
Откуда: Питерские мы
Зарегистрирован: 07.10.2004
Этоя к чему - дык остальные же ведь летают - естественно счетчик оставшегося времени полета врет - расчет ведь для пустотной тяги - дык по ходу дела за счет постоянных перерасчетов к концу атмосферного участка ошибка полностью устраняется.
Другое дело оптимизатор полета в атмосфере (три неработающие кнопки в режиме работа) - он должен учитывать тягу и сопротивление как скорости потока так и вращения РН. Я занимаюсь счас как раз созданием матмодели - выверяю все факторы. так что исходники все дебугерной обвязке. Кстати в последней версии забыл убрать дебуг атмосферного автопилота - он создает файл aero.txt в корне сима и кидает туда, при включенной опции ARD данные.
время-Мах-угол управления для автопилота - угол атаки - целевой угол атаки - тангаж - уровень тяги движков управления по тангажу

Цель - отладка правильности повторения закона завала по тангажу и точность выдерживания прогрейда при больших скоростных напорах.
    Добавлено: 13:54 07-04-2006   
Tiger
 65 EGP


Репутация: 10
Сообщения: 140
Откуда: Россия, Барнаул
Зарегистрирован: 13.12.2005
Попытался применить следующий способ "огрубления" файлов обучения со слишком большим числом промежуточных ступеней, вызываемых плавным изменением тяги. Пусть Fi - тяга на i-м дискретном шаге. F*i - она же, но огрубленная. Fmax - максимальная тяга на всем диапазоне. epsilon - коэффициент огрубления. Тогда:

Код:

        F*i-1, |Fi - Fi-1|/Fmax <= epsilon
F*i = {
        Fi,  |Fi - Fi-1|/Fmax > epsilon


Получив ряд таких значений, отрезки неизменных значений всех трех параметров считаем за ступень и вычисляем для них суммарное время работы по всем вошедшим в них "ступенькам". Для "Ариан-5 + АТВ" в итоге мне удалось понизить количество ступеней с 11 тыс. до полутора сотен, в результате такой конфиг:

Код:
ariane5\A5V
Stage;StageElTime;StageTrust;StageFF;StageSM
147
f498;0,019;1174851,2;384,3;771010;1
f499;0,012;1839559,8;630,7;771010;1
f500;0,013;2259375,8;786,3;771010;1
f501;0,016;2714176,5;954,9;771010;1
f502;0,014;3273931,1;1162,4;771010;1
f503;0,011;3763716,5;1344;771010;1
f504;0,011;4148547,8;1486,6;771010;1
f505;0,014;4533379,1;1629,3;771010;1
f506;0,012;5023164,5;1810,8;771010;1
f507;0,014;5442980,5;1966,4;771010;1
f508;0,012;5932765,8;2148;771010;1
f509;0,033;6352581,8;2303,6;771010;1
f510;0,012;7507076;2731,5;771010;1
f511;0,014;7926891,8;2887,1;771010;1
f512;0,011;8416677,1;3068,7;771010;1
f513;0,013;8801508,4;3211,3;771010;1
f514;0,013;9256309,1;3379,9;771010;1
f515;0,011;9711109,9;3548,5;771010;1
f516;0,018;10095941,4;3691,1;771010;1
f517;0,013;10725666;3924,6;771010;1
f518;0,017;11180467,3;4093,1;771010;1
f2866;39,693;11495330,5;4209,9;771010;0
f4392;30,009;9197595,7;3304,7;771010;0
f6713;48,208;13922359,7;4997,1;771010;0
f6714;0,016;14237448,4;5096,4;771010;1
f6715;0,018;14031377,4;5020;771010;1
f6716;0,017;13803254,5;4935,5;771010;1
f6717;0,022;13591680,9;4857;771010;1
f6718;0,026;13322531,6;4757,3;771010;1
f6719;0,018;13011439,7;4642;771010;1
f6720;0,016;12801664,6;4564,2;771010;1
f6721;0,018;12618552,3;4496,3;771010;1
f6722;0,016;12415845;4421,2;771010;1
f6723;0,026;12238902;4355,6;771010;1
f6724;0,017;11955967,5;4250,7;771010;1
f6725;0,016;11775778,9;4183,9;771010;1
f6726;0,024;11609070,8;4122,1;771010;1
f6727;0,023;11363007,3;4030,9;771010;1
f6728;0,018;11132852,6;3945,6;771010;1
f6729;0,017;10956871,8;3880,4;771010;1
f6730;0,017;10793657,5;3819,9;771010;1
f6731;0,018;10633216,3;3760,4;771010;1
f6732;0,018;10466223,5;3698,5;771010;1
f6733;0,024;10302234,8;3637,7;771010;1
f6734;0,022;10087516,5;3558,1;771010;1
f6735;0,017;9895412,5;3486,9;771010;1
f6736;0,016;9750232,2;3433,1;771010;1
f6737;0,022;9615913,5;3383,3;771010;1
f6738;0,021;9434178,4;3316;771010;1
f6739;0,017;9264518,2;3253,1;771010;1
f6740;0,019;9130056,7;3203,2;771010;1
f6741;0,017;8982329,5;3148,5;771010;1
f6742;0,022;8852662,4;3100,4;771010;1
f6743;0,017;8687708,8;3039,3;771010;1
f6744;0,029;8563047,2;2993,1;771010;1
f6745;0,018;8354002,2;2915,6;771010;1
f6746;0,016;8228010,8;2868,9;771010;1
f6747;0,018;8118033;2828,1;771010;1
f6748;0,022;7996286,4;2783;771010;1
f6749;0,017;7850161,9;2728,8;771010;1
f6750;0,017;7739730,1;2687,9;771010;1
f6751;0,017;7631174,5;2647,6;771010;1
f6752;0,018;7524463,3;2608,1;771010;1
f6753;0,015;7413394,6;2566,9;771010;1
f6754;0,028;7322502,4;2533,2;771010;1
f6755;0,017;7155380,4;2471,3;771010;1
f6756;0,016;7056752,9;2434,7;771010;1
f6757;0,018;6965504,1;2400,9;771010;1
f6758;0,016;6864490,6;2363,5;771010;1
f6759;0,027;6776316,2;2330,8;771010;1
f6760;0,019;6629901,1;2276,5;771010;1
f6761;0,015;6529648,5;2239,3;771010;1
f6762;0,019;6452004,6;2210,6;771010;1
f6763;0,017;6355130;2174,6;771010;1
f6764;0,016;6270098,6;2143,1;771010;1
f6765;0,027;6191428,8;2114;771010;1
f6766;0,015;6060796,3;2065,5;771010;1
f6767;0,018;5990181;2039,4;771010;1
f6768;0,018;5906712,9;2008,4;771010;1
f6769;0,017;5824746,4;1978;771010;1
f6770;0,023;5748726,2;1949,9;771010;1
f6771;0,018;5647622,8;1912,4;771010;1
f6772;0,018;5570317,2;1883,7;771010;1
f6773;0,019;5494402,2;1855,6;771010;1
f6774;0,017;5415711,3;1826,4;771010;1
f6775;0,022;5346640,6;1800,8;771010;1
f6776;0,026;5258773,6;1768,3;771010;1
f6777;0,016;5157214;1730,6;771010;1
f6778;0,018;5096339,8;1708;771010;1
f6779;0,015;5028951,3;1683,1;771010;1
f6780;0,019;4973804,6;1662,6;771010;1
f6781;0,022;4904999,1;1637,1;771010;1
f6782;0,018;4826842,5;1608,1;771010;1
f6783;0,018;4764302,2;1585;771010;1
f6784;0,016;4702886,9;1562,2;771010;1
f6785;0,018;4649277,6;1542,3;771010;1
f6786;0,017;4589931,6;1520,3;771010;1
f6787;0,026;4534890,8;1499,9;771010;1
f6788;0,022;4452141,1;1469,3;771010;1
f6789;0,016;4383941,5;1444;771010;1
f6790;0,022;4335432,3;1426;771010;1
f6791;0,024;4269798,8;1401,7;771010;1
f6792;0,018;4199772,8;1375,7;771010;1
f6793;0,019;4148513,1;1356,7;771010;1
f6794;0,02;4095379;1337;771010;1
f6795;0,017;4040510,4;1316,7;771010;1
f6796;0,022;3994804,3;1299,7;771010;1
f6797;0,026;3936660,2;1278,2;771010;1
f6798;0,016;3869455,3;1253,3;771010;1
f6799;0,017;3829173;1238,3;771010;1
f6800;0,019;3787057,6;1222,7;771010;1
f6801;0,019;3740787,1;1205,6;771010;1
f6802;0,023;3695395,2;1188,8;771010;1
f6803;0,016;3641490,5;1168,8;771010;1
f6804;0,019;3604853,6;1155,2;771010;1
f6805;0,016;3562042,9;1139,3;771010;1
f6806;0,019;3526676,4;1126,2;771010;1
f6807;0,031;3485350,3;1110,9;771010;1
f6808;0,018;3419203,7;1086,4;771010;1
f6809;0,015;3381986;1072,6;771010;1
f6810;0,018;3351529,2;1061,3;771010;1
f6811;0,016;3315528,9;1047,9;771010;1
f6812;0,023;3284104,3;1036,3;771010;1
f6813;0,016;3239653,8;1019,8;771010;1
f6814;0,031;3209442,5;1008,6;771010;1
f6815;0,017;3151844,1;987,3;771010;1
f6816;0,016;3121236,5;975,9;771010;1
f6817;0,026;3092918,7;965,4;771010;1
f6818;0,018;3047638,3;948,6;771010;1
f6819;0,016;3017104,8;937,3;771010;1
f6820;0,018;2990452,2;927,4;771010;1
f6821;0,016;2960947,5;916,5;771010;1
f6822;0,038;2935192,9;907;771010;1
f6823;0,016;2875003,8;884,7;771010;1
f6824;0,018;2850623,5;875,6;771010;1
f6825;0,017;2823634,3;865,6;771010;1
f6826;0,016;2798603;856,3;771010;1
f6827;0,017;2775444,4;847,8;771010;1
f6828;0,025;2751231,8;838,8;771010;1
f6829;0,018;2716230,1;825,8;771010;1
f6830;0,016;2691658,5;816,7;771010;1
f6831;0,018;2670210,1;808,7;771010;1
e6832;0,016;2646466,4;799,9;771010;1
f6833;0,045;1250000;293,6;173124,8;1
e7621;17,233;1350343,3;319,5;173124,8;0
e11603;394,151;1350371,1;319,5;164132,5;0
s11605;109,525;29000;9,1;23750;0
1
210
210
51.8


Единички и нолики в конце - это, согласно документации, признак изменения или неизменности тяги на данном временном шаге.

Но увы и ах - не работает, с самого начала после загрузки сценария дает ошибку. Однако я провел вывод на орбиту вручную и заметил, что в конце работы большой ступени ошибка-таки пропадала и вектор появлялся. На второй (маленькой) ступени он опять исчез. Вряд ли тут замешана атмосфера. Автопилот не включал.
_________________
Siberian Tiger
    Добавлено: 23:56 08-04-2006   
Kulch
 105 EGP


Рейтинг канала: 2(21)
Репутация: 29
Сообщения: 604
Откуда: Россия, Санкт-Петербург
Зарегистрирован: 24.08.2004
Bloodest, что-то меня вот только сейчас торкнуло... А как ты подаешь управляющие моменты на ракеты типа моей "Энергии"? У меня никакого RCS, понятно, нету. Опять же про перекладывание вектора тяги спрашивал... Ну у меня-то там используются методы Орбитера для того, чтобы "взять" клавиатурное или джойстиковое отклонение. Получаются уровни управления по углам - по 2 на каждый канал и по ним я смотрю, как мне надо наклонить движки.

А ты-то как это снаружи по отношению к моей dll делаешь??? Или можно как-то подсунуть эти уровни управления?
_________________
Юрий Кульчицкий aka Kulch
    Добавлено: 19:52 09-04-2006   
Bloodest
 155 EGP


Рейтинг канала: 3(40)
Репутация: 18
Сообщения: 944
Откуда: Питерские мы
Зарегистрирован: 07.10.2004
2 Tiger. Крайне важно, что на начальном этапе тяговооруженность превышала 1 - алгоритм туп и считает что ракета летит под землей.
И главное - нет ни какого смысла дробить участки на мелкие. Достаточно вот так

Красные - нулевые флаги
синие - переменные =1
Коричневые - нулевой длительность
Дык Гы-гы знаешь какой шаг по времени используется при интегрировании траектории - dT=Tsumm/10, где Tsumm - остаточное время для вывода РН. То есть на старте при общем времени вывода в 620 секунд шаг интегрирования составит 62 секунды. При этом точность вывода по высоте составит где то 50 км, ошибка по азимуту - 1 градус. По полету шаг дросселируется и достигает 0.1 секунды за 10 секунд до отсечки тяги (дальше не уменьшается). Алгоритм понимает некратные шагу длительности, и соответственно формирует оконечные участки ступеней (скажем если первая ступень будет 100 секунд то первых два шага будут 62 и 38 секунд).
Такой прием резко снижает потребление времени на расчет - каждое приближение требует 4ех кратного интегрирования траектории. Изначально траектория интегрировалась с шагом dT=Tsumm/200. Сход на 10ку дал примерно 30и кратное ускорение работы ИПВ. И не как не повлияло на конечную точность и устранило проблему азимутов бросания близких к 90 градусам.
Счас попробую добраться до Ариана, посмотрим, мот где и жучек сидит и бзд.т.
    Добавлено: 08:17 10-04-2006   
Канал Orbiter: «Универсальный ракетный автопилот»
На страницу: Пред.  1, 2, 3, 4  След. | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Трудовые флудерские мозоли не путай с мозолями от удовольствия! (Lisnick о труде флудеров)

  » Универсальный ракетный автопилот | страница 3
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18