Как стать автором
Обновить

Комментарии 53

Это шутка?
Если высота меньше 0, то там и без дополнительных программ и парашют отстрелит, и двигатели запустит. На пару сотен метров запустит, в разные стороны.
Ну ведь аппарат может быть ниже уровня моря, но выше уровня поверхности. Есть старая история про истребитель, у которого ПО заглючило в районе Мёртвого моря.
PS вот тут ниже
Какое еще море? Насколько сегодня известно, если оно там и есть, то подземное (Море Южное не считается).
А значит: «ниже уровня моря» = «ниже уровня поверхности». =)
А где сказано, что в расчётах использовался «уровень моря»? Насколько я понял, речь идёт о радиовысотомере, дающем абсолютное значение до препятствия (поверхности) и гироскопе, дающем угловое отклонение.
if( altitude < 10.0f )

Отстрел предполагался на высоте несколько метров.
There's No Time To Calculate!
altitude = RadarDistance*cos(AngleToNormal)

Именно последний зашкалил. И его что фильтруй, что не фильтруй — ориентация всё рано утеряна.
Было же уже на F-16, опять на те же грабли?
Извиняюсь за оффтоп, а можно ссылку на статью о F-16? Не один раз слышал эту историю, но поиск нормальных источников не выдает, только упоминания на всякий ресурсах в комментариях.
http://www.orator.ru/stories_istorii_o.html
Об ошибках деления на ноль

Фирма Motorola испытывала новый процессор для автопилота на истребителе в Израиле. Всё было отлажено. Пилоты на испытаниях отправились «огибать рельеф» с севера до юга Израиля. Истребитель прекрасно пролетел на автопилоте над равнинной частью, над горной частью, над долиной реки Иордан и приближался к Мёртвому морю. Однако при подлете к нему неожиданно происходит общий сброс процессора, автопилот выключается на полном ходу, пилоты переходят на ручное управление и сажают истребитель.

Процессор отправили на доработку и тестирование. Все тесты прошли снова без сбоев. Снова начали реальную проверку. Истребитель пролетел над всеми территориями, но при подлете к Мёртвому морю ситуация повторилась: общий сброс, выключение автопилота, ручная посадка.

Длительные тесты не могли выявить никаких изъянов. После продолжительных попыток было найдено, что программы автопилота при вычислении параметров управления по глубоко научным секретным формулам производили деление на значение текущей высоты истребителя над уровнем океана. При подлете к Мёртвому морю высота над уровнем океана становилась нулевой (Мёртвое море расположено ниже уровня океана), и процессор при делении на ноль давал общий сброс. До этого случая никому не приходило в голову, что самолеты могут летать ниже уровня океана…

Кому в голову пришло измерять высоту знаковой переменной?
Вариант падения в расщелину или глубокий кратер?
В кратер или расщелину, а не проще ли тогда датчик до поверхности поставить, а не до условного уровня моря?
есть байка про полет самолете ниже уровня моря. Когда самолет автоматом делает полубочку при пересечении нулевой отметки.
из статьи — оригинала(по ссылке от автора ни слова об отрицательном значении я не нашел, зато она ссылается на эту статью)
However, saturation – maximum measurement – of the Inertial Measurement Unit (IMU) had occurred shortly after the parachute deployment. The IMU measures the rotation rates of the vehicle. Its output was generally as predicted except for this event, which persisted for about one second – longer than would be expected.

Произошло переполнение на уровне датчика угловых скоростей, очевидно, в части, отвечающей за интегрирование, которая выдает уже сигнал углового положения. Что там дальше про дополнительную и неожиданную секунду, в течение которой датчик выдавал неправильное значение — это я не понял.

Но переполнение — это да, опять как на F16
Судя по всему, предполагалось, что такие всплески могут быть, но ожидалось, что они будут по продолжительности менее секунды.
Похоже аппарат закрутился быстрее, чем предполагалось. Имхо обороты были за пределами измерения гироскопов, переполнение было воспринято как минус.
Я эту мысль сначала удалил из своего комментария, но сейчас я соглашусь с вами.

