Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,14 @@ external

# Config & data files
*.json
!asr_2016a_data/config/*/*.json
config/*
!config/*.json.empty
data/*
!data/catalog/
data/catalog/*
!data/catalog/test_catalog.txt
*.db

# Project files
*.sublime*
46,068 changes: 46,068 additions & 0 deletions asr_2016a_data/3le.txt

Large diffs are not rendered by default.

90 changes: 90 additions & 0 deletions asr_2016a_data/complete_cycle.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
#!/bin/bash
mkdir SSO
mkdir GEO
mkdir HEO
mkdir figures

# Run catalog pruner for all regimes
./../build/bin/d2d ./config/catalog_pruner/catalog_pruner_sso.json
./../build/bin/d2d ./config/catalog_pruner/catalog_pruner_heo_rocket_bodies.json
./../build/bin/d2d ./config/catalog_pruner/catalog_pruner_geo_intelsat.json

# Run lambert_scanner for all regimes
./../build/bin/d2d ./config/lambert_scanner/lambert_scanner_sso.json
./../build/bin/d2d ./config/lambert_scanner/lambert_scanner_heo.json
./../build/bin/d2d ./config/lambert_scanner/lambert_scanner_geo.json

# Run sgp4_scanner for all regimes
./../build/bin/d2d ./config/sgp4_scanner/sgp4_scanner_sso.json
./../build/bin/d2d ./config/sgp4_scanner/sgp4_scanner_heo.json
./../build/bin/d2d ./config/sgp4_scanner/sgp4_scanner_geo.json

# Figure 1abcd
python ./../python/plot_tle_catalogs.py

# Figure 2a
python ./../python/plot_porkchop.py ./config/plot_pork_chop_plot/plot_pork_chop_geo.json

# Figure 2b: Version in paper was resampled on a denser grid of 500 data points to highlight all singularities.
python ./../python/plot_porkchop_slice.py ./config/plot_pork_chop_slice/plot_porkchop_slice_geo.json

# Figure 3
python ./../python/plot_histogram_dV.py ./config/plot_dV_histogram/plot_histogram_dv_geo.json

# Figure 4
python ./../python/plot_lambert_scan_maps.py ./config/plot_lambert_scan_map/plot_lambert_scan_maps_geo.json

# Figure 5
# Schematic illustration of the Cartesian-to-TLE conversion algorithm

# Figure 6abcd
python ./../python/sgp4_error_histogram_stacked.py ./config/sgp4_error_histogram/plot_sgp4_error_histogram_sso.json

# Figure 7abcd
python ./../python/sgp4_error_histogram_stacked.py ./config/sgp4_error_histogram/plot_sgp4_error_histogram_heo.json

# Figure 8abcd
python ./../python/sgp4_error_histogram_stacked.py ./config/sgp4_error_histogram/plot_sgp4_error_histogram_geo.json

# Figure 9ab
python ./../python/sgp4_scanner_box_plot.py ./config/plot_sgp4_error_box_plot/sgp4_scanner_box_plot.json

# Table 1
# All data can be found in:
# ./config/catalog_pruner/catalog_pruner_sso.json

# Table 2
# All data can be found in:
# ./config/catalog_pruner/catalog_pruner_heo_rocket_bodies.json

# Table 3
# All data can be found in:
# ./config/catalog_pruner/catalog_pruner_geo_intelsat.json

# Table 4
# All data can be found in:
# ./config/lambert_scanner/lambert_scanner_sso.json
# ./config/lambert_scanner/lambert_scanner_heo.json
# ./config/lambert_scanner/lambert_scanner_geo.json


# Table 5
# All data can be found in:
# ./config/sgp4_scanner/sgp4_scanner_sso.json
# ./config/sgp4_scanner/sgp4_scanner_heo.json
# ./config/sgp4_scanner/sgp4_scanner_geo.json

# Tables 6/8/10
python ./../python/extract_top_lists.py ./config/extract_ranking_tables/extract_top_lists.json

# Table 7
python ./../python/sgp4_scanner_stats.py ./config/extract_sgp4_error_stats/sgp4_scanner_stats_sso.json

# Table 9
python ./../python/sgp4_scanner_stats.py ./config/extract_sgp4_error_stats/sgp4_scanner_stats_heo.json

# Table 11
python ./../python/sgp4_scanner_stats.py ./config/extract_sgp4_error_stats/sgp4_scanner_stats_geo.json



Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// Copyright (c) 2014-2015 Kartik Kumar (me@kartikkumar.com)
// Distributed under the MIT License.
// See accompanying file LICENSE.md or copy at http://opensource.org/licenses/MIT

// Configuration file for D2D "catalog_pruner" application mode.
{
"mode" : "catalog_pruner",

// Set path to TLE catalog file.
"catalog" : "../asr_2016a_data/3le.txt",

// Set filters.
// Set semi-major axis filter bounds (with Earth radius subtracted) [km].
"semi_major_axis_filter" : [30000.0,40000.0],
// Set eccentricity filter bounds (lower bound >= 0.0; upper bound <= 1.0) [-].
"eccentricity_filter" : [0.0,0.1],
// Set inclination filter bounds (lower bound >= 0.0; upper bound <= 180.0) [deg].
"inclination_filter" : [0.0,45.0],
// Set regex filter based on TLE object .
"name_regex" : "(INTELSAT|GALAXY)",
// Set maximum number of objects in list.
// This cutoff is switched off if set to 0.
"catalog_cutoff" : 100,

// Set output file for pruned TLE catalog.
"catalog_pruned" : "../asr_2016a_data/GEO/GEO_intelsat_tle.txt"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// Copyright (c) 2014-2015 Kartik Kumar (me@kartikkumar.com)
// Distributed under the MIT License.
// See accompanying file LICENSE.md or copy at http://opensource.org/licenses/MIT

// Configuration file for D2D "catalog_pruner" application mode.
{
"mode" : "catalog_pruner",

// Set path to TLE catalog file.
"catalog" : "../asr_2016a_data/3le.txt",

// Set filters.
// Set semi-major axis filter bounds (with Earth radius subtracted) [km].
"semi_major_axis_filter" : [2000.0,40000.0],
// Set eccentricity filter bounds (lower bound >= 0.0; upper bound <= 1.0) [-].
"eccentricity_filter" : [0.6,1.0],
// Set inclination filter bounds (lower bound >= 0.0; upper bound <= 180.0) [deg].
"inclination_filter" : [0.0,180.0],
// Set regex filter based on TLE object .
"name_regex" : "(R/B)",
// Set maximum number of objects in list.
// This cutoff is switched off if set to 0.
"catalog_cutoff" : 100,

// Set output file for pruned TLE catalog.
"catalog_pruned" : "../asr_2016a_data/HEO/heo_rocket_bodies_catalog.txt"
}
27 changes: 27 additions & 0 deletions asr_2016a_data/config/catalog_pruner/catalog_pruner_sso.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// Copyright (c) 2014-2016 Kartik Kumar, Dinamica Srl (me@kartikkumar.com)
// Distributed under the MIT License.
// See accompanying file LICENSE.md or copy at http://opensource.org/licenses/MIT

// Configuration file for D2D "catalog_pruner" application mode.
{
"mode" : "catalog_pruner",

// Set path to TLE catalog file.
"catalog" : "../asr_2016a_data/3le.txt",

// Set filters.
// Set semi-major axis filter bounds (with Earth radius subtracted) [km].
"semi_major_axis_filter" : [750,850],
// Set eccentricity filter bounds (lower bound >= 0.0; upper bound <= 1.0) [-].
"eccentricity_filter" : [0,0.01],
// Set inclination filter bounds (lower bound >= 0.0; upper bound <= 180.0) [deg].
"inclination_filter" : [98,99],
// Set regex filter based on TLE object.
"name_regex" : "(R/B|DEB)",
// Set maximum number of objects in list.
// This cutoff is switched off if set to 0.
"catalog_cutoff" : 100,

// Set output file for pruned TLE catalog.
"catalog_pruned" : "../asr_2016a_data/SSO/SSO_tle.txt"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// Copyright (c) 2014-2016 Kartik Kumar, Dinamica Srl (me@kartikkumar.com)
// Distributed under the MIT License.
// See accompanying file LICENSE.md or copy at http://opensource.org/licenses/MIT
{
// Path to SQLite database containing scan data.
"database" : ["../asr_2016a_data/SSO/sso_debris.db",
"../asr_2016a_data/HEO/heo_rocket_bodies.db",
"../asr_2016a_data/GEO/geo_intelsat.db"],

// Identifier for each database as the shortlist will be written per database.
"database_tag" : ["Table_6_SSO",
"Table_8_HEO",
"Table_10_GEO"],

// Directory where shortlists are stored.
"output_directory" : "../asr_2016a_data/figures/"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// Copyright (c) 2014-2016 Kartik Kumar, Dinamica Srl (me@kartikkumar.com)
// Copyright (c) 2014-2016 Abhishek Agrawal, Delft University of Technology
// (abhishek.agrawal@protonmail.com)
// Distributed under the MIT License.
// See accompanying file LICENSE.md or copy at http://opensource.org/licenses/MIT
{
// Path to SQLite database containing scan data.
"database" : "./GEO/geo_intelsat.db",

// Set orbit type (ex: SSO, GTO, GEO)
"orbit_type" : "GEO",

// Relative path to output CSV file containing the statistical data.
// Provide the file name with the .csv extension as well.
"output" : "./figures/Table_11_statistical_data_geo.csv"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// Copyright (c) 2014-2016 Kartik Kumar, Dinamica Srl (me@kartikkumar.com)
// Copyright (c) 2014-2016 Abhishek Agrawal, Delft University of Technology
// (abhishek.agrawal@protonmail.com)
// Distributed under the MIT License.
// See accompanying file LICENSE.md or copy at http://opensource.org/licenses/MIT
{
// Path to SQLite database containing scan data.
"database" : "./HEO/heo_rocket_bodies.db",

// Set orbit type (ex: SSO, GTO, GEO)
"orbit_type" : "HEO",

// Relative path to output CSV file containing the statistical data.
// Provide the file name with the .csv extension as well.
"output" : "./figures/Table_9_statistical_data_heo.csv"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// Copyright (c) 2014-2016 Kartik Kumar, Dinamica Srl (me@kartikkumar.com)
// Copyright (c) 2014-2016 Abhishek Agrawal, Delft University of Technology
// (abhishek.agrawal@protonmail.com)
// Distributed under the MIT License.
// See accompanying file LICENSE.md or copy at http://opensource.org/licenses/MIT
{
// Path to SQLite database containing scan data.
"database" : "./SSO/sso_debris.db",

// Set orbit type (ex: SSO, GTO, GEO)
"orbit_type" : "SSO",

// Relative path to output CSV file containing the statistical data.
// Provide the file name with the .csv extension as well.
"output" : "./figures/Table_7_statistical_data_sso.csv"
}
44 changes: 44 additions & 0 deletions asr_2016a_data/config/lambert_scanner/lambert_scanner_geo.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// Copyright (c) 2014-2016 Kartik Kumar, Dinamica Srl (me@kartikkumar.com)
// Distributed under the MIT License.
// See accompanying file LICENSE.md or copy at http://opensource.org/licenses/MIT

// Configuration file for D2D "lambert_scanner" application mode.
{
"mode" : "lambert_scanner",

// Set path to TLE catalog file.
"catalog" : "../asr_2016a_data/GEO/GEO_intelsat_tle.txt",

// Set path to output database (SQLite).
// WARNING: if the database file already exists, it will be overwritten!
"database" : "../asr_2016a_data/GEO/geo_intelsat.db",

// Set departure epoch grid.
// Format: [first departure epoch ([year,month,day,hours,minutes,seconds]), range (s), # of steps].
// All elements in the array first departure epoch must be integers. The elements year, month
// and day are required. The others are optional but must be included from left to right.
// If first departure epoch is left empty, the TLE epoch for the departure object is assumed.
"departure_epoch" : [2016,1,12],


// Set departure epoch grid: [range (s), # of steps]
"departure_epoch_grid" : [172800,50],

// Set time-of-flight grid: [min (s), max (s), # of steps].
"time_of_flight_grid" : [100,518400,50],


// Set flag indicating if transfers are prograde. If set to false, retrograde transfers are
// computed.
// N.B.: Since SQLite doesn't have a boolean type, the flag is stored as an integer
// (0=false, 1=true)
"is_prograde" : true,

// Set maximum number of transfer revolutions (N).
"revolutions_maximum" : 5,

// Set number of transfers to include in shortlist and absolute path to output file [N, file].
// The shortlist is based on the N transfers specified with the lowest transfers Delta-V.
// If N is set to 0 no output will be written to file.
"shortlist" : [100,"../asr_2016a_data/GEO/shortlist_geo.csv"]
}
44 changes: 44 additions & 0 deletions asr_2016a_data/config/lambert_scanner/lambert_scanner_heo.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// Copyright (c) 2014-2016 Kartik Kumar, Dinamica Srl (me@kartikkumar.com)
// Distributed under the MIT License.
// See accompanying file LICENSE.md or copy at http://opensource.org/licenses/MIT

// Configuration file for D2D "lambert_scanner" application mode.
{
"mode" : "lambert_scanner",

// Set path to TLE catalog file.
"catalog" : "../asr_2016a_data/HEO/heo_rocket_bodies_catalog.txt",

// Set path to output database (SQLite).
// WARNING: if the database file already exists, it will be overwritten!
"database" : "../asr_2016a_data/HEO/heo_rocket_bodies.db",

// Set departure epoch grid.
// Format: [first departure epoch ([year,month,day,hours,minutes,seconds]), range (s), # of steps].
// All elements in the array first departure epoch must be integers. The elements year, month
// and day are required. The others are optional but must be included from left to right.
// If first departure epoch is left empty, the TLE epoch for the departure object is assumed.
"departure_epoch" : [2016,1,12],


// Set departure epoch grid: [range (s), # of steps]
"departure_epoch_grid" : [72000,50],

// Set time-of-flight grid: [min (s), max (s), # of steps].
"time_of_flight_grid" : [100,216000,50],


// Set flag indicating if transfers are prograde. If set to false, retrograde transfers are
// computed.
// N.B.: Since SQLite doesn't have a boolean type, the flag is stored as an integer
// (0=false, 1=true)
"is_prograde" : true,

// Set maximum number of transfer revolutions (N).
"revolutions_maximum" : 5,

// Set number of transfers to include in shortlist and absolute path to output file [N, file].
// The shortlist is based on the N transfers specified with the lowest transfers Delta-V.
// If N is set to 0 no output will be written to file.
"shortlist" : [100,"../asr_2016a_data/HEO/shortlist_heo.csv"]
}
44 changes: 44 additions & 0 deletions asr_2016a_data/config/lambert_scanner/lambert_scanner_sso.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// Copyright (c) 2014-2016 Kartik Kumar, Dinamica Srl (me@kartikkumar.com)
// Distributed under the MIT License.
// See accompanying file LICENSE.md or copy at http://opensource.org/licenses/MIT

// Configuration file for D2D "lambert_scanner" application mode.
{
"mode" : "lambert_scanner",

// Set path to TLE catalog file.
"catalog" : "../asr_2016a_data/SSO/SSO_tle.txt",

// Set path to output database (SQLite).
// WARNING: if the database file already exists, it will be overwritten!
"database" : "../asr_2016a_data/SSO/sso_debris.db",

// Set departure epoch grid.
// Format: [first departure epoch ([year,month,day,hours,minutes,seconds]), range (s), # of steps].
// All elements in the array first departure epoch must be integers. The elements year, month
// and day are required. The others are optional but must be included from left to right.
// If first departure epoch is left empty, the TLE epoch for the departure object is assumed.
"departure_epoch" : [2016,1,12],


// Set departure epoch grid: [range (s), # of steps]
"departure_epoch_grid" : [10800,50],

// Set time-of-flight grid: [min (s), max (s), # of steps].
"time_of_flight_grid" : [100,32400,50],


// Set flag indicating if transfers are prograde. If set to false, retrograde transfers are
// computed.
// N.B.: Since SQLite doesn't have a boolean type, the flag is stored as an integer
// (0=false, 1=true)
"is_prograde" : false,

// Set maximum number of transfer revolutions (N).
"revolutions_maximum" : 5,

// Set number of transfers to include in shortlist and absolute path to output file [N, file].
// The shortlist is based on the N transfers specified with the lowest transfers Delta-V.
// If N is set to 0 no output will be written to file.
"shortlist" : [100,"../asr_2016a_data/SSO/shortlist_sso.csv"]
}
Loading