Помните историю о том, как из-за одной переменной космическая ракета взорвалась в воздухе после старта? На этот раз ошибки в коде не было, но результат получился тот же самый: навсегда утрачен зонд с научным оборудованием на сумму 125 миллионов долларов.
Что произошло
История начинается в 1996 году, когда в США запускали ракету-носитель Ariane-5. Она пролетела 40 секунд, у неё случился программный сбой, и ракета взорвалась в воздухе. С тех пор в НАСА стали более тщательно проверять код и тестировать его в различных условиях.
Два года спустя НАСА запустило научный космический зонд Mars Climate Orbiter — он должен был изучать климат Марса, а заодно работать вспомогательным маяком для навигации других научных зондов.
В течение 9 месяцев полёта всё было отлично — «Орбитер» летел к Марсу по расчётной траектории. Но при заходе на орбиту связь с зондом была потеряна, а сам он распался на куски в атмосфере и упал на планету.
В чём причина
Расследование комиссии показало, что зонд должен был начать торможение перед заходом на орбиту на высоте 110 километров от поверхности Марса, но он начал тормозить только на 57 километрах. Из-за этого зонд вошёл в атмосферу планеты со слишком высокой скоростью и разрушился от перегрузок.
Когда комиссия стала искать причины, которые вызвали такое позднее торможение, то сначала все подумали про ошибки в коде — после инцидента с Ariane-5 это была очевидная мысль. Но в коде всё было идеально — ни один модуль управления не выдал ошибку после сотни тестов.
Оказалось, что дело не в коде, а в разных системах измерения. Команда-подрядчик, которая писала софт для модуля управления, использовала в формулах и расчётах метрическую систему, а командный центр в НАСА — английскую (там где футы, дюймы, мили, фунты). Когда настало время корректировки скорости и высоты для выхода на орбиту, зонд ожидал данные в метрах и ньютонах, а получил в футах и фунт-силах. Программисты и менеджеры не согласовали с НАСА стандарты разработки и не проверили, какие именно данные и в каком виде будет получать конкретный модуль.
В итоге вместо 110 000 метров зонд получил от НАСА 360 892 фута. Бортовой компьютер подумал, что лететь ещё долго, и не стал снижать скорость. В итоге зонд снизился на критическую высоту и не выдержал перегрузок.
Сейчас в мире используются две основные системы измерения: международная и английская.
Международной (метрической) системой СИ пользуются почти все страны мира, в том числе и мы с вами. Это значит, что мы измеряем вес в килограммах, силу — в ньютонах, расстояние — в метрах и так далее. Она была разработана как раз для того, чтобы учёные и инженеры из разных стран могли общаться на одном языке, читать и понимать научную документацию друг друга и делиться опытом.
Английская (она же британская имперская) система мер используется только в Великобритании, США, Либерии, Мьянме и немного в Канаде. Вместо метров и сантиметров там футы и дюймы, вместо килограмма — фунты, унции и граны, а вместо литров — галлоны. И так во всём, от измерения давления до температуры. Английская система не лучше и не хуже международной, она просто другая.
Что в итоге
Эта авария постепенно заставила НАСА пересмотреть свой подход к системам измерения. Они поняли, что международные компании-разработчики используют метрическую систему как стандартную для написания кода. Отказаться от подрядчиков НАСА не может, потому что у него нет такого штата высококвалифицированных программистов и инженеров, которые могут написать софт к любому модулю.
В итоге с 2007 года НАСА использует метрическую систему измерений. Вот так невнимательность менеджеров и программистов поменяла стандарт в космической отрасли целой страны.