[identity profile] fixik-papus.livejournal.com posting in [community profile] engineering_ru
Оригинал взят у [livejournal.com profile] fixik_papus в Lithobraking, или Высота под уровнем моря
Оно же на dreamwidth.

Эпиграф.
- Как правильно тормозить двигателем?
- Сначала нужно тормозить бампером, затем радиатором и только после этого - двигателем.
(с) анекдот


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

Фото отсюда. Все фото крупно по клику



Нельзя не отметить, что мягко приземлиться на Марсе (да и хотя бы просто долететь до Марса) - задача, мягко говоря, нетривиальная.
Исторически - примерно половина миссий вообще в район Марса не добралась.


инфографика отсюда

Итак, 16 октября 2016 года в 14:42:22 UTC спускаемый аппарат "Скиапарелли" (дальше - СА) вошел в марсианскую атмосферу.
Что было дальше - проще понять на картинке из вышеозначенного отчета.



Собственно, так оно все и сработало. За маленьким исключением:

Верхняя крышка вместе с парашютом отделилась намного раньше, чем нужно. А реактивный двигатель мягкой посадки был выключен через 3 секунды вместо расчетных 30. В результате "Скиапарелли" врубился в поверхность Марса на скорости примерно 150 метров в секунду.

Причины бОльшей части проваленных миссий к Марсу точно не установлены и поныне. Но в данном случае телеметрия со спускаемого аппарата была прямо в процессе спуска передана на спутник Trace Gas Orbiter - и оттуда в центр управления, что позволило произвести "разбор полетов".

Чтобы сложная цепочка событий выполнилась как нужно - СА должен знать, где он находится и далеко ли еще до земли (то бишь, до Марса).
Для этого на борту имеются инерциальная навигационная система (ИНС, суть гироскопы+акселерометры) и радарный высотомер.

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

Неправильно подобранные пределы измерения ИНС - это первая, но не последняя ошибка.
Когда при расследовании обратились к Jet Propulsion Laboratory - единственной в мире на сегодня конторе, умеющей сажать что-либо на Марс (и то не всегда) - ответ был прост и немного предсказуем:
"А чего вы хотели? Сверхзвуковой парашют в атмосфере Марса - штука плохо предсказуемая и на Земле толком не тестируемая, фиг смоделируешь. Посему рассчитывайте на все, что угодно, причем с запасом. Вон, у нас при посадке Opportunity та же фигня с закруткой была - и ничего, тринадцатый год по Марсу катается".

Надо было до старта спецов спрашивать, а не при разборе полетов, однако.

Кстати, мало кто знает, что обычный спускаемый на Землю аппарат корабля "Союз" при спуске так же закручивается со скоростью до 12 оборотов в минуту - и это считается штатным.

"Если предел превышен - выдается сигнал "зашкал", данные соответственно недостоверны"
Логика правильная, но вот уставка этого предела - оказалась неправильной. В результате некоторое время ИНС выдавала неправильные данные, не ставя флага переполнения.
В теории должно быть 15 мс. По факту все в эту цифру верили, но никто никогда не проверял.
(а будь там реально 15мс - при все при остальном посадка, вероятно, была бы мягкой).

Эти неправильные данные угловой скорости были успешно проинтегрированы бортовым компьютером при расчете угловых координат СА.
Результат интегрирования оказался настолько неправильным, что СА якобы "перевернут кверх ногами".
К сожалению, никому в голову не пришло подумать: а каким образом вообще аппарат, подвешенный под парашютом, может перевернуться кверх ногами и так лететь?

При дальнейшем расчете высоты (через угловые координаты = вектор направления движения и скорость) - рассчитанная высота оказалась отрицательной (косинус угла >90град отрицательный). То бишь - СА летит "где-то внутри Марса."
Никого из программистов не смутил ни сам факт отрицательной высоты летящего СА, ни мгновенное ее изменение на несколько километров.

Но не стОит считать программистов миссии "Экзомарс" совсем тупыми. Разумеется, там предусмотрена проверка: если ИНС выдает сигнал "зашкал" 5 секунд и дольше - он считается неисправным и управление передается радиовысотомеру (работавшему штатно).
Все замечательно. Но есть нюанс! Там не просто радиовысотомер, а допплеровский. Что означает: высотомер выдает не абсолютное значение высоты, а ее изменение.
Соответственно, чтобы работать по высотомеру - нужно знать "точку отсчета".
В качестве которой было взято... правильно, вышеупомянутое отрицательное значение высоты. Полученное о неисправной ИНС.
Которое теперь еще и уходило дальше "в минус" по мере реального снижения над Марсом!

