This is a framework for developing high-accuracy star trackers on small, low-power, low-cost satellites. It is being developed in the Husky Satellite Lab, a cubesat team at the University of Washington.
- Undistortion or cropping: It’s critical for captured images to be “flat”. Unfortunately, real
world lenses make things look a little less than flat. Algorithms can undistort images or simply
crop out the edges to remove the areas where distortion is the worst.
Our framework does…
- [ ] Undistortion Routines (probably should happen after centroiding)
- [ ] Cropping Routines (that keep track of how FOV changes due to crop)
- [ ] Noise removal (median of images from many angles)
- Centroiding: Each star in the photo should be reduced to a single point, with sub-pixel
accuracy. Auxiliary data, such as star brightness or the likelihood it is a binary star, may be
collected too.
Our framework does…
- [X] Simple centroiding
- [ ] Iterative weighted centroiding
- [ ] 2D Gaussian fit centroiding
- [ ] Gaussian Grid centroiding
- [ ] Coordinate Conversion (between pixel and spherical/angular)
- Catalog Building: This happens on the ground. The format of this catalog depends a lot on the
Star Identification algorithm used. It might contain information about distances to adjacent
stars, expected brightness, etc. One thing all catalogs have in common is the actual spherical
coordinates of the stars, so that once the stars have been identified, the spacecraft’s actual
attitude can be determined.
Our framework does…
- [X] Downloading a star catalog and converting to an internal format
- [ ] Database-building routines for common Star-ID algorithms.
- Star Identification: The “main” step of star tracking: Going from a list star positions (and
possibly magnitudes or other info)
Our framework does…
- [ ] Padgett Grid identification method with variations:
- [ ] Flower Method
- [ ] Sequential Sum method
- [ ] Pyramid method
- [X] Geometric Voting
- [ ] Uncalibrated K-vectory method
- [ ] Star-ND or Liebe
- [ ] LIS, Tracking, and Uncalibrated modes
- [ ] Padgett Grid identification method with variations:
- Attitude Determination: Once enough stars have been identified, they can be combined with
information on camera parameters to determine the attitude.
Our framework does…
- [ ] Davenport Q method
- [ ] QUEST
- [ ] ESOQ
Other parts of our framework that are not essential parts of a star-tracking system:
- [X] Centroiding and Star-ID Results Visualization
- [X] Simulated image generation
- [ ] Re-projection of stars after fix visualization
- [ ] Benchmarking against reference images
- [ ] Demo App that acquires a fix, calibrates the camera, then tracks, with real-time visualizations. Would be really cool to make it work on a phone!
- [ ] Automatic corruption of images to test noise tolerance. Star removal, false star adding, moon and earth and sun adding, optical offset, focal length mismatch.
When making an actual, physical star tracker, you will most likely need to pick out the specific parts of LOST you want and make lots of changes. However, there’s a LOST binary you can use to test and benchmark things quickly.
Requirements:
- Linux or Mac. If you have Windows, I recommend installing the Windows Subsystem for Linux.
- A C compiler, such as GCC. On Debian,
apt install gcc
- GNU Make. On Debian,
apt install make
- Git. On Debian,
apt install git
- Cairo, to read and write PNGs as well as draw on them for debugging and demo purposes. You won’t
need this on your cubesat. Follow the instructions here: https://www.cairographics.org/download/
under the Binary Packages section. On debian, it’s just
apt install libcairo2-dev
Then, clone this repository (git clone https://github.com/uwcubesat/lost
), then cd lost
, then
make
will compile everything. Then you can just run ./lost
and play around with the options!
If you’re developing LOST, you need to re-run make
every time you edit any of the source code
before running ./lost
.