|
|
|
Канал Orbiter: «Универсальный ракетный автопилот» |
|
|
Bloodest
156 EGP
  Рейтинг канала: 3(40) Репутация: 18 Сообщения: 944 Откуда: Питерские мы Зарегистрирован: 07.10.2004
 |
|
Kulch : |
Bloodest, что-то меня вот только сейчас торкнуло... А как ты подаешь управляющие моменты на ракеты типа моей "Энергии"? У меня никакого RCS, понятно, нету. Опять же про перекладывание вектора тяги спрашивал... Ну у меня-то там используются методы Орбитера для того, чтобы "взять" клавиатурное или джойстиковое отклонение. Получаются уровни управления по углам - по 2 на каждый канал и по ним я смотрю, как мне надо наклонить движки.
А ты-то как это снаружи по отношению к моей dll делаешь??? Или можно как-то подсунуть эти уровни управления?
|
Ни как и не чего по отношению к dll RN не делаю - работа идет с классом от которого произведена Энергия.
В ИПВ на
Код: |
DLLCLBK void opcPreStep (double simt, double simdt, double mjd) |
Сидит вставка обучения
Код: |
bool Driver::Learn(VESSEL * ves, bool HackAT)
{
parent=ves;
Moments =_V(0,0,0);
parent->GetPMI(Inertia);Inertia=Inertia*parent->GetMass();
if(HackAT)
{
for(int i=0; i<3;i++) Moments.data[i]=0.1*Inertia.data[i];
HackATT=true;
}
else
{
HackATT=false;
/////////////////////////////////////////////////////////////////////Pitch
int n_dv = 0; n_dv = parent->GetGroupThrusterCount (THGROUP_ATT_PITCHUP);
if(!n_dv) return false;
for(int i=0; i<n_dv;i++)
{
THRUSTER_HANDLE th = parent->GetGroupThruster (THGROUP_ATT_PITCHUP,i);
VECTOR3 pos,dir;
parent->GetThrusterRef (th,pos);
parent->GetThrusterDir (th,dir);
Moments=Moments-crossp(pos,dir)*parent->GetThrusterMax (th);
}
... |
Флаг HackAT=true когда включен триггер HAT.Соответственно если он включен то производится установка моментов псевдоуправленя, таких чтобы они обеспечивали ускорение 0,1 рад/с/с
Непосредственно в управлении
Код: |
if(HackATT)
{
for(i=0;i<3;i++)
if(SwitchA.data[i] >=0)
{
double Force = upr.data[i]*ScaleMFactor.data[i]*Moments.data[i];
VECTOR3 VF1,R1,VF2,R2;VF1=R1=VF2=R2=_V(0,0,0);
switch(i)
{
case 0:
VF1.data[1] = Force;
VF2.data[1] = -Force;
R1.data [2] = 0.5;
R2.data [2] = -0.5;
break;
case 1:
VF1.data[2] = Force;
VF2.data[2] = -Force;
R1.data [0] = 0.5;
R2.data [0] = -0.5;
break;
case 2:
VF1.data[0] = Force;
VF2.data[0] = -Force;
R1.data [1] = 0.5;
R2.data [1] = -0.5;
break;
}
parent->AddForce(VF1,R1);
parent->AddForce(VF2,R2);
}
}
else
{
for (i=0;i<3;i++)
{
if(SwitchA.data[i] >=0) parent->SetAttitudeRotLevel (i, upr.data[i]*ScaleMFactor.data[i]);
else parent->SetAttitudeRotLevel (i, 0);
}
} |
|
|
|
Kulch
105 EGP
 Рейтинг канала: 2(21) Репутация: 29 Сообщения: 604 Откуда: Россия, Санкт-Петербург Зарегистрирован: 24.08.2004
 |
|
... AddForce'ами, понятно... Жаль...
_________________ Юрий Кульчицкий aka Kulch |
|
|
Tiger
65 EGP
 Репутация: 10 Сообщения: 140 Откуда: Россия, Барнаул Зарегистрирован: 13.12.2005
 |
|
... А если автопилот "Энергии" и ИПВ Bloodest'а с хаком друг на друга наскочут, кто кого сборет?
_________________ Siberian Tiger |
|
|
Kulch
105 EGP
 Рейтинг канала: 2(21) Репутация: 29 Сообщения: 604 Откуда: Россия, Санкт-Петербург Зарегистрирован: 24.08.2004
 |
|
Мой победит. Он учитывает внешние воздействия и старается их компенсировать. При этом используются управляющие моменты до 0.3 от максимально возможных.
_________________ Юрий Кульчицкий aka Kulch |
|
|
Bloodest
156 EGP
  Рейтинг канала: 3(40) Репутация: 18 Сообщения: 944 Откуда: Питерские мы Зарегистрирован: 07.10.2004
 |
|
Пока да- в атмосфере родной лудше. Но каким спопособом? Учет воздействий это не все. А вы поинтерисуйтесь какие такие углы атаки у Энергии на максимальных напорах.
Вне атмосферы родной здорово сдает... Посмотреть просто - надо запустить ИПВ во время работы только второй ступени в режиме single stage ship, добавить ARD и посмотреть сброс aero.txt - угловые ускорения не превышают 0,005 рад/с/с ... Ну поскольку Энергия не обеспечивает ручную отсечку двигателей по высотам швах, но по наклонению 1 тысячную градуса держит...
|
|
|
Kulch
105 EGP
 Рейтинг канала: 2(21) Репутация: 29 Сообщения: 604 Откуда: Россия, Санкт-Петербург Зарегистрирован: 24.08.2004
 |
|
Роман, я не спорю.
1. Помни просто о том, на каком принципе сделан мой автопилот (я писал про это дважды). Он НЕ МОЖЕТ быть точным. Более того, я НЕ РАБОТАЮ над его улучшением, в моем проекте есть более важные аспекты, требующие доделки в текущий выпуск.
2. В первую версию ракеты НЕ ЗАЛОЖЕНЫ ограничения по углам атаки и по скоростному напору, я оставил эти тонкости для последующих версий. (Я, как программист, придерживаюсь той точки зрения, что вовремя остановиться и выпустить достаточно качественный, но недостаточно доделанный продукт - важнее, чем долго совершенствовать его, но выпустить поздно).
3. Я просил тебя дать мне исходники твоего автопилота в надежде на то, что разобравшись в них, я смогу быстро скомбинировать такой автопилот, который будет иметь приемлемую точность. Мне инутри виднее, как присобачить к моей ракете другой алгоритм. Вполне возможно, что применить его к моей ракете вообще невозможно, но это могло натолкнуть меня на другие идеи. Еще раз напоминаю, что в математике я не смыслю ничего. Поскольку ты не заметил или проигнорировал мои слова (возможно, я был недостаточно настойчив, а может быть - не вежлив?), я решил, что изучение теории управления ракетами и формирование собственного алгоритма управления я оставлю на потом. В текущий выпуск я уже не успеваю.
_________________ Юрий Кульчицкий aka Kulch |
|
|
Bloodest
156 EGP
  Рейтинг канала: 3(40) Репутация: 18 Сообщения: 944 Откуда: Питерские мы Зарегистрирован: 07.10.2004
 |
|
1. Любую точность можно улудшить. В управлении с ограничением по постоянной скорости перекладки можно использовать описанный выше мной алогритм с леаниризацией - только вместо "a" применить a=K*sin(W0+W*t) и на выходе либо использовать дробные значения - скорость переменная либо просто знак U - направление перекладки.
3. Когда закончу Launcher - в финальной версии будет и программный интерфейс к dll и текст проги (только без некотрых частей - комерческих [тех что делал по договорам]- часть математики -быстрый код - на ассемблере).
|
|
|
Tiger
65 EGP
 Репутация: 10 Сообщения: 140 Откуда: Россия, Барнаул Зарегистрирован: 13.12.2005
 |
|
Bloodest : |
И главное - нет ни какого смысла дробить участки на мелкие. Достаточно вот так
Красные - нулевые флаги
синие - переменные =1
Коричневые - нулевой длительность
|
Я подумаю, как бы так лучше эти данные сглаживать. Слету придумывается считать не только дельта функции между точками, но и дельту производной, и таким образом искать точки перелома. Чтобы это работало на человека и для человека, отчаянно нужна соотвествующая подпрограмма в самом модуле или в качестве отдельного экзешника.
В порядке посильной помощи (если, конечно, ты планируешь заканчивать Пускатель) предлагаю перевести мануал. Думаю, моего уровня хватит.
_________________ Siberian Tiger |
|
|
Bloodest
156 EGP
  Рейтинг канала: 3(40) Репутация: 18 Сообщения: 944 Откуда: Питерские мы Зарегистрирован: 07.10.2004
 |
|
1. Сглаживать - надоть порыскать по инету на счет кода что-то вроде распознавания образов.
2. На счет первода - это... я очень рад - с англицким у меня швах - чтитаь вроде кое как а писать - полная ж.
3. Заканчивать обязательно буду - штука должна получиться ходовая. Я так надеюся.
Задержка вызвана проблемами в атмосферном модуле - в его согласовании с реальной физикой управления. Теперь треба все и земная тяга и сопротивление и площади и сопротивление вращению.
То есть полный автомат оказался весьма капризен. Все дело в начальном завале - нужно выдержать процесс завала достаточно точно. Чтобы вектор скорости отличался от заданного не более 2ух градусов.
Это оказалось весьм трудным делом. Вот пока раздумывал - слетал к звездам. И мысля сама пришла.
Сегодня реализовал - пока на Новых горизонтах, Кассини, ТМА, Протонах с Миром и главное - Атлантисе работает тип-топ. На Энергии нет - не работает - в конфиге неверно задана тяга боковушек. Счас счищаю все отладчики и дописываю код (заглушки убираю - например земная тяга считывалась только на первой ступени прямо на старте, а не читалась из обучения, остальные ступени строились в пропрции с первой). В выходные напишу обнавленный мануал.
К вторнику -среде думаю скинуть в инет.
|
|
|
Bloodest
156 EGP
  Рейтинг канала: 3(40) Репутация: 18 Сообщения: 944 Откуда: Питерские мы Зарегистрирован: 07.10.2004
 |
|
Атмосферный автопилот
ftp://koavia.com/n1/LauncherMFD_A7P.rar
Код: |
Тестовый патч А7Р
Изменения
1.Триггеры SED и HAT перенесены в режим "работа".
2.В режиме работа убраны все маркеры - работают только табло триггеров.
3.Автопилот начинает работу только после набора высоты равной 2ум характерным размерам ЛА (2*GetSize).
4. Введен автопилот полета в атмосфере.
Последовательность работы с ним следующая.
-В режиме работа кратковременно включить автопилот.
-Автопилот должен включится, если нет - у ЛА отсутствуют выделенные двигатели
управления по вращению - нужно включить HAT.
-Выключить автопилот.
-Проанализировать показания параметра U - максимальное угловое ускорение
по тангажу - если оно меньше 0.03 - использовать HAT на этапах полета
в атмосфере.
-Нажать клавиш ARD - ИПВ перейдет в режим "compute gimbal angle" - расчет
угла завала.
-Клавишами GA+ GA- подобрать такое значение параметра Max gimbal angle при
котором образуется минимальное Ending Time.
-Отменить расчет RST или подтвердить GO
-При подтверждении после автоматического перехода в режим рбота включаются режимы ARD и AP
Все можно стартовать
В файлах конфигурации добавлен четвертый параметр целевых установок - максимальный угол отклонения (см примеры конфиг файлов). |
Зы Ариан - попровывал - в конфигах - 2 шт.
Все работает перекрасно - прямо и голяком - только надо отрезать голову, где тяговооруженность меньше единицы.
ООпс. ошибочка была.
ftp://koavia.com/n1/LauncherMFD_A8P.rar
Изменения
1.Исправлена ошибка в работе с одноступенчатым ЛА.
|
|
|
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
 |
|
Во-истину воскрес!
Спешить не надо - тестировать можно на том на чем и раньше (хотя бы на Атлантисе)- собственно сейчас вожно использование разных ПК с разными настройками - по тому как алгоритм "зарос" настолько что начали появлятся ошибки в инициализации параметров (версия а7). Дык это очень гнусное дело - проявляется не всегда и не везде и требует значительных усилий на поиск- использование неинециализированного значением параметра можно выявить только на иной машине - там как правило в ячейке памяти будет другое значение алгоритм его скушает и поведет себя по иному...
|
|
|
Tiger
65 EGP
 Репутация: 10 Сообщения: 140 Откуда: Россия, Барнаул Зарегистрирован: 13.12.2005
 |
|
Добрался в этот выходной до Орбитера, попробовал "Атлантис". По инструкции, задействовал атмосферный автопилот, все сработало просто замечательно (если не считать отсутствия "Roll Program"... забавно было видеть шаттл, летящий "на боку" ) C gimbal angle все понятно, только параметр максимального углового ускорения (кажется так) U неплохо было бы подсвечивать красным, когда он не укладывается в диапазон руления "без хака". Лучше даже чтоб мигал и явно было видно, что что-то не в порядке. А то еще поди вспомни нужное значение (0.03).
Еще с прошлых разов помню, что включение режима LEI (правда, не в тех азимутах бросания, для которых он предусмотрен, а обычных) приводит к ошибке расчета. К сожалению, не могу сказать про близкие к 90 градусам азимуты - пока не пробовал.
Можно добавить полезную фишку: в файле программы тангажа ввести формат строк комментариев, которые будут показываться в определенные моменты. Например "jettison fairing now!"
Думаю, в остальном в плане эргономики претензии высказать сложно. Что касается возможных глюков, то один я их никак не выявлю (а похоже, что тут один я и тестирую ИПВ). Пожалуй, только одно предсказание: если установлено много разных MFD'шек, то они начинают конфликтовать по клавишам вызова, и Орбитер им автоматически назначает комбинации Shift+1, Shift+2 и т.д. Возможно, это приведет к конфликту с рядом управляющих клавиш ИПВ.
Короче, пора выходить на стадию "бета" и делать релиз для всего честного народа, посещающего "орбитхангар". В связи с этим, если позволишь, несколько замечаний по руководству.
1. Во вводной части следует пояснить, чем отличается истинный азимут бросания от азимута, показываемого IMFD. Я вот, например, не уверен, что знаю.
2. стр. 8: "от +5 до +0.5 градуса от минимально возможного - широты места пуска". Пожалуй, еще одно замечание по эргономике - это условие на глаз определить сложно, требуется заглянуть в Map или Surface и еще посчитать в уме. Так что не мешает еще одну "красную лампочку" прикрутить.
3. стр. 8: "предстартовые операции состоят из разворота, если требуется, корабля в истинный азимут бросания - команда ROL." Неясно, как определить, требуется или нет.
4. чуть ниже там же - так и не понятно, что такое LEI и почему оно так называется.
5. стр. 10 - помянут Saturn4B, очевидно, Titan4B.
6. стр. 11 - пожирнее про недопустимость в конфигурации режимов с тяговооруженностью < 1. Я вот не обратил давеча внимания...
7. стр. 13 - рекомендуешь произвести захват наклонения перед стартом "Союза". Тогда я вообще не понял про этот захват, что ли? Азимут-то 63... Надо будет следущим разом отлетать этот сценарий.
8. стр. 15 - чисто из интереса, здесь используется вторая промежуточная орбита, на 30 км ниже орбиты станции? Если да, то как правильно рассчитать время опережения для начала маневров перехода? Я с этой проблемой парился при использовании SoyuzGuidance MFD. Там предлагается с 200*200 перейти сперва на 330*330, а потом уже непосредственно сближаться со станцией (ориентировочно 360*360). Запарка была в том, чтобы определить разность MnL на первой орбите, достаточную, чтобы не проскочить на второй орбите время начала маневра сближения. Кстати, хороший тулз, только он и Rendez-vous MFD используют метод свободных траекторий.
Вот, пока все...
_________________ Siberian Tiger |
|
|
Bloodest
156 EGP
  Рейтинг канала: 3(40) Репутация: 18 Сообщения: 944 Откуда: Питерские мы Зарегистрирован: 07.10.2004
 |
|
Замечания учту. LEI- захват эклиптического наклонения и соответственно полет в него а не в экваториальное - собственно данная фича не оправдала себя, скорее всего будет удалена.
Дык на счет синхронизации - дык можно и так - дык с ИМФД проще -
200*200 есть первая и последняя орбита - с нее и идет сближение - переход начинает осуществлятся когда до станции 200-250 км (естественно он расчитывается заранее благо ИМФД это позволяет). Естественно ИМФДшный метод Ламберта точнее чем Свободных траекторий. Последний применяется при сближении с дистанций в 20-30 км и на околокруговых орбитах - отсюда и запарки. А так при разности фазирования даже в 359 градусов будут невелированы разностью высот в 160 км примерно за 2ое суток... И главное не впилиться в станцию при торможении
|
|
|
Thorton
87 EGP
 Рейтинг канала: 3(36) Репутация: 12 Сообщения: 696 Откуда: Томск Зарегистрирован: 15.05.2006
 |
|
Роман, это не про Ваш лаунчер случаем?
http://orbit.m6.net/Forum/default.aspx?g=posts&t=11599
|
|
|
Bloodest
156 EGP
  Рейтинг канала: 3(40) Репутация: 18 Сообщения: 944 Откуда: Питерские мы Зарегистрирован: 07.10.2004
 |
|
Гы - про мой - я типа и забыл что одну из альф туда бросал - типа первый ответ был через 2 недели...
Да есть такой глюк - проявлялся и у меня - в чем проблема не знаю - те стоит на этой машине пересобрать проект dll и все работает.
|
|
|
|
|
|
Канал Orbiter: «Универсальный ракетный автопилот» |
|