Логика управления парашютом, получив информацию "СА находится под поверхностью Марса" - решила "парашют под землей не нужен" и отстрелила его нафих. И включила посадочный двигатель. (он, судя по логике, и под землей нужен).

Расчет времени отключения посадочного двигателя - это отдельный алгоритм. Выключение происходит, когда и кинетическая энергия летящего СА, и потенциальная энергия его в гравитационном поле Марса - равны нулю. Что есть совершенно корректное терминальное условие мягкой посадки.
Как его проверить? Сложили оба значения и проверили сумму на ноль.
Кинетическая энергия была посчитана правильно и была положительной. А вот потенциальная "под поверхностью Марса" оказалась настолько отрицательной, что условие отключения двигателя было выполнено еще до того, как он включился. В результате двигатель отключился так быстро, как только мог - через 3 секунды.

Отделение парашюта и отключение двигателя произошли в нескольких километрах над поверхностью Марса и на сверхзвуковой скорости.
Через несколько секунд высота СА - реально стала отрицательной!
Потому что от "торможения о поверхность" (lithobraking, ага) образовался кратер диаметром 2,4м и глубиной 0,5м.
Который нужно заслуженно назвать в честь главного программиста проекта.
(В отчете фамилии не упоминаются. А жаль! страна должна знать своих героев в лицо).


Фото со спутника Mars Recoinassance Orbiter

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

"Рекомендация 5:
Бортовое программное обеспечение должно содержать адекватные и достоверные проверки разумности всех входных данных и результатов расчетов.
Включая, но не ограничиваясь:
Проверка ориентации (не может быть кверх ногами под парашютом)
Проверка высоты (не может быть отрицательной)
Проверка ускорения падения (не может превышать ускорения свободного падения)
Проверка производной высоты (не может уходить в минус от 3,7км за 1 секунду)
Сравнение актуального профиля высоты и ускорения с расчетным, чтобы заранее понять недостоверность измерений.

А я бы добавил от себя к отчету еще одну рекомендацию:
Установить высотомер, который выдает абсолютное значение высоты. А не производную.

P.S. Следующий раздел отчета заставил меня криво улыбнуться.

После двух неудачных попыток мягкой посадки на Марс (первой был Бигль-2) Европейское космическое агентство сделало жест "лапки кверху", отказалось от дальнейших разработок СА... и подрядило для создания СА для своего марсохода - российское НПО им.Лавочкина. Которое тоже на сей день не добилось ни одной успешной посадки на Марс Но за европейские деньги попытаться еще разок - да пожалуйста.

Так вот, раздел 8 я бы назвал так:
Рекомендации от одной конторы, не умеющей мягкую посадку на Марс - другой конторе, не умеющей мягкую посадку на Марс: "Как надо делать мягкую посадку на Марс".
Сдается мне, что году так в 2021, а то и в 2023 - будем примерно так же разбирать официальный доклад "О причинах появления очередного российско-европейского рукотворного кратера на Марсе", ага.
Page 1 of 7 << [1] [2] [3] [4] [5] [6] [7] >>

Date: 2017-05-26 03:12 am (UTC)
From: [identity profile] ardelfi.livejournal.com
В организационном аспекте это уже не первая демонстрация подросшего поколения недоумков. Причём это не мой вывод, а результат разбора полётов пректа DART (НАСА, 2005). Напомню что выводы там эквивалентны волчьему билету всей команде -- недоумками их там не обозначили, но так подробно описали, чтобы сомнений возникнуть не могло. Могу для желающих цитаты привести.

