Aller au contenu
Tous les projets
2025·Conception et développement full-stackEn production

Globe Satellites

Globe 3D interactif affichant en temps réel la position des satellites actifs en orbite terrestre, conçu pour tourner sur un Raspberry Pi.

Vue 3Globe.glFastAPIPythonWebSocketDockerRaspberry Pi

En bref

  • Positions recalculées toutes les 5 secondes à partir des données TLE Celestrak
  • Propagation orbitale avec Skyfield côté serveur, rendu WebGL côté client
  • Image ARM64 tournant en continu sur un Raspberry Pi 4

Le projet

Plusieurs milliers de satellites actifs tournent au-dessus de nos têtes, et leurs orbites sont publiques. Celestrak diffuse les éléments orbitaux au format TLE (Two-Line Element), qui suffisent à calculer la position de n'importe quel objet à n'importe quel instant.

Globe Satellites affiche ce ballet sur un globe 3D, actualisé toutes les cinq secondes.

Architecture

Navigateur — Globe 3D (Globe.gl)
      ↕ WebSocket
Frontend nginx — fichiers statiques Vue 3, proxy /ws
      ↓ réseau Docker
Backend FastAPI — propagation orbitale (Skyfield)

Le choix structurant est de calculer côté serveur. La propagation orbitale SGP4 pour plusieurs milliers d'objets, cinq fois par minute, n'est pas un travail pour le navigateur — d'autant que tous les clients connectés partagent exactement le même résultat. Le serveur calcule une fois, diffuse à tout le monde par WebSocket, et le client ne fait que du rendu.

Les TLE sont rafraîchis périodiquement depuis Celestrak : ils se dégradent en précision au fil des jours, une propagation sur des éléments vieux d'une semaine dérive sensiblement.

Contrainte matérielle

Le projet est pensé pour un Raspberry Pi 4 en ARM64. Cette contrainte a orienté plusieurs décisions : image Docker multi-architecture, calculs vectorisés avec NumPy plutôt qu'en boucle Python, et diffusion d'un état partagé unique plutôt que d'un calcul par client connecté.

Projet suivant

Catan