SpaceDSL is a astrodynamics simulation library. This library is Written by C++.
The purpose is to provide an open framework for astronaut dynamics enthusiasts, and more freely to achieve astrodynamics simulation.
The project is open under the MIT
protocol, and it is also for freer purposes.
The project is built with CMake and can be used on Windows
, Linux
and Mac OS
.
This library can compiled into static library
, dynamic library
and python library
. Of course, it can also be used directly.
SpaceDSL contain all basic functions of astrodynamics simulation, including:
- Astronomical Time System:
Support EOP web Service
, including the definition and conversion of various astronomical time. such as UTC, UT1, TT... - Reference Coordinate System: including the transformation equations of commonly used spatial coordinate system. such as ECI, TOD, ECEF, VVLH...
- JPL Ephemeris: Repackage the JPL ephemeris reading module, providing the latest
DE436
file, including data from1950
to2050
. - Earth Gravity Model: Using the spherical harmonic function to build the earth's high-precision gravitational model, with
EGM2008
data(80X80). - Other Perturbation Models: Atmospheric Drag(
NRLMSISE2000
), Solar Radiation Pressure, Third Body Gravity. - Two Body Orbit Prediction, J2 Orbit Prediction And High Precision Orbit Prediction For Spacecraft.
- Various Ground Target Models and Access Analysis.
- Sensor Support(
Simple Conic
andRectangular
). - Common Physical Constants
- Multi Thread Parallel Support: Similar to Qt API, including Thread and Thread Pool.
- Support Exception Handling Based on STL.
- Provide Nonlinear Optimization Library, Base on NLoptV2.6.1.
- Provide ElectronVisualizer, Base on Electron and Cesium.
- Perturbation Models: Earth Tide, Relativistic Effect .
- Relative Motion Simulation of Spacecraft.
- Orbital Maneuver Siumulation Features.
- Orbit Deviation Prediction.
- Eigen3 library: a C++ template library for linear algebra.
Be careful! The library must be recompiled when using SpaceDSL dynamic library
. All the files of the Eigen3.3.7 have been included in the project. - JSON for Modern C++ V3.9.1: a headonly JSON lib, Used the c++11 standard and Support STL.
- pybind11 V2.4.0: pybind11 is a lightweight header-only library that exposes C++ types in Python and vice versa, mainly to create Python bindings of existing C++ code.
- OpenSSL:OpenSSL is a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. If you want to use IERS Web Service, this library must be Precompiled.
- Clang/LLVM 3.3 or newer (for Apple Xcode's clang, this is 5.0.0 or newer)
- GCC 7.2 or newer
- Microsoft Visual Studio 2015 Update 3 or newer
- Intel C++ compiler 16 or newer
- The formula used in this project is from
Oliver Montenbruck Eberhard Gill
's bookSatellite Orbit Model, Method and Appliction
.
This project was created by Niu Zhiyong
During the development process, we received the guidance and help from Professor Wang Hua
of NUDT Aerospace College.
Significant features and/or improvements to the code were contributed by
Sun Zhenjiang
,Xiao Gongwei
SpaceDSL is provided under MIT license that can be found in the
LICENSE
file. By using, distributing, or contributing to this project,
you agree to the terms and conditions of this license.