Skip to content

UWCubeSat/lost

Repository files navigation

LOST: Open-source Star Tracker

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.

Parts of a Star Tracking System

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

Building LOST

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.

About

Lost: Open-source Star Tracker

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published