ВНИМАНИЕ! Наша конференция посвящена космической тематике и компьютерным играм. Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!
|
» Универсальный ракетный автопилот | страница 3 |
|
|
|
Канал Orbiter: «Универсальный ракетный автопилот» |
|
|
Bloodest
156 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 - разворот в азимут пуска на земле.
Углы эллера видны если закрутить по крену РН с острого осевой тягой в безвоздушном пространстве. Нос корабля будет весети себя как волчок - описывать круги вокруг центра. За счет пошаговости часть танагажа и рысканья (и друг в друга)будут попадать в крен и поэтому при включенном автопилоте нужно прикладывать все более значительные усилия для увелечения скорости вращения по крену и шум рулевых двигателей все возрастает - идет празитная коррекция тангажа и рысканья.
|
|
|
Bloodest
156 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кПа*градус (для Тополя).
Максимальную скорость вращения надо еще поискать...
Дымаю так - пилот будет меняя угол максимального завала (ИПВ будет просчитывать траекторию с учетом ограничений и выдавать суммарное время работы двигателей) будет ручками оптимизировать атмосферную траекторию.
|
|
|
Bloodest
156 EGP
  Рейтинг канала: 3(40) Репутация: 18 Сообщения: 944 Откуда: Питерские мы Зарегистрирован: 07.10.2004
 |
|
Скачки ТМА следствие поворота двигатилей - издержки всеядности ИПВ. Дык попробую что нибудь придумать.
|
|
|
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.
_________________ Я бы изменил этот мир, но Бог не дает мне исходников... |
|
|
Bloodest
156 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 градуса.
А на счет ТМА дык ИПВ не знает куда направлен вектор тяги он его определяет перечисляя все двигатели и множа их напарвления на их действующую тягу. Это дает возможность полета на ШаттлеА, ДГ с включенными ховерами или только на ховерах или вовсе на аксиалах ШаттлаА и причем аксиалы можно вращать в течении полета. Также определяется и несоосность тяги у Атлантиса.
А вот у тех кто рулит по тангажу поворачивая двигатель появляются скачки именно по причине такой всеядности. Как ни странно эти скачки можно устранить причем очень просто - ускорив время ...
|
|
|
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 |
|
|
Bloodest
156 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, которые будут создавать нужные моменты.
|
|
|
Bloodest
156 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-ом.
|
|
|
Tiger
65 EGP
 Репутация: 10 Сообщения: 140 Откуда: Россия, Барнаул Зарегистрирован: 13.12.2005
 |
|
Пробовал атмосферную фичу - при выводе "Союза" заваливается на азимут, противоположный азимуту стрельбы, а за 60-ю км пытается вырулить назад! Ж-жжж-жуть!
Старт "Дельты-2" с автопилотом (с HAT) - вообще спасайся, кто может. Она сразу валится на бок и начинает ездить кругами.
_________________ Siberian Tiger |
|
|
Bloodest
156 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 м/с отключается и контроль положения.
Автопилот устраняет все угловые скорости.
|
|
|
Tiger
65 EGP
 Репутация: 10 Сообщения: 140 Откуда: Россия, Барнаул Зарегистрирован: 13.12.2005
 |
|
А так замечательно, "Союз" летит в правильную сторону. У "Дельты", правда, автопилот, вроде бы, не врубается, но я еще толком не пробовал ее гонять.
На чем бы еще таком попробовать? Вот набор РН "Ангара" есть, на мультистейже написанный, жалко, без реальных ПН...
Кстати, вопрос такой: на участке работы третьей ступени ТМА летит уже практически на одной и той же высоте, с положительным тангажом для компенсации гравитационных потерь. Это реально отвечает условию оптимальности? Мне интуитивно казалось, что самое оптимальное - дуть в прогрейд...
_________________ Siberian Tiger |
|
|
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 |
|
|
Bloodest
156 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.
Дык на счет подкидывания новья это правильное дело.
|
|
|
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 |
|
|
Bloodest
156 EGP
  Рейтинг канала: 3(40) Репутация: 18 Сообщения: 944 Откуда: Питерские мы Зарегистрирован: 07.10.2004
 |
|
Ну что можно посоветовать - делать как есть.
Дык ИПВ все равно по тяге не понимает атмосферу. Атмосферный автопилот просто рулит тангажом в прогрейд. Надо приделывать... Это еще более усложнит обучалку и главное работу по созданию файлов данных.
Хотя я, лично не понимаю, зачем весь этот расчет, поворяемый на каждом тайм степе - пустая трата ресурсов.
|
|
|
Tiger
65 EGP
 Репутация: 10 Сообщения: 140 Откуда: Россия, Барнаул Зарегистрирован: 13.12.2005
 |
|
Давай пока не надо переделывать. Надо поиспытывать - если болванка окажется на расчетной орбите, значит все ОК, а как она туда попала, дело десятое.
_________________ Siberian Tiger |
|
|
Bloodest
156 EGP
  Рейтинг канала: 3(40) Репутация: 18 Сообщения: 944 Откуда: Питерские мы Зарегистрирован: 07.10.2004
 |
|
Этоя к чему - дык остальные же ведь летают - естественно счетчик оставшегося времени полета врет - расчет ведь для пустотной тяги - дык по ходу дела за счет постоянных перерасчетов к концу атмосферного участка ошибка полностью устраняется.
Другое дело оптимизатор полета в атмосфере (три неработающие кнопки в режиме работа) - он должен учитывать тягу и сопротивление как скорости потока так и вращения РН. Я занимаюсь счас как раз созданием матмодели - выверяю все факторы. так что исходники все дебугерной обвязке. Кстати в последней версии забыл убрать дебуг атмосферного автопилота - он создает файл aero.txt в корне сима и кидает туда, при включенной опции ARD данные.
время-Мах-угол управления для автопилота - угол атаки - целевой угол атаки - тангаж - уровень тяги движков управления по тангажу
Цель - отладка правильности повторения закона завала по тангажу и точность выдерживания прогрейда при больших скоростных напорах.
|
|
|
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 |
|
|
Kulch
105 EGP
 Рейтинг канала: 2(21) Репутация: 29 Сообщения: 604 Откуда: Россия, Санкт-Петербург Зарегистрирован: 24.08.2004
 |
|
Bloodest, что-то меня вот только сейчас торкнуло... А как ты подаешь управляющие моменты на ракеты типа моей "Энергии"? У меня никакого RCS, понятно, нету. Опять же про перекладывание вектора тяги спрашивал... Ну у меня-то там используются методы Орбитера для того, чтобы "взять" клавиатурное или джойстиковое отклонение. Получаются уровни управления по углам - по 2 на каждый канал и по ним я смотрю, как мне надо наклонить движки.
А ты-то как это снаружи по отношению к моей dll делаешь??? Или можно как-то подсунуть эти уровни управления?
_________________ Юрий Кульчицкий aka Kulch |
|
|
Bloodest
156 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 градусам.
Счас попробую добраться до Ариана, посмотрим, мот где и жучек сидит и бзд.т.
|
|
|
|
|
|
Канал Orbiter: «Универсальный ракетный автопилот» |
|
К списку каналов | Наверх страницы |
Цитата не в тему: От блин, страна советов - не дадут в конфе нормально поругацца с человеком - замучают советами. (Nadin)
|
» Универсальный ракетный автопилот | страница 3 |
|