Архив рубрики ~Лента новостей~

Как ошибка в измерения погубила Mars Climate Orbiter?

Как ошибка в измерения погубила Mars Climate Orbiter?
Как ошибка в измерения погубила Mars Climate Orbiter?

Как ошибка в измерения погубила Mars Climate Orbiter?

23 сентября 1999 года аппарат Mars Climate Orbiter должен был выйти на орбиту Марса. Он почти девять месяцев летел к планете, передавал данные и выполнял команды. Затем начался манёвр торможения…

Расследование показало неприятную причину. Один программный модуль передавал данные в английской системе единиц, а другой считал, что получает их в метрической. Числа выглядели вполне нормально. Только означали совсем не то.

Аппарат прошёл примерно на 170 километров ниже запланированной траектории. Скорее всего, он разрушился в атмосфере Марса. Миссия стоимостью более 300 миллионов долларов закончилась из-за ошибки, которую на Земле исправили бы одной конвертацией.

Не совсем миллиметры против дюймов

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

Наземная программа компании Lockheed Martin записывала импульс двигателей в lbf·s — фунт-секундах. Навигационное программное обеспечение NASA ожидало получить N·s — ньютон-секунды.

Разница между ними — примерно в 4,45 раза. Когда одна система отправляла значение 10, другая читала его не как 10 фунт-секунд, а как 10 ньютон-секунд. Формат файла подходил, число успешно загружалось, программа не падала. Ошибка спокойно продолжала жить.

Почему компьютер ничего не заметил

Для программы единица измерения часто существует лишь в документации. Переменная типа float не знает, что именно в ней хранится: метры, секунды, доллары или температура духовки.

Упрощённо проблемная граница между системами выглядела так:

def update_trajectory(impulse): spacecraft.velocity += impulse / spacecraft.mass

Функция получает число и выполняет расчёт. Передать ей значение в неправильных единицах можно без единого предупреждения. С точки зрения языка программирования всё корректно.

Именно поэтому ошибки в единицах так коварны. Неверный пароль быстро даст отказ. Отсутствующий файл вызовет исключение. А правдоподобное число пройдёт через десятки функций и лишь постепенно испортит результат.

Ошибка накапливалась девять месяцев

Mars Climate Orbiter не свернул к Марсу резко. После небольших включений двигателей навигационная команда пересчитывала траекторию. Каждый раз расчёт получал немного неправильные данные.

Как ошибка в измерения погубила Mars Climate Orbiter?

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

Отклонение росло постепенно. Некоторые специалисты замечали, что расчётная траектория ведёт аппарат слишком низко, но проблема не была вовремя доведена до полноценного расследования. Это уже не история об одной забытой формуле. Это цепочка слабых проверок и неудачной коммуникации.

Почему тесты не спасли миссию

Техническое требование было правильным: данные следовало передавать в метрической системе. Ошибка находилась в реализации одного компонента и не была обнаружена на границе с другим.

Каждая программа могла корректно работать отдельно. Одна честно сохраняла свои значения, другая правильно обрабатывала полученные числа. Ломалась связка между ними — та самая область, которую модульные тесты часто обходят стороной.

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

Как не повторить эту ошибку в обычном проекте

Космические аппараты запускают не все, но похожие ошибки встречаются постоянно. Backend возвращает время в секундах, frontend принимает его за миллисекунды. Один сервис хранит цену в долларах, другой ожидает центы. В базе температура записана в градусах Цельсия, а внешнее API присылает Фаренгейты.

Минимальная защита — указывать единицу прямо в имени: timeout_ms, price_cents, impulse_ns. Конвертацию лучше выполнять в одном заметном месте, а не разбрасывать загадочные множители по проекту.

def lbf_seconds_to_newton_seconds(value): return value * 4.4482216153 impulse_ns = lbf_seconds_to_newton_seconds(impulse_lbf_s) apply_impulse(impulse_ns)