В инженерном аспекте в том столько печали, что можно выбрать любую часть и на том закончить. Допплеровский радар не требует никакой точки отсчёта, а даёт прямое измерение абсолютной скорости относительно отражателя, выраженное в разнице между частотой излучённого и принятого сигнала. Одного этого сигнала достаточно чтобы определить абсолютную скорость машины относительно поверхности с достаточной точностью. Кроме того, только особо неправильная религия может запретить авторам того же радара измерять дальность до отражателя в обычном для радаров импульсном режиме. В результате один сенсор дал бы две величины: дальность до поверхности и скорость относительно неё. На этом можно было бы и закончить диагноз, но уходящие в насыщение гироскопы также заслуживают внимания. Есть некая скорость вращения, при которой машина разлетится на куски -- она не столь велика, чтобы не быть вписанной в спецификацию, и тем принципиально исключить ситуацию "насыщения гироскопа". Это показывает что с гироскопом также потрудились недоумки. Программные ограничения на величины физических измерений -- нормальная практика для ответственных задач, настолько нормальная, что нормальный для таких задач язык программирования Ада, или язык описания схем VHDL, содержат эти ограничения в базовом синтаксисе. Поэтому можно предположить что недоумки притащили с собой си-плюс-плюс или ещё что похуже, и по привычке накропали говнокода, который либо не проходил формальную инспекцию, либо проводили её такие же недоумки.

"Пгавильной догогой идёте, товагищи! Только не в ту сторону." (с)

з.ы. Всё бы не беда, поскольку мопед не наш, но Роскосмос собрался учиться посадке на Луну у ESA. Вот это таки беда, и надеюсь найдётся кто-то в Роскосмосе, чтобы заметить эту беду прежде чем записанная в ФКП жалкая имитация лунной программы разобьётся из-за недоумков-инструкторов, у которых (и это не шутка) теперь есть "опыт".
Edited Date: 2017-05-26 03:16 am (UTC)

Date: 2017-05-26 03:30 am (UTC)
From: [identity profile] antontsau.livejournal.com
Я рассказывал про то, как у меня водонагреватель косячился от воды с нулевой температурой? Немецкий, понтовый... косячился. Какой в задницу Марс если в сортире разобраться не могут. Програ ммистов душить.

Date: 2017-05-26 03:38 am (UTC)
From: [identity profile] antontsau.livejournal.com
Ниче, освятят как положено и запустят. Если б-г денег даст, что сумнительно. А разобьется о небесную твердь так и фиг с ним.

Date: 2017-05-26 04:17 am (UTC)
From: [identity profile] iv-an-ru.livejournal.com
Это вы не видели немецкую понтовую автоматику управления горелкой в корпусе из --- та-дамм! --- легкоплавкой пластмассы. То есть первое-то поколение коробочек работало прекрасно, корпус слегка размягчался, но его же некому было давить с силой или ещё что, поэтому какая разница. Но потом они решили сэкономить на покупном реле и его крепеже, и в качестве корпуса реле стали использовать корпус самого автомата. Внезапно оказалось, что в реле есть пружинка, которая просто выдёргивается из размякшей пластмассы, перекашивая весь фарш и замыкая одновременно NO и NC контакты, а ведь мощность МТУшки до взрыва составляла 2 МВт :|

Мудрые люди, писавшие ПУБЭ, предписали подземный топливопровод к прочному баку на расстоянии минимум 20 метров либо за капитальным строением, и металлический теплообменник с выкладкой из кирпича, по совместительству неплохо держащий мелкие осколки и ударную волну. Жертв не было.

Date: 2017-05-26 04:27 am (UTC)
From: [identity profile] antontsau.livejournal.com
Не, это физика. Пластмаски, пружинки, удачно влезший таракан и все такое. А то - программный баг. Оймынипадумали. Унасвсеработало. Ачтотакбывает? И тп и тд.

Date: 2017-05-26 04:34 am (UTC)
From: [identity profile] lp-lp-lp-lp.livejournal.com
Большинство программистов чрезмерно самодовольны. Слишком уверены в себе, и своей "магии". Слишком раскормлены легкой работой, отучающей думать, и приучающей кодить спинным мозгом.
Результат виден. Лажа на лаже и лажей погоняет. Там, где технолога жестко вздрючит главный технолог, потому что опыт реального мира штука жестокая, программиста тимлид ласково чмокнет в щечку и назовет пусей. А это не приучает к ответственности.

Date: 2017-05-26 04:48 am (UTC)
From: [identity profile] fau74.livejournal.com
Проверка ориентации (не может быть кверх ногами под парашютом)

Положим, как убедились еще в прошлом веке разработчики парашютных платформ для десантирования техники, груз под парашютом может испытывать самые разнообразные нагрузки и менять ориентацию весьма непредсказуемо, в том числе и выходить на переворот. Очевидное - не всегда правильное :)

