Autonomous navigation of a satellite from the stars
A simulated study: recognizing the stars to tell where the camera points.
Date: 2020–2021
ESUS, “Engine in Space testing aUtonomous Software”, is the first satellite of the CentraleSupélec Space Centre, a 10 × 10 × 34 cm CubeSat of about 3 kg, designed and built by students in CNES’s Nanolab Academy programme. Its mission: show that an off-the-shelf graphics card, never hardened for space, can compute in orbit; measure what it endures there; update its software from the ground; and run a neural network on the images of an onboard camera. About forty students work on it in groups: structure, thermal, trajectory, attitude control, communications, power, and the payloads. In 2021, the satellite aimed at a 600 km orbit and a launch at the end of 2024, after a phase B in 2021–2022.
In the Autonomous navigation group, created that year, I was in charge of the algorithm: telling where the satellite’s camera points from the stars it photographs, the workload given to the graphics card. Its results come from simulation.
The mission has evolved since: CNES now presents ESUS with two payloads, a camera with an onboard artificial intelligence that recognises clouds, and an interferometer from the XLIM laboratory that measures the Sun’s diameter; according to the Space Centre, the project is in detailed design, for a launch planned in 2027 (as of 13 October 2026).
The result




What was done
01
Star detection
The photo turned to grey, a threshold that separates stars from noise, then each group of lit pixels becomes a star, with its position.
Python · Pillow · NumPy
02
The fingerprint
Twenty circles of growing radius around each of the three stars nearest the centre; the number of stars between two circles forms the network’s input.
Python · NumPy
03
The training set
Skies simulated from the Hipparcos catalogue, eight per star, with four brightness thresholds and extra or missed stars.
skyfield · Hipparcos
04
The network
A 1D convolution, then a dense layer, and one output per recognisable star, 2,848; from the recognised star to the pointing direction and the camera’s roll.
05
Specifications for the other teams
For attitude control: an aim steady to 0.5° per second during exposures of 5 s at most, and pointed to within 1°; for communications, the volume of the network’s updates.
06
The 2026 replay
The note’s network rewritten and trained on skies drawn anew at every pass, then tried on simulated photos aimed at the sky at random, with false and missed stars: the share of central stars recognised.
Python · NumPy
How it works
Scroll: the drawing follows.
01 / 06
Can a graphics card compute in space?
The ESUS CubeSat must show that an off-the-shelf graphics card, an Nvidia Jetson Nano capped at 5 W, can compute in orbit. Which useful computation to give it, with a small 640 × 480 pixel camera and a 44° × 34° field? The group had to choose the camera, the algorithm, and tell attitude control what aim to hold.
02 / 06
Aim at the sky rather than the Earth
The previous year’s method recognised continents. At 500 km, the camera sees only about 400 × 300 km of Earth, curved, often at night or under clouds. The stars, though, are always there, and the catalogue gives their position: the camera will aim at the sky, and the photo will tell where it points.
03 / 06
From the photo to the sky’s fingerprint
The photo turns to grey, a threshold keeps the lit pixels, and neighbouring pixels group into stars, about fifty per image. Around each of the three stars nearest the centre, twenty circles more and more spaced out, the last as wide as 70 % of the half-height: the number of stars between two circles forms the fingerprint of that patch of sky.
04 / 06
A neural network recognises the star
A neural network reads the twenty numbers, a convolution then a dense layer, and answers with one output per star: 2,848 stars, down to magnitude 5.5. The three recognised stars, whose position the catalogue gives, yield the direction the camera points in and its roll. The satellite must hold its aim steady, to 0.5° per second, during an exposure of five seconds at most.
05 / 06
Trained on simulated skies
With no photos taken in orbit, the network learns on skies drawn from the Hipparcos catalogue, eight per star, with extra stars, missed stars and a magnitude threshold that varies. Replayed in 2026, with new skies drawn at every pass, it recognises the central star in 98 % of simulated photos at the noise the note foresees, and still in 90 % with five extra and five missed. Everything is simulated: no real photo.
06 / 06
What remains before flight
The threshold is set by hand, the real sensor’s noise is still to be modelled, and nothing was tried on the ground with the card and the camera. The note also proposes, to find the satellite’s position on its orbit, to turn until the Earth’s limb sits at the edge of the image before photographing the stars.
Specifications
- Date
- 2020–2021
- Context
- Team work for ESUS, the CentraleSupélec Space Center’s 3U CubeSat, designed by students within CNES’s Nanolab Academy program.
- Role
- In charge of the algorithm, in the autonomous navigation team
- Built with
- Python (NumPy, Matplotlib, Pillow) · skyfield · Hipparcos catalogue · convolutional neural network
- Platforms
- Nvidia Jetson Nano
- Scale
- 2,848 stars to recognize · 20 circles per fingerprint · 98% of central stars recognized, in simulation
- Status
- study
- References