From c65b4eda4c1f0ab5f2298455c4d80920695354b7 Mon Sep 17 00:00:00 2001 From: Anson Biggs Date: Mon, 3 May 2021 21:25:47 -0700 Subject: [PATCH] Mostly finished with Eclipse Determination. --- .../air-propulsion-simulation.Rmd | 2 +- .../air-propulsion-simulation.html | 2 + .../figure-html5/unnamed-chunk-6-J1.png | Bin 22805 -> 23076 bytes .../figure-html5/unnamed-chunk-7-J1.png | Bin 49257 -> 48394 bytes .../citations.bib | 29 ++++ .../iss-eclipse-determination.Rmd | 57 ++++-- .../iss-eclipse-determination.html | 150 ++++++++++------ .../figure-html5/unnamed-chunk-6-J1.png | Bin 21978 -> 22194 bytes .../figure-html5/unnamed-chunk-7-J1.png | Bin 0 -> 22194 bytes docs/index.html | 42 ++--- docs/index.xml | 24 +-- .../figure-html5/unnamed-chunk-6-J1.png | Bin 22805 -> 23076 bytes .../figure-html5/unnamed-chunk-7-J1.png | Bin 49257 -> 48394 bytes .../index.html | 10 +- .../citations.bib | 29 ++++ .../index.html | 164 +++++++++++------- .../figure-html5/unnamed-chunk-6-J1.png | Bin 21978 -> 22194 bytes .../figure-html5/unnamed-chunk-7-J1.png | Bin 0 -> 22194 bytes docs/posts/posts.json | 52 +++--- docs/search.json | 8 +- docs/sitemap.xml | 14 +- 21 files changed, 389 insertions(+), 194 deletions(-) create mode 100644 _posts/2021-04-14-iss-eclipse-determination/citations.bib create mode 100644 _posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-7-J1.png create mode 100644 docs/posts/2021-04-14-iss-eclipse-determination/citations.bib create mode 100644 docs/posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-7-J1.png diff --git a/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation.Rmd b/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation.Rmd index 7a71b12..6282d4b 100644 --- a/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation.Rmd +++ b/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation.Rmd @@ -24,7 +24,7 @@ For Capstone my team was tasked with designing a system capable of moving mining ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE, results = 'hide') library(JuliaCall) -#julia_setup(JULIA_HOME = "/opt/julia-1.6.0/bin/") +julia_setup(JULIA_HOME = "/opt/julia-1.6.0/bin/") ``` ```{julia, code_folding=TRUE} diff --git a/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation.html b/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation.html index 21f980c..276f3bb 100644 --- a/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation.html +++ b/_posts/2021-04-01-air-propulsion-simulation/air-propulsion-simulation.html @@ -110,6 +110,8 @@ code span.wa { color: #5e5e5e; font-style: italic; } /* Warning */ + + @@ -1456,7 +1458,7 @@ code span.wa { color: #5e5e5e; font-style: italic; } /* Warning */ @@ -1473,13 +1475,13 @@ code span.wa { color: #5e5e5e; font-style: italic; } /* Warning */
Astrodynamics
-

Determining how much sunlight a body is receiving.

+

Determining how much sunlight a body orbiting a planet is receiving.

