Comments 53
if( altitude < 0.0f )
{
jettisonParachute();
engageLandingEngines();
}
+1
Это шутка?
-1
Если высота меньше 0, то там и без дополнительных программ и парашют отстрелит, и двигатели запустит. На пару сотен метров запустит, в разные стороны.
+9
Какое еще море? Насколько сегодня известно, если оно там и есть, то подземное (Море Южное не считается).
А значит: «ниже уровня моря» = «ниже уровня поверхности». =)
А значит: «ниже уровня моря» = «ниже уровня поверхности». =)
0
А где сказано, что в расчётах использовался «уровень моря»? Насколько я понял, речь идёт о радиовысотомере, дающем абсолютное значение до препятствия (поверхности) и гироскопе, дающем угловое отклонение.
+1
if( altitude < 10.0f )
Отстрел предполагался на высоте несколько метров.
0
переполнение знаковой переменной?
+2
Было же уже на F-16, опять на те же грабли?
+1
Извиняюсь за оффтоп, а можно ссылку на статью о F-16? Не один раз слышал эту историю, но поиск нормальных источников не выдает, только упоминания на всякий ресурсах в комментариях.
0
http://www.orator.ru/stories_istorii_o.html
Об ошибках деления на ноль
Фирма Motorola испытывала новый процессор для автопилота на истребителе в Израиле. Всё было отлажено. Пилоты на испытаниях отправились «огибать рельеф» с севера до юга Израиля. Истребитель прекрасно пролетел на автопилоте над равнинной частью, над горной частью, над долиной реки Иордан и приближался к Мёртвому морю. Однако при подлете к нему неожиданно происходит общий сброс процессора, автопилот выключается на полном ходу, пилоты переходят на ручное управление и сажают истребитель.
Процессор отправили на доработку и тестирование. Все тесты прошли снова без сбоев. Снова начали реальную проверку. Истребитель пролетел над всеми территориями, но при подлете к Мёртвому морю ситуация повторилась: общий сброс, выключение автопилота, ручная посадка.
Длительные тесты не могли выявить никаких изъянов. После продолжительных попыток было найдено, что программы автопилота при вычислении параметров управления по глубоко научным секретным формулам производили деление на значение текущей высоты истребителя над уровнем океана. При подлете к Мёртвому морю высота над уровнем океана становилась нулевой (Мёртвое море расположено ниже уровня океана), и процессор при делении на ноль давал общий сброс. До этого случая никому не приходило в голову, что самолеты могут летать ниже уровня океана…
Фирма Motorola испытывала новый процессор для автопилота на истребителе в Израиле. Всё было отлажено. Пилоты на испытаниях отправились «огибать рельеф» с севера до юга Израиля. Истребитель прекрасно пролетел на автопилоте над равнинной частью, над горной частью, над долиной реки Иордан и приближался к Мёртвому морю. Однако при подлете к нему неожиданно происходит общий сброс процессора, автопилот выключается на полном ходу, пилоты переходят на ручное управление и сажают истребитель.
Процессор отправили на доработку и тестирование. Все тесты прошли снова без сбоев. Снова начали реальную проверку. Истребитель пролетел над всеми территориями, но при подлете к Мёртвому морю ситуация повторилась: общий сброс, выключение автопилота, ручная посадка.
Длительные тесты не могли выявить никаких изъянов. После продолжительных попыток было найдено, что программы автопилота при вычислении параметров управления по глубоко научным секретным формулам производили деление на значение текущей высоты истребителя над уровнем океана. При подлете к Мёртвому морю высота над уровнем океана становилась нулевой (Мёртвое море расположено ниже уровня океана), и процессор при делении на ноль давал общий сброс. До этого случая никому не приходило в голову, что самолеты могут летать ниже уровня океана…
+3
Кому в голову пришло измерять высоту знаковой переменной?
Вариант падения в расщелину или глубокий кратер?
Вариант падения в расщелину или глубокий кратер?
-2
В кратер или расщелину, а не проще ли тогда датчик до поверхности поставить, а не до условного уровня моря?
0
есть байка про полет самолете ниже уровня моря. Когда самолет автоматом делает полубочку при пересечении нулевой отметки.
0
При пересечении экватора это было (по ссылке ещё несколько забавных багов).
+1
из статьи — оригинала(по ссылке от автора ни слова об отрицательном значении я не нашел, зато она ссылается на эту статью)
Произошло переполнение на уровне датчика угловых скоростей, очевидно, в части, отвечающей за интегрирование, которая выдает уже сигнал углового положения. Что там дальше про дополнительную и неожиданную секунду, в течение которой датчик выдавал неправильное значение — это я не понял.
Но переполнение — это да, опять как на F16
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
+3
Судя по всему, предполагалось, что такие всплески могут быть, но ожидалось, что они будут по продолжительности менее секунды.
+2
Похоже аппарат закрутился быстрее, чем предполагалось. Имхо обороты были за пределами измерения гироскопов, переполнение было воспринято как минус.
+1
Я эту мысль сначала удалил из своего комментария, но сейчас я соглашусь с вами.
С другой стороны это может означать, что авария произошла не из-за датчика и переполнения, а из-за возникшей раскрутки аппарата на нерасчетных угловых скоростях. Датчик конечно не прав, но раскрутка при снижении на парашюте — вещь опасная сама по себе, и могла привести к аварии и при отсутствии переполнения.
С другой стороны это может означать, что авария произошла не из-за датчика и переполнения, а из-за возникшей раскрутки аппарата на нерасчетных угловых скоростях. Датчик конечно не прав, но раскрутка при снижении на парашюте — вещь опасная сама по себе, и могла привести к аварии и при отсутствии переполнения.
0
По идее закрутка должна была бы быть прекращена.
По крайней мере так я видел в описании советских посадочных аппаратов.(в видео показано с 2 минут).
Возможно не сработала или частично сработала система останавливающая закрутку. По идее в телеметрии вращение было. И более точно будет рассказано по завершении расследования.
По крайней мере так я видел в описании советских посадочных аппаратов.(в видео показано с 2 минут).
Возможно не сработала или частично сработала система останавливающая закрутку. По идее в телеметрии вращение было. И более точно будет рассказано по завершении расследования.
0
Высоту измерительный модуль выдал со знаком «минус», как будто устройство находится ниже поверхности Марса.
Такие исключения надо проверять. Да и смысл отстреливать парашюты и включать посадочные двигатели, если ты уже «в планете»?
0
Да и смысл отстреливать парашюты и включать посадочные двигатели, если ты уже «в планете»?
При не понятной ситуации и не открытом парашюте — немедленно открой парашют. Этот нехитрый совет бы помог, если бы датчик отказал в середине «приземления».
0
Да и смысл отстреливать парашюты и включать посадочные двигатели, если ты уже «в планете»?Конечный автомат же. Если условие выполнено, переходим к следующему состоянию. Вот, видимо, и получилось, что за короткий промежуток времени и парашют сбросил, и двигателями пореветь успел, и аппаратуру для работы на поверхности включил.
+1
Че-то я не понял, как это он гироскопом измерял высоту?
+2
В Википедии об этом есть статья «Инерциальная навигация»
0
На сколько я понял, гироскопом он измерял угол, под которым смотрит в поверхность, а альтиметром расстояние до неё.
Но, в момент отстрела парашюта модуль закрутило на слишком долгое время, инерциальная система «зашкалила» и стала выдавать неправильный угол.
В итоге высота стала рассчитываться не верно аж до минусовых значений.
Но это только моё мнение, может я и не прав.
Как-то так
Но, в момент отстрела парашюта модуль закрутило на слишком долгое время, инерциальная система «зашкалила» и стала выдавать неправильный угол.
Как-то так
В итоге высота стала рассчитываться не верно аж до минусовых значений.
Но это только моё мнение, может я и не прав.
+1
Типа программисты накапливали угол так:
а не так:
Но это ж как должно было закрутить, чтобы float переполнился или тригонометрические функции стали выдавать результат с существенной ошибкой…
fi += delta_fi;
а не так:
fi = fract((fi + delta_fi) / 360.0f) * 360.0f;
Но это ж как должно было закрутить, чтобы float переполнился или тригонометрические функции стали выдавать результат с существенной ошибкой…
-1
Нигде вроде не написано было, что ошибка программная.
Например, при раскрытии парашюта могло тряхнуть так, что дельта как раз и упёрлась в ограничение и суммарная ошибка быстро накопилась в интеграторе. Без деталей можно ещё долго гадать. Скорее всего, позже более подробный отчёт опубликуют. Сейчас это вроде как предварительное заключение.
Например, при раскрытии парашюта могло тряхнуть так, что дельта как раз и упёрлась в ограничение и суммарная ошибка быстро накопилась в интеграторе. Без деталей можно ещё долго гадать. Скорее всего, позже более подробный отчёт опубликуют. Сейчас это вроде как предварительное заключение.
0
Кстати, да:
“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.
+1
Сильно не уверен, что в контроллере аппарата есть float
Скорей отмасштабированное целое…
Скорей отмасштабированное целое…
0
Не знаю насчет того компьютера, что управлял спуском(RTPU), но в другом компьютере(CTPU) стоял процессор LEON на базе SPARC, такой же стоял и в высотном радаре. У них есть FPU, поэтому я удивлюсь, если в 2-ух из трех компьютеров есть float, а в третьем нет.
http://spaceflight101.com/exomars/schiaparelli-edm/
http://spaceflight101.com/exomars/schiaparelli-edm/
0
Для бортовых самописцев там места обычно не хватает?
-5
Да, абсолютно не понятно, почему на посадочном модуле тупо не поставили радиовысотомер…
Надеюсь, в будущем эту ошибку учтут.
Надеюсь, в будущем эту ошибку учтут.
0
Радиовысотомер там тупо был:
Но, на сколько я понимаю, сам высотомер может намерить что угодно, если аппарат кувыркается, по-этому его дополняли инерциальной системой, которая быстро зашкалила из-за слишком долгого вращения и высота посчиталась неверно. Но всё равно до конца не понятно.
As Schiaparelli descended under its parachute, its radar Doppler altimeter functioned correctly...
Но, на сколько я понимаю, сам высотомер может намерить что угодно, если аппарат кувыркается, по-этому его дополняли инерциальной системой, которая быстро зашкалила из-за слишком долгого вращения и высота посчиталась неверно. Но всё равно до конца не понятно.
0
блок, который измеряет угловые скорости, дал основной системе управления неправильные данные о высоте,
Странно, Муму
написал Тургенев, а памятник поставили Пушкину.
+3
А мне вот интересно, что потом происходит с тем человеком, кто допустил подобный баг? Это же определенный участок кода, а не какой-то электронный блок, который делала куча народа. Ну ладно, пусть не 1 человек, двое скажем.
0
Он больше его не допускает. Если там были тесты, которые по ТЗ говорили «блок должен определять угол к поверхности после окончания вращения зонда», а зонд вращался, то формально ТЗ соблюдено и код написан верно. Если условия не соблюдены, то должен был сработать assert и… программа упасть? Так она и упала, прямо на Марс. Ну разве что лог на Землю отправить — «я не знаю где я, я не знаю кто я», но судя по результатам что-то такое и пришло.
+1
Тут вобщем-то вся команда ответственна. Не в конкретном баге дело, а в допущениях которые как оказалось в реальности были превышены. В следующем ТЗ это учтут.
А собственно и электроника и код отработали как надо(в пределах заранее оговоренных возможностей) — а их просматривали и утверждали сотни человек а не два.
Собственно, потерять аппарат могли и из-за пробившего его метеора…
Интересное тут то что выяснили причину и постараются в будущем её избежать. Потеря аппарата конечно печальна но это не конец всей миссии, а только небольшой её части.
А собственно и электроника и код отработали как надо(в пределах заранее оговоренных возможностей) — а их просматривали и утверждали сотни человек а не два.
Собственно, потерять аппарат могли и из-за пробившего его метеора…
Интересное тут то что выяснили причину и постараются в будущем её избежать. Потеря аппарата конечно печальна но это не конец всей миссии, а только небольшой её части.
0
Читал байку про одного программиста, который сделал баг, стоивший конторе (условно) миллион долларов. Его позвали к начальству, и он уже решил, что его в лучшем случае уволят, а то и расстреляют. Но начальник просто попросил его быть аккуратней. Удивлённый программист спросил:
— А вы что, не уволите меня?
— С чего это вдруг?! Мы же только что потратили на твоё обучение миллион долларов!
— А вы что, не уволите меня?
— С чего это вдруг?! Мы же только что потратили на твоё обучение миллион долларов!
+2
Была здесь статья про сотрудника Google — https://geektimes.ru/post/252718/
-1
Детский сад какой-то.
Время падения аппарата более-менее точно известно.
И если он должен падать, например, 5 минут, а высотомер (вся система в совокупности, радар, инерциалка) на первой минуте выдает отрицательную высоту, то нужно просто игнорировать его показания. Спокойно продолжать отсчитывать положенные 5 минут. Если высотомер заработает — прекрасно, все идет по плану. Если нет, то через 5 минут раскрываем парашют и ждем удара.
Ну не должен парашют еще в космосе раскрываться, не должен, не при каких обстоятельствах!
Время падения аппарата более-менее точно известно.
И если он должен падать, например, 5 минут, а высотомер (вся система в совокупности, радар, инерциалка) на первой минуте выдает отрицательную высоту, то нужно просто игнорировать его показания. Спокойно продолжать отсчитывать положенные 5 минут. Если высотомер заработает — прекрасно, все идет по плану. Если нет, то через 5 минут раскрываем парашют и ждем удара.
Ну не должен парашют еще в космосе раскрываться, не должен, не при каких обстоятельствах!
+1
Schiaparelli создавался Итальянским космическим агентством, а ответственным за его испытания перед запуском выступала компания Arca Space, которая не провела воздушное тестирование. Итальянцы после крушения аппарата обвинили румынов в ненадлежащей проверке Schiaparelli. На это в Arca Space им ответили, что Европейское космическое агентство само рекомендовало им ограничиться компьютерной симуляцией вхождения аппарата в марсианскую атмосферу и не проводить опыты с прототипом Schiaparelli. Между тем изначально тестировать десантный модуль планировалось в Швеции, однако из экономии испытания доверили малоизвестной Arca Space.
https://lenta.ru/news/2016/11/25/exomars/
+1
Самая мякотка из статьи по ссылке:
Россиянка гадит.
Румынская компания Arca Space обвинила Россию в невозможности проведения испытаний в атмосфере Земли десантного модуля Schiaparelli перед его запуском к Марсу, который состоялся весной 2016 года. Об этом сообщает Румынское национальное агентство новостей Agerpres.
«Мы сделали все возможное, и тот тест, о котором они (Итальянское космическое агенство — прим. «Ленты.ру») говорят, заставил бы нас совершить полет вблизи российской военной базы в Севастополе. В то время Россия только что аннексировала Крым, и мы могли бы спровоцировать конфликт между Россией и НАТО», — ответил Думитру Попеску, руководитель Arca Space, на претензии со стороны Итальянского космического агентства.
Россиянка гадит.
0
Sign up to leave a comment.
Articles
Change theme settings
ЕКА: марсианский зонд Schiaparelli разбился из-за неправильного определения высоты при спуске