Date: 2017-05-26 05:08 am (UTC)
From: [identity profile] iv-an-ru.livejournal.com
А легкоплавкое термореле --- это что, мыхарашопадумали? В обоих случаях одна и та же неспособность построить в отдельно взятой голове достаточно подробную модель происходящего, проигрывать на этой модели сценарии и правильно вообразить последствия тех или иных решений. А ведь именно это, согласно известной фразе, принципиально отличает самого плохого архитектора от самой хорошей пчелы.

Date: 2017-05-26 05:10 am (UTC)
From: [identity profile] fau74.livejournal.com
Рисую маловероятный, но возможный вариант развития событий: раскрылось, тряхнуло, перевернуло, зацепило за стропу :)

Date: 2017-05-26 05:24 am (UTC)
From: [identity profile] ardelfi.livejournal.com
1. Нормальные инженеры там нужны, а не то что есть. Иметь радар и не использовать его для измерения расстояния -- это особое состояние сознания, которое несовместимо с такой работой.

2. Какая разница. Они же сажали что-то на Марс (гусары, молчать!), ну и вообще "это же Европа".

Airbus Defence and Space to guide lunar lander to the Moon (https://airbusdefenceandspace.com/newsroom/news-and-features/airbus-defence-and-space-to-guide-lunar-lander-to-the-moon/)
Airbus Defence and Space, the world’s second largest space company, and the European Space Agency (ESA), have signed a contract for the early development of a system that will ensure the safe and precise landing of the Russian Luna-Resource lunar lander.
The contract covers the Phase B and advanced C development steps for the PILOT (Precise and Intelligent Landing using Onboard Technologies) system, a key European element to be flown on the robotic Luna-Resource lander mission as part of the ESA cooperation with Roscosmos on exploration.
Всё понятно? Точная и интеллектуальная посадка с использованием Бортовых Технологий. Наверно речь о радаре и продукции тех же погромистов.

Date: 2017-05-26 05:37 am (UTC)
From: [identity profile] fau74.livejournal.com
Не "исключено", а "следует предусмотреть распознавание попадания и в эту ситуацию тоже".

Под парашютом груз подвергается различным ускорениям, как зацепилось, так и отцепиться может. Так что попадание в такую ситуацию даже не обязательно фатально - если система управления понимает, что происходит, и не пытается сдуру усугублять.

Date: 2017-05-26 05:47 am (UTC)
From: [identity profile] suvorow-.livejournal.com
Когда у новичков, забывших отключить ППК-У, по барометру на высоте 300 метров открывается запасной парашют, он, обычно, успевает упасть метра на 3-4, пройти между ног, и раскрыться за спиной. Ну и человек, в итоге, снижается пузом вперёд, что чревато, даже на небольшой скорости снижения на двух куполах.

И про отрицательную высоту уже тоже проходили. Может она быть отрицательной, может... И не только в районе Мёртвого моря. Вопрос, что принимать за ноль. И радар с барометром в этом вопросе часто не согласны. И, если лётчику давление в аэропорту передаёт диспетчер, то кто его передаст космическому аппарату?

Date: 2017-05-26 05:52 am (UTC)
From: [identity profile] antontsau.livejournal.com
Ну погромизм ведь только из этого и состоит! Если поциент не умеет ойподумать, то с чем он тогда в компутеры-то лезет? С мечтой, как его из родного бангалора в калифорнию возьмут, за ум, красоту и скромность?

Date: 2017-05-26 06:03 am (UTC)
From: [identity profile] iv-an-ru.livejournal.com
Ну конструирование ведь только из этого и состоит! Если поциент не умеет ойподумать, то ему дорога в чертёжники-техники максимум. В этом смысле конструирование от программирования не отличается ничем, это я вам говорю как не самый плохой конструктор и не самый плохой программист :)

Date: 2017-05-26 06:09 am (UTC)
From: [identity profile] liendain.livejournal.com
А на Марсе используют барометр для измерения высоты? Вроде бы, там сезонные колебания давления (за счёт намерзания/испарения полярных шапок) таковы, что принять какое-то его значение за "стандартное" должно быть проблематично...

