Autonomous navigation of a satellite from the stars

A simulated study: recognizing the stars to tell where the camera points.

  • Space, neural networks

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

Isometric drawing of a 3U CubeSat standing, a camera on its top face, and the camera’s field up to the photo it takes: the sky around the star Dubhe. By step: the Nvidia Jetson Nano board inside the structure; the Earth, 500 km below; the photo flat, with 20 concentric circles around the central star and the number of stars per ring; a neural network that takes those numbers and names Dubhe, with the arrow of the pointing direction; the Hipparcos catalogue on a sphere and eight simulated skies, with one extra star and one missed star; the photo striped with the sensor’s noise, and the board inside the structure, to be tried on the ground.
Map of the whole sky, an ellipse ruled in hours and degrees: 2,848 black dots, the stars down to magnitude 5.5. At the top, a orange quadrilateral marks the camera’s 44° × 34° field around the star Dubhe; the 73 stars inside it are orange.
The 2,848 stars the network must recognize; in orange, the camera’s field around Dubhe, and its 73 stars. The group’s data and method
A simulated 640 × 480 pixel photo, in negative: black stars of various sizes on a light, grainy grey ground, each one circled in orange.
The simulated photo around Dubhe, in negative. The threshold finds 68 spots for 73 stars: five pairs of close stars merge. Simulation
On the left, the photo’s field: black stars and, around Dubhe at the center, twenty orange circles. On the right, as bars, the number of stars in each ring, from the 1st to the 20th: none in the first eight, then 1, 0, 1, 1, 2, 1, 3, 3, 0, 2, 4 and 2.
Dubhe’s fingerprint: twenty numbers, the stars counted between two circles, from the center to the edge. The group’s data and method
Chart of the share of photos in which the central star is recognized, against the mean number of false and missed stars per photo, from 0 to 5: a orange curve falling gently from 99 to 90%, at 98% for the noise the note planned.
On 4,000 simulated photos per point, the network recognizes the central star in 98% of cases at the noise the note planned, and still 90% with five false and five missed stars per photo. Simulation

What was done

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

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

  3. 03

    The training set

    Skies simulated from the Hipparcos catalogue, eight per star, with four brightness thresholds and extra or missed stars.

    skyfield · Hipparcos

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

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

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

Isometric drawing of a 3U CubeSat standing, a camera on its top face, and the camera’s field up to the photo it takes: the sky around the star Dubhe. By step: the Nvidia Jetson Nano board inside the structure; the Earth, 500 km below; the photo flat, with 20 concentric circles around the central star and the number of stars per ring; a neural network that takes those numbers and names Dubhe, with the arrow of the pointing direction; the Hipparcos catalogue on a sphere and eight simulated skies, with one extra star and one missed star; the photo striped with the sensor’s noise, and the board inside the structure, to be tried on the ground.

How it works

  1. Scroll: the drawing follows.

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

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

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

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

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

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