В критических системах стоит идти дальше: использовать отдельные типы для разных величин и запрещать их случайное смешивание. А на границах сервисов проверять не только формат данных, но и допустимый диапазон. Если значение формально корректно, однако физически странно, система должна хотя бы поднять тревогу.

Ошибка была маленькой только в коде

История Mars Climate Orbiter удобна тем, что в ней нет сложной загадки. Не потребовались неизвестный аппаратный дефект или редкое космическое явление. Две команды просто по-разному понимали смысл одного числа.

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

Источник

Оцените материал:

Поделиться
Понравилась статья? Расскажите другим
ВКонтакте
Читайте также
Новости робототехники Искусственный интеллект в БПЛА: преимущества и риски Новости робототехники Новая система искусственного интеллекта поможет машинам более детально понимать трехмерное пространство. Новости робототехники Ростех показал кобота с «умным» зрением Новости робототехники ДНК-роботы могли бы доставлять лекарства и выслеживать вирусы внутри вашего тела. Новости робототехники Человекоподобные роботы, играющие в футбол, забили важный гол в области робототехники, продемонстрировав высокую координацию движений. Архив рубрики ~Коротко из Telegram~ Здравствуйте! Предлагаю участие в совместном конкурсе в Telegram, где вы… Новости робототехники Специалист по робототехнике утверждает, что безопасность человекоподобных роботов должна быть первостепенной задачей. Новости робототехники Приводимый в движение мышечными клетками, тончайший, как бумага, робот плывет по водному лабиринту. Архив рубрики ~Коротко из Telegram~ Поселил ИИ‑агента в чёлку макбука: он слушает мой день и… Архив рубрики ~Коротко из Telegram~ Немой парень впервые признался в любви СИЛОЙ МЫСЛИ — его………… Новости робототехники GM делает ставку на вычислительные технологии и искусственный интеллект, которые, по её мнению, помогут ей конкурировать с китайскими автопроизводителями. Архив рубрики ~Коротко из Telegram~ В легендарный Need for Speed: Underground 2 теперь можно поиграть… Архив рубрики ~Коротко из Telegram~ ИИ придумал пистолет, и его напечатали на 3D-принтере Однозарядный пистолет… Архив рубрики ~Коротко из Telegram~ В Швейцарии с помощью бактерий разработали печатный материал, похожий на бетон Новости робототехники Искусственный интеллект в БПЛА: преимущества и риски Новости робототехники Новая система искусственного интеллекта поможет машинам более детально понимать трехмерное пространство. Новости робототехники Ростех показал кобота с «умным» зрением Новости робототехники ДНК-роботы могли бы доставлять лекарства и выслеживать вирусы внутри вашего тела. Новости робототехники Человекоподобные роботы, играющие в футбол, забили важный гол в области робототехники, продемонстрировав высокую координацию движений. Архив рубрики ~Коротко из Telegram~ Здравствуйте! Предлагаю участие в совместном конкурсе в Telegram, где вы… Новости робототехники Специалист по робототехнике утверждает, что безопасность человекоподобных роботов должна быть первостепенной задачей. Новости робототехники Приводимый в движение мышечными клетками, тончайший, как бумага, робот плывет по водному лабиринту. Архив рубрики ~Коротко из Telegram~ Поселил ИИ‑агента в чёлку макбука: он слушает мой день и… Архив рубрики ~Коротко из Telegram~ Немой парень впервые признался в любви СИЛОЙ МЫСЛИ — его………… Новости робототехники GM делает ставку на вычислительные технологии и искусственный интеллект, которые, по её мнению, помогут ей конкурировать с китайскими автопроизводителями. Архив рубрики ~Коротко из Telegram~ В легендарный Need for Speed: Underground 2 теперь можно поиграть… Архив рубрики ~Коротко из Telegram~ ИИ придумал пистолет, и его напечатали на 3D-принтере Однозарядный пистолет… Архив рубрики ~Коротко из Telegram~ В Швейцарии с помощью бактерий разработали печатный материал, похожий на бетон

Оставить комментарий