单位混用让 NASA 弄丢火星探测器:一边算牛顿秒,一边给的是磅力秒
配图:AI 生成的概念示意图,非论文原图、真实现场或实验数据。
TL;DR:这是 1999 年的旧事。火星气候探测器(Mars Climate Orbiter)在入轨当天失联,调查委员会认定直接原因是地面软件输出的推进器冲量用了磅力秒,而接口规范和导航软件要求的是牛顿秒,两者差约 4.45 倍。常被引用的损失金额是约 1.25 亿美元;事故并非只有一个人“写错单位”,委员会同样追究了检查与沟通环节的缺失。
时间说明:事情发生在 1999 年 9 月 23 日,距今已二十多年,不是什么新闻。
探测器 1998 年 12 月发射,飞了大约九个月,到火星后要点燃主发动机进入环火轨道。按计划,它应该以约 226 公里的高度飞过近火点。委员会认为,探测器大概只能承受不低于 80 公里的高度。
问题出在飞行中的姿态控制。探测器的反作用轮会越转越快,需要定期用小推进器“卸载”。地面软件要根据这些推进器点火的数据算出冲量,交给导航团队推算轨道。接口规范要求这份数据用牛顿秒,结果软件输出的是磅力秒。1 磅力约等于 4.45 牛顿,所以导航那边把这些小推力的影响低估了约 4.45 倍。
每次误差都不大,但九个月的飞行里不断累积,轨道一点点偏离。事后计算显示,探测器实际会以大约 57 公里的高度掠过火星,远低于它能承受的下限。入轨点火后不久,它失去联系,再没恢复。通常认为它在火星大气中解体或撞向地表。
荒诞的地方在于,征兆其实出现过。导航人员在接近火星时就发现轨道估计与预期对不上,探测器看起来比计划更低,但这些疑虑没有被充分重视,原定的又一次轨道修正也没有执行。调查报告把根源归结为:没有按接口规范执行,缺少对数据的端到端验证,团队之间沟通不足,以及对航天器异常轨迹的警觉不够。NASA 官员当时也公开承认,没有查出这个错误是 NASA 系统工程的失败,而不只是承包商的问题。
这起事故后来成了软件工程课上的经典案例:单位、接口约定和交叉检查,是最不起眼、也最容易出大事的环节。
来源:
- NASA 任务调查委员会第一阶段报告(1999 年 11 月 10 日):llis.nasa.gov
- NASA 任务页面:science.nasa.gov
- FlightGlobal 当年报道:Metric mix-up led to Mars orbiter loss