С другой стороны это может означать, что авария произошла не из-за датчика и переполнения, а из-за возникшей раскрутки аппарата на нерасчетных угловых скоростях. Датчик конечно не прав, но раскрутка при снижении на парашюте — вещь опасная сама по себе, и могла привести к аварии и при отсутствии переполнения.
По идее закрутка должна была бы быть прекращена.
По крайней мере так я видел в описании советских посадочных аппаратов.(в видео показано с 2 минут).

Возможно не сработала или частично сработала система останавливающая закрутку. По идее в телеметрии вращение было. И более точно будет рассказано по завершении расследования.
Высоту измерительный модуль выдал со знаком «минус», как будто устройство находится ниже поверхности Марса.

Такие исключения надо проверять. Да и смысл отстреливать парашюты и включать посадочные двигатели, если ты уже «в планете»?
Да и смысл отстреливать парашюты и включать посадочные двигатели, если ты уже «в планете»?

При не понятной ситуации и не открытом парашюте — немедленно открой парашют. Этот нехитрый совет бы помог, если бы датчик отказал в середине «приземления».
Открыть парашют и отстрелить его — диаметрально противоположные ситуации
Да и смысл отстреливать парашюты и включать посадочные двигатели, если ты уже «в планете»?
Конечный автомат же. Если условие выполнено, переходим к следующему состоянию. Вот, видимо, и получилось, что за короткий промежуток времени и парашют сбросил, и двигателями пореветь успел, и аппаратуру для работы на поверхности включил.
Че-то я не понял, как это он гироскопом измерял высоту?
В Википедии об этом есть статья «Инерциальная навигация»
На сколько я понял, гироскопом он измерял угол, под которым смотрит в поверхность, а альтиметром расстояние до неё.
Как-то так


Но, в момент отстрела парашюта модуль закрутило на слишком долгое время, инерциальная система «зашкалила» и стала выдавать неправильный угол.
Как-то так


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

Но это только моё мнение, может я и не прав.
Типа программисты накапливали угол так:
fi += delta_fi;

а не так:
fi = fract((fi + delta_fi) / 360.0f) * 360.0f;

Но это ж как должно было закрутить, чтобы float переполнился или тригонометрические функции стали выдавать результат с существенной ошибкой…
Нигде вроде не написано было, что ошибка программная.
Например, при раскрытии парашюта могло тряхнуть так, что дельта как раз и упёрлась в ограничение и суммарная ошибка быстро накопилась в интеграторе. Без деталей можно ещё долго гадать. Скорее всего, позже более подробный отчёт опубликуют. Сейчас это вроде как предварительное заключение.
Кстати, да:
“This is still a very preliminary conclusion of our technical investigations,” says David Parker, ESA’s Director of Human Spaceflight and Robotic Exploration. “The full picture will be provided in early 2017 by the future report of an external independent inquiry board, which is now being set up, as requested by ESA’s Director General, under the chairmanship of ESA’s Inspector General.
Сильно не уверен, что в контроллере аппарата есть float
Скорей отмасштабированное целое…
Не знаю насчет того компьютера, что управлял спуском(RTPU), но в другом компьютере(CTPU) стоял процессор LEON на базе SPARC, такой же стоял и в высотном радаре. У них есть FPU, поэтому я удивлюсь, если в 2-ух из трех компьютеров есть float, а в третьем нет.
http://spaceflight101.com/exomars/schiaparelli-edm/
Для бортовых самописцев там места обычно не хватает?
Эм… да, так-то следующий марсоход мог бы сгонять к этому и забрать самописец.
Или блинчик из самописца (сувенир). Тут как повезёт.
Если Вы под бортовыми самописцами понимаете всевозможную телеметрию, то её там полно.
Да, абсолютно не понятно, почему на посадочном модуле тупо не поставили радиовысотомер…

Надеюсь, в будущем эту ошибку учтут.
Радиовысотомер там тупо был:
As Schiaparelli descended under its parachute, its radar Doppler altimeter functioned correctly...

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

