ssa-gym : an OpenAI Gym environment for tasking Space Situational Awareness Sensors and some associated agents.
Motivation: This work lays out a method for training a DRL based policy which can perform onlinesensor tasking
Repository author : Maj. Ashton Harvey, Devayani Pawar
Space Situational Awareness (SSA) is the identification of hazards in space via measuring and predicting the kinematic state and characteristics of space objects (SOs). It is also commonly known as Space Domain Awareness (SDA). Active topics of research in this area include, but are not limited to:
The repository includes:
- Source code for the SSA-GYM Simulation
- Library of Astro-Transformation functions
- Implementation of Dynamic functions
- Library of Reward function
- Library of Heuristic agents
- Test Cases
- Results
- Visualizations
Python 3.6, and other common packages listed in requirements.txt
.
- Clone this repository
- Install dependencies
pip3 install -r requirements.txt
Data is gathered from International Earth Rotation and Reference System Service. We are using the Earth Orientation data for this research. You can see the format of the dataset here.
For right simulation of RSO
- We transform the location of an object with respect to the surface of the Earth (ITRS) to a satellite in orbit around the Earth (GCRS) or vice-versa
- We transform the data to obtain longitude & latitude.
- We transform the data to obtain the Azimuth, Elevation,and Slant Range (topocentric coordinate reference system) a way to relate an observer on the ground to an object it can observe in the sky.
- Setting up the simulation: Register's environment with Gym
- Deep Reinforcement Learning
- Orbital Mechanics
- Kalman Filter for uncertain information
- Unscented Kalman Filter: UKF is able to provide better estimates given the nonlinearity of the orbital dynamics of the satellites.
- Reinforcement Learning in python: https://gym.openai.com/docs/
- FilterPy - Python library that implements a number of Bayesian filters, most notably Kalman filters: https://filterpy.readthedocs.io/en/latest/
- Numba - An open source JIT compiler that translates a subset of Python and NumPy code into fast machine code: http://numba.pydata.org/
- Astropy - A Community Python Library for Astronomy: https://www.astropy.org/
- ERFA (Essential Routines for Fundamental Astronomy) is a C library containing key algorithms for astronomy, and is based on the SOFA library published by the International Astronomical Union (IAU) https://github.com/liberfa/erfa
- Poliastro - An open source collection of Python subroutines for solving problems in Astrodynamics and Orbital Mechanics: https://docs.poliastro.space/en/stable/about.html
- RLlib - RLlib is an open-source library for reinforcement learning that offers both high scalability and a unified API for a variety of applications : https://docs.ray.io/en/master/rllib.html
- Bonus - RLlib is a library built on top of Ray core: https://docs.ray.io/en/master/ray-overview/index.html
Here are some of the changes I am going to recommend in an upcoming paper as future work:
- Add support for the variable-step Gauss–Legendre implicit-Runge–Kutta-based approach for orbit and uncertainty propagation
- This is a more accurate field propagator that can leverage commonalities of the points that need to be propagated by the filter to speed processing
- Conversion of the core state from cartesian (GCRS's inertial frame) to J2 Equinoctial Orbit Elements
- This will greatly improve the performance of the UKF as the J2EqOE state representation is far more conducive to representing the true shape of the covariance vice its cartesian representation
- I suspect this will also greatly reduce the numerical instabilities that form in the unscented transform which can result in non-singular covariance matrices which I handle with covariance inflation in the current model, but can occasionally crash a run
- Consider replacement of the UKF with a Gauss von Mises distribution filter
- This will provide moderate gains in covariance realism over a J2EqOE UKF
Suggested helpful resources for future work:
@misc{ssa-gym_2020,
title={An OpenAI Gym environment for tasking Space Situational Awareness Sensors and some associated agents.
},
author={Maj. Ashton Harvey, Devayani Pawar},
year={2020},
publisher={Github},
journal={GitHub repository},
howpublished={\url{https://github.com/AshHarvey/ssa-gym}},
}