
▎ 🎮 Pilotar Percy · 📊 Panel de control · 📚 Documentación dbt · 💻 Code source
El origen del proyecto
Hace unos años visité la Cité de l’espace en Toulouse. Allí descubrí que SuperCam, uno de los instrumentos principales del rover Perseverance, fue desarrollado gracias a una colaboración franco-estadounidense: el CNES y el IRAP en Toulouse, junto con el Los Alamos National Laboratory, para la NASA.
Al ver la réplica del rover en movimiento, imaginé una instalación interactiva donde el público pudiera pilotar a Perseverance, seguir su telemetría y explorar las imágenes reales que captura en Marte.
El desafío
Quería construir dos cosas:
- Una experiencia para todo público, fácil de entender en pocos segundos, en francés, y diseñada para un museo o planetario.
- Una verdadera plataforma de datos por detrás, automatizada, probada y reproducible. Ahí es donde entra en juego mi reconversión hacia el data engineering.
La experiencia: pilotar a Percy

- Un rover 3D con física marciana: Gravitación de 3,71 m/s², suspensión rocker-bogie, seis ruedas que giran y se orientan. Se pilota con el teclado (QWERTY y AZERTY).
- Un control de misión con datos reales: La distancia recorrida, la altitud del terreno y la inclinación provienen de los trayectos publicados por la NASA. El tiempo de demora de la luz entre la Tierra y Marte se calcula en vivo a partir de los elementos orbitales del JPL.
- Las cámaras del rover: Mastcam-Z, Navcam, Hazcam y WATSON: un clic activa el obturador y un flash, revelando una foto real a color tomada en Marte, con el sol y el número de días transcurridos.
- Bilingüe: La interfaz está en francés por defecto, con opción a español.

La plataforma de datos

El juego es solo el último eslabón de una pequeña Modern Data Stack, completamente gratuita:
| Capa | Herramienta | Rol |
| Ingesta | dlt | Carga los trayectos y las imágenes brutas de la NASA de forma incremental (cursor en la fecha de recepción, fusión por identificador). |
| Almacén (Data Warehouse) | DuckDB | Un solo archivo, organizado en capas raw, staging, intermediate y marts. |
| Transformación | dbt | Modela los datos y aplica 32 pruebas de calidad, además de un control de frescura de las fuentes. |
| Orquestación | Dagster | Un gráfico de assets único, desde la NASA hasta los archivos del juego, con validaciones bloqueantes y ejecución diaria. |
| Visualización | Observable Framework | Un panel de control estático con los datos de la misión. |
| CI/CD | GitHub Actions + Pages | Pruebas en cada pull request. Todos los días se actualizan los datos y luego se publican el juego, el panel de control y la documentación. |
Un humano en el flujo: Las reglas de dbt preseleccionan las fotos (color, resolución, sin filtros de calibración). La selección final sigue siendo humana, registrada en un archivo CSV versionado.

Lo que revelaron las pruebas
Las pruebas detectaron problemas reales que eran invisibles a simple vista:
- El odómetro se reiniciaba a cero: Las paradas intermedias de la NASA no incluyen valor de odómetro, lo que hacía caer la gráfica de distancia. Ahora las marts solo conservan las paradas confirmadas.
- Desfase en las marcas de tiempo: La hora de las fotos dependía de la zona horaria de la máquina. Ahora se convierte explícitamente a UTC.
- El orden no era determinista: Dos fotos tomadas en el mismo segundo cambiaban de posición entre ejecuciones, generando commits innecesarios del bot. Se añadió un criterio de desempate (
image_id) para corregir el problema.
Competencias aplicadas
Ingeniería de datos: Ingesta incremental, modelado en capas, pruebas de calidad, orquestación por assets, contratos de datos, CI/CD y salidas deterministas.
Desarrollo: Python, SQL, JavaScript, Three.js, Vite, pruebas de extremo a extremo (E2E) en un navegador headless.
Metodología: Prototipado rápido con Claude Code y posterior industrialización en iteraciones cortas, cada una validada mediante pruebas.
¿Y ahora qué?
Próximo paso: Transformar este prototipo en una instalación real para un museo o planetario e integrar las imágenes de SuperCam, el instrumento que dio origen a esta historia.
¿Trabajas en la Cité de l’espace, en un planetario o en divulgación científica? ¿O estás buscando un perfil en data engineering? Escríbeme, me encantará conversar al respecto.

