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


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

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



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


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

Итак, 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 - будем примерно так же разбирать официальный доклад "О причинах появления очередного российско-европейского рукотворного кратера на Марсе", ага.
Date: 26 May 2017 03:00 (UTC)

victor_12: (Default)
From: [personal profile] victor_12
Н-дааа.
Издержки узкой специализации?
Date: 26 May 2017 03:16 (UTC)

From: [personal profile] dr_faksof
И опять все началось с неумения программировать конвейер. А точнее с отсутствия знаний о таких понятиях как "выбег конвейера" и "нет достоверных данных" . Японский телескоп, о котором вы писали ранее, начал свой последний путь по той же причине. И ещё мне кажется что и у японцев и у европейцев каждый отдельно взятый программист понятия не имел откуда берутся и что значат исходные данные и что значат те расчёты что он выполнял.
А чтобы делать те проверки о которых упоминалось- как раз и нужно ПОНИМАТЬ что именно ты вычисляешь. И тут камень в огород руководства проекта - это именно их косяк. Ситуация класическая -подробно описана в книге "Вы конечно шутите, мистер Фейман?", главы про Манхетенский проект. Только там из за секретности, а тут из за лени
Edited Date: 26 May 2017 03:31 (UTC)
Date: 26 May 2017 11:52 (UTC)

fire_wolf: (Default)
From: [personal profile] fire_wolf
Забавное совпадение - я когда читал этот пост, тоже вспоминал Фейнмана, правда другую его книгу.
Я просто как раз несколько дней назад её прочитал, и там большая часть текста посвящена расследованию катастрофы при старте "Челелнджера", в котором Фейнман принимал участие.
И там дело было тоже в нелепой мелочи - резина уплотнительных колец из-за холодной погоды стала менее эластична.
Date: 26 May 2017 05:10 (UTC)

eldhenn: (Default)
From: [personal profile] eldhenn
Хахаха, как смешно, приборы показали, что аппарат вверх ногами, и НИКОМУ НА МАРСЕ НЕ ПРИШЛО В ГОЛОВУ, ЧТО ТАК НЕ БЫВАЕТ!
Усраться можно от смеха.
Date: 26 May 2017 08:04 (UTC)

metaclass: (Default)
From: [personal profile] metaclass
Приборы которые показывают что-то, не сообщая рядом от, насколько этому можно доверять - это явно не для запуска на Марс. Я бы такое дома побоялся включенным оставить.
Date: 26 May 2017 08:11 (UTC)

eldhenn: (Default)
From: [personal profile] eldhenn
Что значит "насколько можно доверять", если дело происходит в атмосфере Марса? У вас программы никогда не вели себя странно, вам не приходилось запускать отладчик, и в процессе отладки понимать, что возникла неучтённая ситуация?
Date: 26 May 2017 08:08 (UTC)

rootadmin: (Default)
From: [personal profile] rootadmin
Ну так в американских военных самолетах - вообще борткомпьютер вис при полете над Мертвым морем - там высота над уровнем моря получается отрицательная.
Date: 26 May 2017 08:11 (UTC)

eldhenn: (Default)
From: [personal profile] eldhenn
Нутупыыые! (c)

(no subject)

From: [personal profile] rootadmin - Date: 26 May 2017 08:50 (UTC) - Expand
Date: 26 May 2017 15:07 (UTC)

dimas: (Default)
From: [personal profile] dimas
Там проблема вроде была не из-за отрицательной высоты, а из-за пересечения нулевой высоты ...

Еще у кого-то самолет переворачивался вверх ногами при пересечении экватора ...

(no subject)

From: [personal profile] baech - Date: 26 May 2017 16:48 (UTC) - Expand

(no subject)

From: [personal profile] dimas - Date: 26 May 2017 16:51 (UTC) - Expand

(no subject)

From: [personal profile] muzzy0 - Date: 26 May 2017 19:55 (UTC) - Expand

(no subject)

From: [personal profile] dimas - Date: 26 May 2017 21:23 (UTC) - Expand

(no subject)

From: [personal profile] aviator9298 - Date: 27 May 2017 19:30 (UTC) - Expand

(no subject)

From: [personal profile] muzzy0 - Date: 28 May 2017 05:53 (UTC) - Expand

(no subject)

From: [personal profile] aviator9298 - Date: 27 May 2017 19:23 (UTC) - Expand
Date: 26 May 2017 05:50 (UTC)

scif_yar: (Default)
From: [personal profile] scif_yar
>> Сдается мне, что году так в 2021, а то и в 2023
-
2020 и потом отдыхать до 2036
https://habrastorage.org/files/0fc/588/20d/0fc58820de17423e9b5a7bae66424cfd.jpg
https://geektimes.ru/post/282562/
Date: 26 May 2017 06:49 (UTC)

konst90: (Default)
From: [personal profile] konst90
В посте по ссылке есть такой абзац:

В принципе, в великие противостояния, когда Марс подходит ближе всего, можно сэкономить еще чуть-чуть топлива, но этой возможностью сейчас уже особо не пользуются. Например, Curiosity запустили к Марсу в 2012 году, когда сближение с Землей было минимальным.

Так что до 2036 можно и не ждать. Экономия там небольшая (прикинул по KSP, у которого орбита Дюны похожая - что-то около 5% разница).

(no subject)

From: [personal profile] scif_yar - Date: 26 May 2017 08:30 (UTC) - Expand

(no subject)

From: [personal profile] konst90 - Date: 26 May 2017 08:36 (UTC) - Expand

(no subject)

From: [personal profile] scif_yar - Date: 26 May 2017 08:37 (UTC) - Expand

(no subject)

