A staring satellite sensor from off‑the‑shelf parts: field results
Key takeaways
- Five days of work, across under six weeks, took a goal with no spec to a working satellite sensor in the field, on under $1,300 of off-the-shelf hardware.
- The unit is designed to do all processing onboard, including matching tracks to satellites in real time, in GPU-accelerated C++.
- We tested it for three nights hours into the Gila National Forest, on a portable generator and our own satellite internet.
- Stacking frames aligned on the stars raises the signal-to-noise ratio with the square root of the frame count: about 3.9 times for 15 frames.
- A couple of hours of manual analysis matched tracks in our own frames to named satellites, from published pass predictions.
Case study: Five days of work: a satellite sensor proven in the wilderness
Our goal had no specification: a low-cost sensor that sees satellites, built from parts anyone can buy. About five days of work, spread across under six weeks of calendar time, took it from that goal to a working sensor in the field. Its frames hold real satellite tracks, and we identified satellites by name in them.
This guide covers the engineering behind that result: the design, the parts, the field test, the capture settings, stacking, plate solving, and how we matched tracks to named satellites. The short version is the case study Five days of work: a satellite sensor proven in the wilderness.
Design the unit for onboard processing
We designed the unit in CAD, including our own mount. The design model holds the camera, the lens, the mount, and a GPU edge computer, placed and sized as one assembly. It shows how the parts fit together and what the mount has to carry.
We designed the unit to do all of its processing onboard, including matching each track to a satellite in real time. The production software design is GPU-accelerated C++ on the edge computer. We designed each unit as one of a family of low-cost space domain awareness sensors at the edge that talk to one another.
We modeled the system in SysML, so any customer sees how the sensor works and how it integrates with their own systems. What is MBSE? A working guide to model-based systems engineering explains the method.
Choose the parts: camera, lens, and capture
The whole prototype runs on under $1,300 of hardware: off-the-shelf parts plus a mount we designed, which adapts to a tripod.
The camera is a monochrome machine-vision camera with a Sony IMX334 sensor of 3840 × 2160 pixels. A monochrome sensor has no color filter over its pixels, so every pixel collects all the light that reaches it. For faint targets against a dark sky, that sensitivity matters more than color.
The lens has a focal length of about 16 mm. A short lens gives a wide field, which suits a camera that stares at one patch of sky and waits for satellites to cross it. For the field test the camera wrote one frame per second to a laptop, each as an uncompressed 8-bit image.
Frame length is a trade: a longer frame collects more light from each star, and more sky background in each pixel as well. A moving satellite spends the same brief moment on each pixel whatever the frame length, so its streak grows longer but no brighter. Short frames at a steady cadence keep the background low and give stacking more frames to work with.
| Part or setting | What we used |
|---|---|
| Hardware cost | Under $1,300: off-the-shelf parts and our own mount |
| Camera | Monochrome machine-vision camera, Sony IMX334 sensor |
| Frame | 3840 × 2160 pixels, 8-bit monochrome, uncompressed |
| Lens | About 16 mm focal length |
| Cadence | One frame per second |
| Mount | Our own design, on a tripod; fixed, not tracking |
| Field capture | Laptop |
Take the test to a dark, remote site
A small lens sees what the sky allows, so the site comes first. We tested the sensor near Quemado Lake in the Gila National Forest, New Mexico, chosen for its exceptionally dark skies. Less background light means a lower noise floor in every frame.
The site is hours into the wilderness, so the field test was a full camping trip. We packed the whole kit, ran it from a portable generator, and kept our own satellite internet on site. We are comfortable working remote, and few teams take a first prototype this far from a lab.
We spent three nights in the field. Weather closed the first night; the second and third gave data. The frames in this guide come from one of those two nights.
Plan each night around twilight and passes
A satellite is visible to a camera only while sunlight reaches it and the sky behind it is dark. For satellites in low orbit, that means the hours after dusk and before dawn, when the ground is in darkness and the satellite is still in sunlight. In the middle of the night most of them pass through the Earth’s shadow.
We planned each night from printed pass predictions for the evening and the morning. They give the times worth watching closely.
Stare: let the sky drift past a fixed camera
The camera sits still and does not track the stars. Over a night the stars drift slowly across the frame as the Earth turns. A satellite in low orbit moves much faster than the stars, so in each one-second frame it shows up as a short streak.
That difference in speed is what makes a staring sensor work. Stars are nearly fixed points from one frame to the next, and a satellite is the line that moves. A fixed mount needs no tracking motor and no alignment in the field, which keeps the unit small, low-cost, and quick to set up.
Measure the field by plate solving
Plate solving matches the pattern of stars in an image against a star catalog. The result says where the image points, how it is turned, and how many arcseconds of sky each pixel covers. We plate-solved our stacked frames with ASTAP, and solved a single frame with astrometry.net as well.
The solution gives the numbers that describe our camera on the sky: a field of 26.8° × 15.1° and a plate scale of 25.1 arcseconds per pixel. Measuring them from real frames is more reliable than working them out from a lens’s nominal focal length. The general relation is:
plate scale (arcseconds per pixel) = 206,265 × pixel size (mm) / focal length (mm)
field of view (degrees) = plate scale × pixels across / 3,600
A plate-solved frame also lets you check where a satellite should appear. A pass prediction gives a path across the sky, and the solution maps that path onto pixels.
Stack frames aligned on the stars
Sort the frames, one stack per crossing
At one frame per second, a night of uncompressed full-resolution frames fills a disk quickly. Size the capture disk for a whole night, and copy the frames to a second disk each morning. Keep each frame’s capture time with it, in the file name or the image metadata.
The frames hold far more satellite tracks than the ones we pulled out by hand. For the prototype, we picked crossings by hand and sorted them into folders, one folder per crossing, so each folder becomes one stack. The production design processes every frame on the unit, in real time.
Average the noise down
Each frame holds the same stars and different noise. Stacking aligns the frames on the stars, then averages them pixel by pixel. We registered and stacked our frames with DeepSkyStacker and ASTAP, among other astronomy tools.
The star signal is the same in every aligned frame, while the random noise differs. Averaging N frames therefore raises the signal-to-noise ratio by the square root of N. Four frames double it, and the same law gives our 15 frames about 3.9 times.
A satellite moves between frames, so it lands on different pixels each second. In a star-aligned stack the short streaks join into one track across a cleaner background. That track shows the satellite’s whole path through the field in one image.
The square-root gain applies to whatever stays on the same pixels from frame to frame. To raise a moving object’s own signal, frames are aligned on its predicted motion instead, a method called shift-and-add. Star-aligned stacking is the right first step, because it shows where the tracks are.
Match tracks to public pass predictions
A track in a stack says that something crossed the field. Naming it takes a prediction.
We matched tracks by hand to public pass predictions from Heavens-Above and in-the-sky.org. CelesTrak publishes the orbital elements that such predictions start from. The matching took a couple of hours of manual analysis, and each name rests on three checks:
- the predicted pass crosses the field at the time of the frames;
- its predicted path lines up with the track’s direction;
- its predicted motion fits the length of each one-second streak.
In the 15-frame stack of Figure 2, we matched two tracks to Starlink-3332 and Starlink-1302. The unit is designed to make the same match onboard, in real time.
Results
| Metric | Result |
|---|---|
| Work from a goal with no spec to a sensor in the field | About five days of full-time effort |
| Calendar time to the field | Under six weeks |
| Hardware | Under $1,300: off-the-shelf parts and our own mount |
| Field nights | Three; weather closed the first |
| Cadence | One frame per second |
| Frame | 3840 × 2160 pixels, 8-bit monochrome |
| Field of view | 26.8° × 15.1° |
| Plate scale | 25.1 arcseconds per pixel |
| Stack in Figure 2 | 15 one-second frames |
| Named in that stack | Starlink-3332 and Starlink-1302 |
| Matching tracks to named satellites | A couple of hours of manual analysis |
How we measured: the effort and the hardware cost are our own project figures; the field of view and the plate scale come from the plate solution of our own frames; the cadence comes from the frames’ time stamps; the calendar time comes from our planning records; the names come from matching tracks to public pass predictions.
Recommendations
- Take a first prototype to the conditions it will face, because a dark, remote site shows what the optics and the data can do.
- Carry your own power and network, so distance never rules out the best test site.
- Design for onboard processing from the start, so each sensor works at the edge and a family of sensors can share results.
- Stack before you buy a bigger lens: 15 aligned frames give about 3.9 times the signal-to-noise ratio of one.
- Plate-solve your own frames to measure the field and the plate scale, instead of trusting a lens’s nominal focal length.
- Check a named match against direction and streak length as well as time, so a coincidence in time never becomes a name.
References
- Astrometry.net
- ASTAP, astrometric stacking program
- DeepSkyStacker
- Heavens-Above
- In-The-Sky.org
- CelesTrak: orbital element data formats
If you have a sensing goal and no specification yet, see Scientific and HPC software or get a free estimate.