Dos desastres, una causa fundamental
Ninguno de los incidentes siguientes fue causado por un número equivocado. Ambos fueron causados por un número correcto sin una unidad asociada, utilizado por alguien que asumió otra distinta. Esa distinción importa: un factor de conversión incorrecto es un error matemático, fácil de detectar comprobando la aritmética. Una etiqueta de unidad ausente o incompatible supera todas las comprobaciones aritméticas, porque todos los números que se multiplican son correctos — el software, la hoja de cálculo y el cálculo se ejecutan exactamente como están escritos. El error reside por completo en lo que una persona asumió que significaba el número.
Septiembre de 1999: un orbitador de Marte llega 169 kilómetros demasiado bajo
El Mars Climate Orbiter partió de la Tierra el 11 de diciembre de 1998, como parte de un programa de la NASA para estudiar la atmósfera y el clima marcianos. Su trayectoria hacia Marte requería pequeñas correcciones de rumbo durante el trayecto y activaciones periódicas de sus propulsores de control de actitud para desaturar las ruedas de reacción de la nave — una tarea rutinaria de mantenimiento, realizada aproximadamente diez veces al día durante los nueve meses y medio completos del viaje.
El software que modelaba el efecto de cada activación de propulsor fue escrito por Lockheed Martin Astronautics, el constructor de la nave, y la especificación de interfaz de software de la misión exigía que produjera el impulso resultante (empuje multiplicado por el tiempo de combustión) en segundos-newton, la unidad del SI. El software terrestre de Lockheed, un archivo llamado SM_FORCES, en cambio escribía sus resultados en segundos-libra-fuerza, el equivalente consuetudinario. Escribía ese archivo en otro, el archivo AMD, que el equipo de navegación del JPL leía como entrada para su modelo de trayectoria — y el modelo del JPL asumía, conforme a la especificación, que los números que leía ya estaban en segundos-newton. Un segundo-libra-fuerza equivale aproximadamente a 4,45 segundos-newton, de modo que cada una de esas activaciones de propulsor, durante nueve meses y medio, se modeló como aproximadamente 4,45 veces más débil que el impulso real que la nave recibió. Nadie lo detectó, porque ambos lados del intercambio eran internamente coherentes: los números de Lockheed eran segundos-libra-fuerza correctos y el modelo del JPL procesaba correctamente cualesquiera números que llegaran como segundos-newton. El formato de archivo no tenía campo de unidad.
La nave estaba programada para pasar a 226 km sobre la superficie marciana al entrar en órbita — lo suficientemente cerca para que funcionara la maniobra, pero lo bastante lejos para permanecer por encima de la atmósfera. Aproximadamente 24 horas antes de la llegada, los datos de seguimiento actualizados (aún basados en el mismo modelo de trayectoria sin corregir) situaron la altitud prevista cerca de 110 km, alarmantemente baja pero todavía, según el entendimiento del equipo en ese momento, por encima de los aproximadamente 80–90 km de altitud en los que las fuerzas atmosféricas se volverían peligrosas. La reconstrucción posterior a la pérdida de la Junta de Investigación del Incidente, usando la última telemetría realmente recibida, situó la altitud real más cerca de 57 km — lo bastante baja como para que el calentamiento y la resistencia atmosféricos probablemente destruyeran la nave o la desviaran por completo hacia una trayectoria de escape fuera de la órbita de Marte. El contacto se perdió a las 09:04:52 UTC del 23 de septiembre de 1999, cuando el orbitador pasó detrás de Marte para la maniobra de inserción; nunca volvió a aparecer. El informe de Fase I de la Junta, publicado el 10 de noviembre de 1999, señaló con claridad la causa fundamental: el software de un equipo producía unidades inglesas donde la especificación de interfaz exigía unidades métricas, y ningún paso de verificación en el proceso de modelado de trayectoria comprobaba las unidades físicas de los datos que consumía, solo su plausibilidad numérica.
Se informa habitualmente de que la propia nave supuso una pérdida de $125 millones — una cifra que no debe confundirse con el coste total de $327,6 millones del programa más amplio Mars Surveyor '98, que también financió el Mars Polar Lander independiente (perdido en otro accidente no relacionado tres meses después). La cifra específica del orbitador es la que debe citarse para este incidente.
Julio de 1983: una cifra de densidad sobrevive en la unidad equivocada
El vuelo 143 de Air Canada, un Boeing 767 en ruta de Montreal a Edmonton el 23 de julio de 1983, se quedó sin combustible a 41.000 pies sobre Red Lake, Ontario, y planeó hasta un aterrizaje de emergencia en una pista de una base aérea desmantelada en Gimli, Manitoba — con 69 personas a bordo y, extraordinariamente, sin víctimas mortales. La causa inmediata fue un indicador de cantidad de combustible averiado; la historia de las unidades explica por qué la tripulación siguió adelante y despegó después de calcular manualmente la carga de combustible.
Este 767 fue uno de los primeros aviones de Air Canada en operar con las unidades métricas que la industria aeronáutica canadiense acababa de adoptar — combustible en kilogramos y litros, no en las libras y galones que la flota más antigua de la aerolínea y sus equipos de tierra habían usado durante décadas. Con el indicador inoperativo, el equipo de tierra midió el combustible que ya había en los depósitos mediante una varilla medidora, una medición mecánica, y convirtió esa lectura en un volumen de 7.682 litros. Para calcular cuánto combustible adicional debían cargar, necesitaban la masa del combustible ya a bordo y usaron un factor de conversión de 1,77 para convertir litros en masa — una cifra real y correcta para la densidad del combustible Jet A-1, pero correcta solo como 1,77 libras por litro. Creyendo que trabajaban en kilogramos por litro, como exigía ahora el resto del proceso de repostaje, la tripulación y el contratista de repostaje trataron 1,77 como si fuera 1,77 kilogramos por litro, una cifra aproximadamente 2,2 veces demasiado alta.
El vuelo necesitaba 22.300 kg de combustible en total. Usando la densidad equivocada, se calculó que 7.682 L ya contenían 13.597 "kilogramos" (en realidad libras), por lo que aún se necesitaban 8.703 "kilogramos" — convertidos de nuevo a volumen usando el mismo factor equivocado, 4.917 L, que fue lo que realmente se bombeó a bordo. Los depósitos contenían 12.599 L de combustible real cuando el avión despegó, con un peso de aproximadamente 10.100 kg a la densidad verdadera de 0,803 kg/L: insuficiente para llegar a Edmonton.
Derivación desarrollada: por qué el déficit no fue aleatorio
La aritmética detrás del error de repostaje de Gimli tiene una propiedad llamativa una vez expresada algebraicamente. Sea V₁ el combustible ya a bordo correctamente medido con la varilla (7.682 L, nunca puesto en duda), ρ la densidad verdadera (0,803 kg/L) y k la relación libras-kilogramos (≈2,20462, puesto que el factor equivocado 1,77 lb/L equivale a ρ × k). La tripulación calculó:
Volumen adicional que cargar, V₂ = [22.300 − V₁×ρ×k] ÷ (ρ×k)
Volumen total cargado, V₁+V₂ = 22.300 ÷ (ρ×k)
V₁ se cancela por completo. La lectura correcta de la varilla nunca importó para el total final — solo el factor de densidad defectuoso lo determinó. Masa real cargada = (V₁+V₂) × ρ = 22.300 ÷ k = 22.300 ÷ 2,20462 ≈ 10.113 kg. Al convertirlo de nuevo a libras, el resultado es casi exactamente 22.300 lb — el objetivo de la tripulación en kilogramos, entregado en libras. No es una coincidencia: siempre que un único factor de conversión de unidades equivocado se aplica de forma coherente a ambos lados de un cálculo de "lo que tengo y lo que aún necesito", el resultado coincide con el número objetivo original, pero medido en la otra unidad. El avión llevaba el número 22.300 — la tripulación simplemente no descubrió qué unidad tenía asociada hasta que los motores se apagaron por falta de combustible.
El capitán Bob Pearson, un piloto de planeador experimentado fuera de su trabajo habitual, usó un resbalón — cruzando los mandos para aumentar la resistencia sin ganar velocidad — para perder altitud en la aproximación final y aterrizar con seguridad el 767 sin potencia. Diez personas sufrieron lesiones leves durante la evacuación; nadie murió. La revisión interna de Air Canada y la Aviation Safety Board (Junta de Seguridad de la Aviación) de la época (predecesora de la actual Transportation Safety Board of Canada (Junta de Seguridad en el Transporte de Canadá)) señalaron el mismo fallo subyacente que el Mars Climate Orbiter sufriría dieciséis años más tarde: un número correcto y un proceso sin comprobación de a qué unidad pertenecía.
Lo que comparten los dos incidentes
| Mars Climate Orbiter | Gimli Glider | |
|---|---|---|
| Unidad equivocada | Segundos-libra-fuerza interpretados como segundos-newton | Libras por litro interpretadas como kilogramos por litro |
| Magnitud de la incompatibilidad | ×4,45 | ×2,20 |
| Dónde se ocultó | Un formato de archivo sin campo de unidad, comprobado dos veces por dos equipos distintos que suponían que el otro usaba la unidad especificada | Una única cifra de densidad, correcta para un sistema de unidades, aplicada dentro de un proceso recién metrificado sin volver a derivarla |
| Qué lo detectó | La propia trayectoria de la nave, demasiado tarde | Los motores, en pleno vuelo, con suficiente altitud para planear |
| Resultado | Pérdida total, sin heridos (sin tripulación) | Avión reparado y devuelto al servicio; sin víctimas mortales |
Ninguno de los fallos necesitó un número erróneo. Ambos necesitaron un número cuya etiqueta nadie comprobó dos veces, precisamente en el punto en que se encontraron dos convenciones de unidades diferentes.