Anson Biggs https://ansonbiggs.com -
04-01-2021 +
05-01-2021
@@ -1488,9 +1490,11 @@ code span.wa { color: #5e5e5e; font-style: italic; } /* Warning */
Geometry of an Eclipse
+

The above image is a simple representation of what an eclipse is. You’ll notice there is the Umbra which is complete darkness, then the Penumbra which is a shadow of varying darkness, and then the rest of the orbit is in complete sunlight. For this example I will be using the ISS which has a very low orbit so the Penumbra isn’t much of a problem. You can tell by looking at the diagram that higher altitude orbits would spend more time in the Penumbra.

Body Radius’s and Position Vectors
+

Here is a more detailed view of the eclipse that will make it easier to explain the code. There are 2 Position vectors and 2 radius’s that need to be known for simple eclipse determination. There are more advanced cases where the atmosphere of the body your orbiting can greatly affect the Umbra and Penumbra, and other bodies could also potentially block the Sun, but for this example we will keep it simple since those have very little affect for the ISS’s orbit. Rsun and Rbody are the radius’s of the Sun and Body (In this case Earth) respectively. r_sun_body is a vector from the center of the Sun to the center of the target body. For this example I will only be using one vector, but for more rigorous eclipse determination its important to calculate this at least once a day since it does significantly change over the course of a year. The reason that I am ignoring it at the moment is because there is currently no good way to calculate Ephemerides in Julia but the package is being worked on so I may revisit this and do a more rigorous analysis in the future. r_body_sc is a position vector from the center of the body being orbitted, to the center of our spacecraft.

The Code

@@ -1505,75 +1509,109 @@ Show code theme(:ggplot2)
+

In order to get the orbit for the ISS I used a Two-Line Element which is a data format for explaining orbits. the US Joint Space Operations Center makes these widely available, but https://live.ariss.org/tle/ makes the TLE for the ISS way more accessible (ARISS TLE,” n.d.). The Julia Package SatelliteToolbox.jl makes it super easy to turn a TLE into an orbit that can be propagated. Simply putting the TLE in a string and using the tle string macro like below and now we have access to the information to start making our ISS orbit.

ISS = tle"""
 ISS (ZARYA)
 1 25544U 98067A   21103.84943184  .00000176  00000-0  11381-4 0  9990
 2 25544  51.6434 300.9481 0002858 223.8443 263.8789 15.48881793278621
 """
+
1-element Vector{TLE}:
+ TLE: ISS (ZARYA) (Epoch = 2021-04-13T20:23:10.911)
+
+

Now that we have the TLE we can pass that into SatelliteToolbox’s orbit propagator. Before we can propagate the orbit we need to have a range of time steps to pass into the propagator. The TLE gives the mean motion, n, which is the revolutions per day so using that we can calculate the amount of time required for one orbit which is all that were worried about for this analysis. The propagator returns a tuple containing the Orbital elements, a position vector with units meters, and a velocity vector with units meters per second. For this analysis were only worried about the position vector.

+
+
ISS[1].n
-
orbit = init_orbit_propagator(Val(:twobody), ISS[1]);
-time = 0:0.1:((24 / ISS[1].n) .* 60 * 60);
-o, r, v = propagate!(orbit, time);
+
orbit = init_orbit_propagator(Val(:twobody), ISS[1]);
+time = 0:0.1:((24 / ISS[1].n) .* 60 * 60); # ISS[1].n gives the mean motion, or orbits per day.
+o, r, v = propagate!(orbit, time);
+

Now we just need way to use the radii and vectors discussed earlier to determine if the ISS is in the penumbra or umbra. This is a lot of pretty basic trigonometry and vector math.

+

add more discussion about the math

-
function sunlight(Rbody, r_sun_body, r_body_sc)
-    Rsun = 695_700u"km"
-    
-    hu = Rbody * norm(r_sun_body) / (Rsun - Rbody)
-    
-    θe = acos((r_sun_body ⋅ r_body_sc) / (norm(r_sun_body) * norm(r_body_sc)))
-
-    θu = atan(Rbody / hu)
-    du = hu * sin(θu) / sin(θe + θu)
-
-    θp = π - atan(norm(r_sun_body) / (Rsun + Rbody))
-    dp = Rbody * sin(θp) / cos(θe - θp)
-
-    S = 1
-    if (θe < π / 2) && (norm(r_body_sc) < du)
-        S = 0
-    end
-    if (θe < π / 2) && ((du < norm(r_body_sc)) && (norm(r_body_sc) < dp))
-        S = (norm(r_body_sc .|> u"km") - du) / (dp - du) |> ustrip
-    end
-
-    return S
-end
+
function sunlight(Rbody, r_sun_body, r_body_sc)
+    Rsun = 695_700u"km"
+    
+    hu = Rbody * norm(r_sun_body) / (Rsun - Rbody)
+    
+    θe = acos((r_sun_body ⋅ r_body_sc) / (norm(r_sun_body) * norm(r_body_sc)))
+
+    θu = atan(Rbody / hu)
+    du = hu * sin(θu) / sin(θe + θu)
+
+    θp = π - atan(norm(r_sun_body) / (Rsun + Rbody))
+    dp = Rbody * sin(θp) / cos(θe - θp)
+
+    S = 1
+    if (θe < π / 2) && (norm(r_body_sc) < du)
+        S = 0
+    end
+    if (θe < π / 2) && ((du < norm(r_body_sc)) && (norm(r_body_sc) < dp))
+        S = (norm(r_body_sc .|> u"km") - du) / (dp - du) |> ustrip
+    end
+
+    return S
+end
+

Then we can pass all the values we’ve gathered into the function we just made.

-
S = r .|> R -> sunlight(6371u"km", [0.5370, 1.2606, 0.5466] .* 1e8u"km", R .* u"m")
+
S = r .|> R -> sunlight(6371u"km", [0.5370, 1.2606, 0.5466] .* 1e8u"km", R .* u"m");

Plotting the Results

+

The sunlight function returns values from 0 to 1, 0 being complete darkness, 1 being complete sunlight, and anything between being the fraction of light being received. Again since the ISS has a very low orbit, the amount of time spend in the penumbra is almost insignificant.

Show code -
light_range = range(colorant"black", stop = colorant"yellow", length = 101);
-light_colors = [light_range[unique(round(Int, 1 + s * 100))][1] for s in S];
-
-plot(
-    LinRange(0, 24, length(S)),
-    S .* 100,
-    linewidth = 5,
-    legend = false,
-    color = light_colors,
-);
-
-xlabel!("Time (hr)");
-ylabel!("Sunlight (%)");
-title!("ISS Sunlight Over a Day")
+
# Get fancy with the line color. 
+light_range = range(colorant"black", stop = colorant"orange", length = 101);
+light_colors = [light_range[unique(round(Int, 1 + s * 100))][1] for s in S];
+
+plot(
+    LinRange(0, 24, length(S)),
+    S .* 100,
+    linewidth = 5,
+    legend = false,
+    color = light_colors,
+);
+
+xlabel!("Time (hr)");
+ylabel!("Sunlight (%)");
+title!("ISS Sunlight Over a Day")
-
-Rocket Motor Data: [@thrustcurve] +
+ISS Sunlight

-Figure 1: Rocket Motor Data: [@thrustcurve] +Figure 1: ISS Sunlight

-
+

Looking at the plot its pretty easy to see by the vertical transition from 0% to 100% that the time in the penumbra is limited, but almost counterintutively it also looks like the ISS gets more sunlight than it does darkness. Using the raw sunlight data we can actually calculate almost exactly how much time is spent in each region.

+Time in Sun: +
+
sun = length(S[S.==1])/length(S) * 100
+
62.03323593209401
+
+Time in Darkness: +
+
umbra = length(S[S.==0])/length(S) * 100
+
37.64408511553699
+
+Time in Penumbra: +
+
penumbra = 100 - umbra - sun
+
0.322678952369003
+
+

The ISS spends about 62% of its time in the sun, this is because if you go back and reference the diagram at the beginning of this post you can see that the umbra is actually a cone. This is mainly due to the fact that the Sun is massive compared to the Earth, but this effect is also stronger with orbits of higher altitudes.

+
+
+
+ARISS TLE.” n.d. Amateur Radio on the International Space Station. https://live.ariss.org/tle/. +
+
@@ -1586,6 +1624,8 @@ Figure 1: Rocket Motor Data: [@t
+

References

+

Corrections

If you see mistakes or want to suggest changes, please create an issue on the source repository.

Reuse

diff --git a/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-6-J1.png b/_posts/2021-04-14-iss-eclipse-determination/iss-eclipse-determination_files/figure-html5/unnamed-chunk-6-J1.png index c03875f618a17e64ec24161a2ad94ce28167a7b3..797f95eeca6fa8f719e21b22c710c36e1207fba8 100644 GIT binary patch literal 22194 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

+mK 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 literal 21978 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

+mK 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 literal 0 HcmV?d00001 diff --git a/docs/index.html b/docs/index.html index 18dc08d..3a96b38 100644 --- a/docs/index.html +++ b/docs/index.html @@ -2213,6 +2213,26 @@ function init_posts_list() {

-

Determining how much sunlight a body is receiving.

+

Determining how much sunlight a body orbiting a planet is receiving.

@@ -2124,9 +2132,11 @@ document.addEventListener('DOMContentLoaded', function() {
Geometry of an Eclipse
+

The above image is a simple representation of what an eclipse is. You’ll notice there is the Umbra which is complete darkness, then the Penumbra which is a shadow of varying darkness, and then the rest of the orbit is in complete sunlight. For this example I will be using the ISS which has a very low orbit so the Penumbra isn’t much of a problem. You can tell by looking at the diagram that higher altitude orbits would spend more time in the Penumbra.

Body Radius’s and Position Vectors
+

Here is a more detailed view of the eclipse that will make it easier to explain the code. There are 2 Position vectors and 2 radius’s that need to be known for simple eclipse determination. There are more advanced cases where the atmosphere of the body your orbiting can greatly affect the Umbra and Penumbra, and other bodies could also potentially block the Sun, but for this example we will keep it simple since those have very little affect for the ISS’s orbit. Rsun and Rbody are the radius’s of the Sun and Body (In this case Earth) respectively. r_sun_body is a vector from the center of the Sun to the center of the target body. For this example I will only be using one vector, but for more rigorous eclipse determination its important to calculate this at least once a day since it does significantly change over the course of a year. The reason that I am ignoring it at the moment is because there is currently no good way to calculate Ephemerides in Julia but the package is being worked on so I may revisit this and do a more rigorous analysis in the future. r_body_sc is a position vector from the center of the body being orbitted, to the center of our spacecraft.

The Code

@@ -2141,75 +2151,109 @@ Show code theme(:ggplot2)
+

In order to get the orbit for the ISS I used a Two-Line Element which is a data format for explaining orbits. the US Joint Space Operations Center makes these widely available, but https://live.ariss.org/tle/ makes the TLE for the ISS way more accessible (ARISS TLE,” n.d.). The Julia Package SatelliteToolbox.jl makes it super easy to turn a TLE into an orbit that can be propagated. Simply putting the TLE in a string and using the tle string macro like below and now we have access to the information to start making our ISS orbit.

ISS = tle"""
 ISS (ZARYA)
 1 25544U 98067A   21103.84943184  .00000176  00000-0  11381-4 0  9990
 2 25544  51.6434 300.9481 0002858 223.8443 263.8789 15.48881793278621
 """
+
1-element Vector{TLE}:
+ TLE: ISS (ZARYA) (Epoch = 2021-04-13T20:23:10.911)
+
+

Now that we have the TLE we can pass that into SatelliteToolbox’s orbit propagator. Before we can propagate the orbit we need to have a range of time steps to pass into the propagator. The TLE gives the mean motion, n, which is the revolutions per day so using that we can calculate the amount of time required for one orbit which is all that were worried about for this analysis. The propagator returns a tuple containing the Orbital elements, a position vector with units meters, and a velocity vector with units meters per second. For this analysis were only worried about the position vector.

+
+
ISS[1].n
-
orbit = init_orbit_propagator(Val(:twobody), ISS[1]);
-time = 0:0.1:((24 / ISS[1].n) .* 60 * 60);
-o, r, v = propagate!(orbit, time);
+
orbit = init_orbit_propagator(Val(:twobody), ISS[1]);
+time = 0:0.1:((24 / ISS[1].n) .* 60 * 60); # ISS[1].n gives the mean motion, or orbits per day.
+o, r, v = propagate!(orbit, time);
+

Now we just need way to use the radii and vectors discussed earlier to determine if the ISS is in the penumbra or umbra. This is a lot of pretty basic trigonometry and vector math.

+

add more discussion about the math

-
function sunlight(Rbody, r_sun_body, r_body_sc)
-    Rsun = 695_700u"km"
-    
-    hu = Rbody * norm(r_sun_body) / (Rsun - Rbody)
-    
-    θe = acos((r_sun_body ⋅ r_body_sc) / (norm(r_sun_body) * norm(r_body_sc)))
-
-    θu = atan(Rbody / hu)
-    du = hu * sin(θu) / sin(θe + θu)
-
-    θp = π - atan(norm(r_sun_body) / (Rsun + Rbody))
-    dp = Rbody * sin(θp) / cos(θe - θp)
-
-    S = 1
-    if (θe < π / 2) && (norm(r_body_sc) < du)
-        S = 0
-    end
-    if (θe < π / 2) && ((du < norm(r_body_sc)) && (norm(r_body_sc) < dp))
-        S = (norm(r_body_sc .|> u"km") - du) / (dp - du) |> ustrip
-    end
-
-    return S
-end
+
function sunlight(Rbody, r_sun_body, r_body_sc)
+    Rsun = 695_700u"km"
+    
+    hu = Rbody * norm(r_sun_body) / (Rsun - Rbody)
+    
+    θe = acos((r_sun_body ⋅ r_body_sc) / (norm(r_sun_body) * norm(r_body_sc)))
+
+    θu = atan(Rbody / hu)
+    du = hu * sin(θu) / sin(θe + θu)
+
+    θp = π - atan(norm(r_sun_body) / (Rsun + Rbody))
+    dp = Rbody * sin(θp) / cos(θe - θp)
+
+    S = 1
+    if (θe < π / 2) && (norm(r_body_sc) < du)
+        S = 0
+    end
+    if (θe < π / 2) && ((du < norm(r_body_sc)) && (norm(r_body_sc) < dp))
+        S = (norm(r_body_sc .|> u"km") - du) / (dp - du) |> ustrip
+    end
+
+    return S
+end
+

Then we can pass all the values we’ve gathered into the function we just made.

-
S = r .|> R -> sunlight(6371u"km", [0.5370, 1.2606, 0.5466] .* 1e8u"km", R .* u"m")
+
S = r .|> R -> sunlight(6371u"km", [0.5370, 1.2606, 0.5466] .* 1e8u"km", R .* u"m");

Plotting the Results

+

The sunlight function returns values from 0 to 1, 0 being complete darkness, 1 being complete sunlight, and anything between being the fraction of light being received. Again since the ISS has a very low orbit, the amount of time spend in the penumbra is almost insignificant.

Show code -
light_range = range(colorant"black", stop = colorant"yellow", length = 101);
-light_colors = [light_range[unique(round(Int, 1 + s * 100))][1] for s in S];
-
-plot(
-    LinRange(0, 24, length(S)),
-    S .* 100,
-    linewidth = 5,
-    legend = false,
-    color = light_colors,
-);
-
-xlabel!("Time (hr)");
-ylabel!("Sunlight (%)");
-title!("ISS Sunlight Over a Day")
+
# Get fancy with the line color. 
+light_range = range(colorant"black", stop = colorant"orange", length = 101);
+light_colors = [light_range[unique(round(Int, 1 + s * 100))][1] for s in S];
+
+plot(
+    LinRange(0, 24, length(S)),
+    S .* 100,
+    linewidth = 5,
+    legend = false,
+    color = light_colors,
+);
+
+xlabel!("Time (hr)");
+ylabel!("Sunlight (%)");
+title!("ISS Sunlight Over a Day")
-
-Rocket Motor Data: [@thrustcurve] +
+ISS Sunlight

-Figure 1: Rocket Motor Data: [@thrustcurve] +Figure 1: ISS Sunlight

-
+

Looking at the plot its pretty easy to see by the vertical transition from 0% to 100% that the time in the penumbra is limited, but almost counterintutively it also looks like the ISS gets more sunlight than it does darkness. Using the raw sunlight data we can actually calculate almost exactly how much time is spent in each region.

+Time in Sun: +
+
sun = length(S[S.==1])/length(S) * 100
+
62.03323593209401
+
+Time in Darkness: +
+
umbra = length(S[S.==0])/length(S) * 100
+
37.64408511553699
+
+Time in Penumbra: +
+
penumbra = 100 - umbra - sun
+
0.322678952369003
+
+

The ISS spends about 62% of its time in the sun, this is because if you go back and reference the diagram at the beginning of this post you can see that the umbra is actually a cone. This is mainly due to the fact that the Sun is massive compared to the Earth, but this effect is also stronger with orbits of higher altitudes.

+
+
+
+ARISS TLE.” n.d. Amateur Radio on the International Space Station. https://live.ariss.org/tle/. +
+