Date: 2017-05-26 06:10 am (UTC)
From: [identity profile] antontsau.livejournal.com
не. В конструировании можно сделать, потыкать пальцем, послушать как хрустит и посмотреть как шатается и трескается. Очень мало поделок идут сразу из моска на компутер и в продакшн, не проходя стадии посмотреть что за говно мы сделали.

Date: 2017-05-26 06:17 am (UTC)
From: [identity profile] suvorow-.livejournal.com
Всё остальное, включая радиолокатор, глючит ещё сильнее, раз уж вы не можете определить вертикаль...

Date: 2017-05-26 06:30 am (UTC)
From: [identity profile] biglebowsky.livejournal.com
1) Спасибо за ссылку на исходник отчета.

2) Проектировщики совершенно зря "завязали" всю систему посадки на единственный гироскопический датчик вертикали, причем логика посадки требовала, чтобы этот дачик работал АБСОЛЮТНО идеально.

3) Обалдеть, фантастика какая-то, до какой степени вы неправильно поняли отчет и сколько отсебятины понапридумывали!!!

- Проблему вызвали колебания по тангажу, а не вращение вокруг вертикальной оси.

- Датчик именно что выдал информацию о "зашкаливании", что привело к неправильному вычислению вертикали. (Угол получался численным интегрированием угловой скорости).

- Re: "При дальнейшем расчете высоты (через угловые координаты = вектор направления движения и скорость) "
Нихрена. Высота рассчитывалась как "расстояние по радару * косинус угла между вертикалью и направлением антенны". Направление антенны было оценено неправильно.

- Re: "Разумеется, там предусмотрена проверка: если ИНС выдает сигнал "зашкал" 5 секунд"
Там было другое. Если сигнал " по высотомеру" очень странный (предположительно ошибочный), то ждать 5 секунд (надеясь на улучшение) , а потом все равно передавать управление на этот глючный сигнал. Потому как посадка иным спосбом в этой схеме АБСОЛЮТНО невозможна.

- Re: "Там не просто радиовысотомер, а допплеровский. Что означает: высотомер выдает не абсолютное значение высоты, а ее изменение. Что означает: высотомер выдает не абсолютное значение высоты, а ее изменение. Соответственно, чтобы работать по высотомеру - нужно знать "точку отсчета". В качестве которой было взято... правильно, вышеупомянутое отрицательное значение высоты"
Ну у Вас и фантазия!!! Это ж надо такое придумать :-)))

- Re: "Выключение происходит, когда ... равны нулю"
Нет. Когда полная энергия (кинетическая + потенциальная) меньше некой пороговой величины.
Edited Date: 2017-05-26 06:35 am (UTC)

Date: 2017-05-26 06:50 am (UTC)
From: [identity profile] simsun.livejournal.com
Мне кажется после вырисовывания окончательной блок схемы всего процесса, нужно приглашать профильных студентов на мероприятие по типу... пусть будет хакатон... и закрыть глаза, что у некоторых с собой будет xxxxxxxx (роскомнадзор) :) Напридумывают вплоть до квантовых флуктуаций что может случиться :)))

Date: 2017-05-26 07:20 am (UTC)
From: [identity profile] atelman.livejournal.com
Совершенно верно. Работал в конторе, где люди писали некий финансово-зависимый софт. Казалось бы, бабло (большое) требует сверх внимательности, сверх баг-чекинга. А как результат, у них сидел отдельный человек, который правил значения в базе руками...
Кусок диалога с самодовольным мальчиком-программистом из той конторы многое проясняет:

Я - Написание программы же начинается с постановки задачи "что программа должна делать" и "что получится в итоге".
Он - Да ты ничего не понимаешь в программировании. Написание программы начинается с построения модели базы данных.

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

Date: 2017-05-26 07:23 am (UTC)
From: [identity profile] dimrych.livejournal.com
Вывод напрашивается философский. Чем лучше обратная связь, тем лучше.

Аналогия: черные ящики. Не всегда находятся, не всегда расшифровываются.

Date: 2017-05-26 07:27 am (UTC)
From: [identity profile] p2004r.livejournal.com
Что вы все хотите исполняли конкретно эту часть проекта _румыны_. :)
Page 1 of 7 << [1] [2] [3] [4] [5] [6] [7] >>

Profile

engineering_ru: (Default)
Инженерия

December 2025

S M T W T F S
 123456
78910111213
14151617181920
2122232425 2627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 8th, 2026 10:49 am
Powered by Dreamwidth Studios