From: [personal profile] konst90 - Date: 26 May 2017 08:43 (UTC) - Expand
Date: 26 May 2017 08:09 (UTC)

pritkiy_kaban: (Default)
From: [personal profile] pritkiy_kaban
Вот спасибо, будет что почитать, бездельничая на работе.

ed: эпикфэйл эпикфэйлом, но катастроф, причины которых лежат в недостаточной глубине проработки алгоритмов, избежать бывает нелегко.
Edited Date: 26 May 2017 08:12 (UTC)
Date: 26 May 2017 08:54 (UTC)

eldhenn: (Default)
From: [personal profile] eldhenn
> Бортовое программное обеспечение должно содержать адекватные и достоверные проверки разумности всех входных данных и результатов расчетов.

Четвёртый закон Мерфи отменили, ура!
Date: 26 May 2017 10:21 (UTC)

From: [personal profile] thend
ай-яй-яй!!!!
а обманывать не хорошо.
Во-первых добилось. Марс-3 таки мягко сел. Во-вторых — ЕКА подрядило НПО им.Лавочкина ещё до полёта TGO и Скиапарелли.
удачи!

p.s.
Есть несколько соображений по данному материалу:
1) Еще на "Буране" все отработали. Язык Дракон хорошо это дело исправляет, но он тоже не панацея на все 100 %
2) Я так понимаю, что в программу было заложено всего два варианта события - хорошее и не очень. А вот самый хреновый вариант (хм, как того требует концепция Дракона) заложен не был.
Вот и весь разбор полетов. Не предусмотрели, что делать в случае полной жопы.
Edited Date: 26 May 2017 10:34 (UTC)
Date: 26 May 2017 13:26 (UTC)

From: [personal profile] pewpewaction
> Язык Дракон хорошо это дело исправляет

А где он сейчас используется? Вот про Ada можно нагуглить, а дракон - язык одного проекта. Может, в НПО Лавочкина, или там тоже дилетанты с сишечкой сидят?

> Не предусмотрели, что делать в случае полной жопы.

Пост как раз о том, что для компьютера надо задавать численный значения этой самой жопы. Или дракон это сделает за вас? :) Я, кстати, думаю, что разработчики дракона это сделать могли, для того проекта. А пост про тех, что ни дракон ни правильную модель создать не смогли, облажались
Edited Date: 26 May 2017 13:32 (UTC)

(no subject)

From: [personal profile] scif_yar - Date: 26 May 2017 19:40 (UTC) - Expand

Лавка

From: [personal profile] scif_yar - Date: 27 May 2017 05:09 (UTC) - Expand

Re: Лавка

From: [personal profile] scif_yar - Date: 27 May 2017 08:36 (UTC) - Expand

(no subject)

From: [personal profile] baech - Date: 26 May 2017 22:16 (UTC) - Expand
Date: 26 May 2017 17:01 (UTC)

From: [personal profile] baech
По поводу "ухода в зашкал", тут один известный учёный/инженер продвигает идею Unum -- способа хранения дробных в памяти чисел так, чтобы избежать уходов в зашкал и числовой нестабильности из-за нехватки точости. Сейчас в основном хранят дробные числа в виде числе с плавающей запятой (мантисса+порядок).

Полезно может быть для всяких конвееров и роботов.

Вот тут презентация развития идеи Unum -- SORN (sets of real numbers, множества действительных чисел):
http://www.johngustafson.net/presentations/Multicore2016-JLG.pdf

(no subject)

From: [personal profile] baech - Date: 26 May 2017 21:02 (UTC) - Expand

(no subject)

From: [personal profile] baech - Date: 26 May 2017 22:11 (UTC) - Expand

(no subject)

From: [personal profile] qkowlew - Date: 27 May 2017 08:03 (UTC) - Expand

(no subject)

From: [personal profile] bobojamba - Date: 29 May 2017 01:40 (UTC) - Expand

(no subject)

From: [personal profile] qkowlew - Date: 29 May 2017 07:55 (UTC) - Expand
Date: 26 May 2017 17:13 (UTC)

From: [personal profile] nick_petvi
вот это и называется опыт. реално хрен его знает в каком режиме железяка летит и в какой режим может попасть. всех вариантов не предусмотришь. вот вам пример из "земной" жизни. https://www.mjt.me.uk/posts/falsehoods-programmers-believe-about-addresses/ .
ну и народная цитата и вернера фон брауна:"для успешного запуска ракеты надо совершить 50, 000 ошибок. русские совержили 30, 000, американцы 10, 000. поэтому идем к амеиканцам".

(no subject)

From: [personal profile] baech - Date: 26 May 2017 23:39 (UTC) - Expand

(no subject)

From: [personal profile] qkowlew - Date: 27 May 2017 08:14 (UTC) - Expand
Date: 27 May 2017 05:01 (UTC)

rotbar: (Default)
From: [personal profile] rotbar
А мне, больше всего, допплеровский радиовысотометр понравился! Гениальное, не побоюсь этого слова, инженерное решение!
Date: 30 May 2017 23:53 (UTC)

From: [personal profile] vitalyru
Все прекрасно, но после того как IMU зашкалило от нее толку ни какого. Аппарат перестает знать где верх где низ. Возможно по этому проверки и не сделали, толку то них, за то ненуждных усложнений и потенциальных сбоев наплодить можно. И возможно после зашкала IMU(а по сути отказа) аппарат был обречен с любым софтом.
Причем сценарии отказов и их отработка должны быть в ТЗ, программисты то тут причем?

Особенно понравилось про "датчик высоты", ну и какой вы себе представляете?, был бы надежнее никто бы такой огород городить не стал. Точнее радара пока не придумали.
Page generated 28 Jul 2017 18:55
Powered by Dreamwidth Studios