Странно, Муму написал Тургенев, а памятник поставили Пушкину.

А мне вот интересно, что потом происходит с тем человеком, кто допустил подобный баг? Это же определенный участок кода, а не какой-то электронный блок, который делала куча народа. Ну ладно, пусть не 1 человек, двое скажем.
Он больше его не допускает. Если там были тесты, которые по ТЗ говорили «блок должен определять угол к поверхности после окончания вращения зонда», а зонд вращался, то формально ТЗ соблюдено и код написан верно. Если условия не соблюдены, то должен был сработать assert и… программа упасть? Так она и упала, прямо на Марс. Ну разве что лог на Землю отправить — «я не знаю где я, я не знаю кто я», но судя по результатам что-то такое и пришло.
Тут вобщем-то вся команда ответственна. Не в конкретном баге дело, а в допущениях которые как оказалось в реальности были превышены. В следующем ТЗ это учтут.
А собственно и электроника и код отработали как надо(в пределах заранее оговоренных возможностей) — а их просматривали и утверждали сотни человек а не два.
Собственно, потерять аппарат могли и из-за пробившего его метеора…
Интересное тут то что выяснили причину и постараются в будущем её избежать. Потеря аппарата конечно печальна но это не конец всей миссии, а только небольшой её части.
Читал байку про одного программиста, который сделал баг, стоивший конторе (условно) миллион долларов. Его позвали к начальству, и он уже решил, что его в лучшем случае уволят, а то и расстреляют. Но начальник просто попросил его быть аккуратней. Удивлённый программист спросил:
— А вы что, не уволите меня?
— С чего это вдруг?! Мы же только что потратили на твоё обучение миллион долларов!
Детский сад какой-то.
Время падения аппарата более-менее точно известно.
И если он должен падать, например, 5 минут, а высотомер (вся система в совокупности, радар, инерциалка) на первой минуте выдает отрицательную высоту, то нужно просто игнорировать его показания. Спокойно продолжать отсчитывать положенные 5 минут. Если высотомер заработает — прекрасно, все идет по плану. Если нет, то через 5 минут раскрываем парашют и ждем удара.

Ну не должен парашют еще в космосе раскрываться, не должен, не при каких обстоятельствах!
Парашут уже сбросили, дальнейший спуск на движках.
Если игнорировать показания — то всё равно разобьётся, потому как не будет знать свою ориентацию.
Schiaparelli создавался Итальянским космическим агентством, а ответственным за его испытания перед запуском выступала компания Arca Space, которая не провела воздушное тестирование. Итальянцы после крушения аппарата обвинили румынов в ненадлежащей проверке Schiaparelli. На это в Arca Space им ответили, что Европейское космическое агентство само рекомендовало им ограничиться компьютерной симуляцией вхождения аппарата в марсианскую атмосферу и не проводить опыты с прототипом Schiaparelli. Между тем изначально тестировать десантный модуль планировалось в Швеции, однако из экономии испытания доверили малоизвестной Arca Space.

https://lenta.ru/news/2016/11/25/exomars/
Самая мякотка из статьи по ссылке:
Румынская компания Arca Space обвинила Россию в невозможности проведения испытаний в атмосфере Земли десантного модуля Schiaparelli перед его запуском к Марсу, который состоялся весной 2016 года. Об этом сообщает Румынское национальное агентство новостей Agerpres.

«Мы сделали все возможное, и тот тест, о котором они (Итальянское космическое агенство — прим. «Ленты.ру») говорят, заставил бы нас совершить полет вблизи российской военной базы в Севастополе. В то время Россия только что аннексировала Крым, и мы могли бы спровоцировать конфликт между Россией и НАТО», — ответил Думитру Попеску, руководитель Arca Space, на претензии со стороны Итальянского космического агентства.

Россиянка гадит.
Я б еще поверил, например, про шведов, у которых не получилось испытать по некой причине на Балтике, но если это итальянцы и румыны, то я больше поверю, что они хотели друг друга… ать. И приведенные в статье «а мы сказали, а они сказали, а эти помешали» идеально подходят под это гипотезу.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории