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.
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