This GitHub offers to the CubeSat research community an open-source Star Tracker (STT),
developed at the Space and Planetary Exploration Laboratory (SPEL) at the University of Chile.
We used this development in the first Chilean satellite swarm made up of SUCHAI-2/3 and PlantSAT.
SUCHAI-1 was the first NanoSatellite developed by the University of Chile at SPEL. Launched on June 23 (2017), this satellite
worked 457 days on space. On April 1, 2022, the second batch of satellites was launched: the SUCHAI-2/3 and PlantSAT.
We tested the pointing capabilities of these new satellites and learned how to develop a robust attitude
determination and control system (ADCS) through in-house sensors and algorithms development.
---> Links of interest:
- SUCHAI-1
- The SUCHAI project
- PlantSAT project
- SPEL
- The first chilean satellite swarm in the SmallSat Conference (2023)
- SOST paper in IEEE ACCESS (2020)
- This GitHub contains a fully functional STT you can test on a Linux PC. Nevertheless, the main idea is to use it with a Raspberry Pi (RPi) and its camera (V2.1) in an autonomous way.
- This code is currently working on Python 3.10. All the code and the necessary files are in the RPi folder.
- This GitHub is free and open to everyone interested in using it, especially researchers working on CubeSats. We encourage interested researchers to help this project grow!
- Two open software commonly used in the astronomy field are the base of this STT code: Source Extractor
and Match. To properly use this STT, you first need to install these two software. In a Linux computer, you
can do it using the bash script provided in RPi/linux_installer.sh:
cd RPi
sh linux_installer.sh
In our implementation, we use version 2.19.5 of Source Extractor and version 0.14 of Match. However, using
newer version of Source Extractor should not be a problem for the algorithm.
- For memory reasons, star catalogs are compressed (tar.gz). You can decompress it using the batch script
in RPi/extract_cat.sh:
cd RPi
sh extract_cat.sh
- This STT software uses the following Python libraries:
- argparse
- astropy
- itertools
- multiprocessing
- numpy
- os
- pillow
- platform
- re
- subprocess
- time
Most of them come by default in Python, and the remaining can be installed by typing in the terminal:
python3 -m pip install astropy pillow
This STT software works by comparing the grabbed picture with a stellar catalog. The different catalog segments can
be separated by 5, 10, or 15 degrees. The larger the catalog separation, the faster the algorithm works, but the
less accurate the solution. You can choose the catalog separation when you run the code.
You can test this STT software in three different ways:
- Directly grabbing pictures with the RPi and the V2.1 camera.
- Using the sample images previously grabbed with the RPi V2.1 camera.
- Using the sample images from the satellite STEREO HI-1.
The syntax is the following:
python3 stt.py direct_rpi <catalog-division>
Catalog division can be 5, 10 or 15. This will acquire a picture with a predefined exposure time of 800 ms. If you want to set your own exposure time, you can try:
python3 stt.py direct_rpi <catalog-division> --exptime <exposure-time>
The exposure time is in ms.
The syntax is the following:
python3 stt.py sample_rpi <catalog-division>
Catalog division can be 5, 10 or 15. This will apply the algorithm over the first picture in the sample images. If you want to try another picture, you can try:
python3 stt.py sample_rpi <catalog-division> --npic <picture-number>
The argument picture-number ranges from 1 to 50.
4.3.- Using STEREO sample pictures
This STT software can also be tested with pictures from the HI-1 detector from the STEREO mission. This procedure
proves that different cameras can be used with this algorithm, and it is not attached to particular hardware.
The STEREO HI-1 pictures can have different processing levels. These levels are well explained
in STEREO HI data processing documentation. We use two different image format:
- L0 images, which can be downloaded from STEREO SCIENCE CENTER - L0.
- L2 images, which can be downloaded from STEREO SCIENCE CENTER - L2.
There are examples of pictures of both kinds in folder RPi/Sample_images/STEREO
To execute the code, the syntax is the following:
python3 stt.py sample_stereo <catalog-division>
This will apply the algorithm over the first picture in the sample images. Like the previous cases, catalog division
can be 5, 10 or 15. The attitude information can be read from the STEREO image header.
Several programs can be used for it, for example, DS9.
If you want to test another picture, you can try:
python3 stt.py sample_stereo <catalog-division> --npic <picture-number>
In this case, the argument picture-number ranges from 1 to 10.
This STT is deeply tested with theoretical analysis and ground-based night-sky pictures. The tools, algorithms, methods, and results are fully described in my paper in IEEE ACCESS. If you are using this open project in your research or development, please cite it using the following BibTeX:
@article{gutierrez2020introducing,
title = {Introducing SOST: An Ultra-Low-Cost Star Tracker Concept Based on a Raspberry Pi and Open-Source Astronomy Software},
author = {Guti{\'e}rrez, Samuel T and Fuentes, C{\'e}sar I and D{\'\i}az, Marcos A},
journal = {IEEE Access},
volume = {8},
pages = {166320--166334},
year = {2020},
publisher = {IEEE}
}
Contact: Samuel T. Gutiérrez.
Postdoc at SPEL group.
PhD in Electrical Engineering at the University of Chile, Santiago, Chile.
[email protected]
README updated September 8, 2024, by SGR.