I have completed the python3 driver for AFSPC's SAA DLLs.
To fully understand the purpose and motivation for writing this driver, refer to my previous blog post.
The very short summary of the purpose is as follows:
- AFSPC (Air Force SPace Command) distributes the Standard Astrodynamic Library Dynamic Link Library (SAA DLL) in binary form. This library implements the official SGP4 propagation algorithms used by AFSPC to interpret Two Line Element sets (TLEs). To come to the exact same predictions that AFSPC makes, you need to use their tooling.
- Unfortunately, the SAA DLL is designed to be interfaced with from code written in a compiled, dynamically linked environment. This is outside of the skillset of most aerospace engineers.
- I wrote a python3 module that translates your python calls to DLL calls. I wrote a translation function and a test case for each of the 155 methods available through the dynamically linked library.
Installation and Setup
Refer to the active
README.md for instructions on how to install and set up the
dshsaa module. The instructions are likely to change rapidly over the next few weeks. I am currently implementing a safe virtualenv development environment and working on compatibility with pip distribution.
Once you've successfully run the test cases, check out
example.py to see a basic use case.
dshsaa module is licensed as Apache 2.0 open source software. However,
dshsaa is just a driver for the SAA DLLs which are controlled by the US federal government. At the current time, only US citizens are permitted to download the SAA DLLs and they may only do so via space-track.org. I will be reaching out to AFSPC and the Bureau of Industry and Security to consider removing these restrictions. I will also reach out to the pip maintainers about my options for delivering the driver without the DLLs.
The next non-programming steps:
- [x] Fix the Sphinx Documentation config.
- [x] Package the entire project into a virtual environment. As it currently stands, Python 3.7.5 and
ctypes 1.1.0 are hard requirements.
- [ ] Go over the Sphinx documentation carefully and fix inconsistencies that exist between the early code and the late code.
- [ ] Collect appropriate test data for test cases. Many test cases just verify that the DLL runs without errors. They don't verify that the output data is correct.
- [ ] Reach out to AFSPC about releasing the SAA DLLs for public distribution via the
- [ ] Reach out to the Bureau of Industry and Security about releasing the SAA DLLs for public distribution via the
- [ ] Test on Windows.
- [ ] Test on MacOS.