-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 02723d6
Showing
34 changed files
with
1,916 additions
and
0 deletions.
There are no files selected for viewing
Empty file.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# Scalable techniques for autonomous construction of a paraboloidal space telescope in an elliptic orbit | ||
|
||
Code for the paper 'Scalable techniques for autonomous construction of a paraboloidal space telescope in an elliptic orbit' by Aaron John Sabu and Dwaipayan Mukherjee | ||
|
||
*** | ||
### Abstract | ||
|
||
It is well acknowledged that human-made technology is not always at par with human curiosity, and an example is the inability to send large telescopes to outer space despite their higher resolution and less atmospheric interference. In this paper, we develop a framework for autonomous in-orbit construction using spacecraft formation such that a large telescope can be built in an elliptic orbit using multiple spacecraft. We split this problem into four steps for converging the position and attitude of each spacecraft at predefined values around a central spacecraft. Each spacecraft performs attitude synchronization with its neighbors to match its three degrees of freedom in orientation as a parabolic mirror. Simulations validate our proposed methods and the paper concludes with an open possibility of using other techniques to improve upon existing results. | ||
|
||
*** | ||
### Disclaimers | ||
|
||
The work was supported in part by an ISRO funded project bearing code RD/0120-ISROC00-007. Aaron John Sabu (<p><a href="mailto:[email protected]">[email protected]</a></p>) is an undergraduate student and Dwaipayan Mukherjee (<p><a href="mailto:[email protected]">[email protected]</a></p>) is an Asst. Professor with the Dept. of Electrical Engineering, Indian Institute of Technology Bombay, Powai, Mumbai, Maharashtra, India} |
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,131 @@ | ||
3.0 | ||
|
||
--A-- | ||
D > G > S | ||
[[-1.99784066, 0.61604728, 1.44877280], | ||
[ 0.43721149, -1.30390749, 1.55301486], | ||
[ 0.55915338, 2.13624886, -0.14987920], | ||
[ 0.74984804, -0.75304311, -0.66474228], | ||
[ 0.77075604, 0.87307288, -1.74438445], | ||
[-2.48796971, 0.33908818, 0.52480498], | ||
[-1.44477932, 2.52165383, 2.41264048], | ||
[ 1.55365393, -1.82890293, -0.55059913], | ||
[ 1.45058134, 1.89266631, 0.43396470], | ||
[ 0.22868990, 2.95146754, -2.74768372], | ||
[-1.71631586, 2.58945856, -0.11163515], | ||
[-0.84144055, -2.40168379, -2.58900144], | ||
[-0.44148137, 1.84936233, 0.67115186], | ||
[-0.06777739, 2.44530060, 2.95190673], | ||
[ 0.14748820, 0.12127658, -0.61558311], | ||
[-1.80767048, -1.17608603, -2.55560203], | ||
[-1.34076421, -1.64031815, 0.73177507], | ||
[ 2.53145494, -1.02498501, 1.35597693]] | ||
|
||
--B-- | ||
D > G > S | ||
[[ 2.46627585, -0.00365783, -0.86766388], | ||
[ 1.38883444, -0.56932258, 0.85956188], | ||
[-1.25104624, -2.68999598, -0.15664761], | ||
[ 2.16808202, -0.95045921, 1.20754068], | ||
[-1.08903682, 2.60837156, -2.49131614], | ||
[-1.04670232, 1.20957410, -0.72505279], | ||
[-0.84559224, 0.68161740, 2.11365239], | ||
[ 0.64575732, -2.13576666, 0.09339260], | ||
[-2.55221737, -1.67415379, 0.47248629], | ||
[ 0.41558132, 1.75146335, 0.00541343], | ||
[ 2.86279623, 1.26809123, -2.71293342], | ||
[-2.88389105, -2.95786390, 2.92524385], | ||
[ 0.84024423, 1.61057085, 0.91733068], | ||
[ 0.10149796, -2.83326188, -1.57948462], | ||
[-0.15197260, -0.44450887, 0.2405081 ], | ||
[ 1.27905471, -0.58512968, -2.53469193], | ||
[ 2.49569954, 1.30540283, 0.43167947], | ||
[-2.65665346, 1.99028373, -0.42741740]] | ||
|
||
1.0 | ||
|
||
--C-- | ||
D = G > S | ||
[[-2.29364301, 1.26911104, -1.71273596], | ||
[-0.30499439, 1.46048986, 0.84474138], | ||
[ 1.20553178, 0.33463571, -0.45545043], | ||
[ 0.00737466, 2.69883730, 2.20860278], | ||
[-0.13433824, -2.45255776, 0.01869546], | ||
[ 0.87274879, -1.20121056, -2.55504595], | ||
[ 1.82212589, -2.88499068, -2.82692798], | ||
[ 1.32413586, 1.38993451, -1.85659537], | ||
[ 2.79356145, -1.84074991, 1.31134734], | ||
[-2.45089991, 2.86245750, -0.92419686], | ||
[ 0.15760877, -1.63576172, -0.10413470], | ||
[ 0.22633934, 2.55351914, -2.75085611], | ||
[-2.19934209, -1.28014131, 1.85593947], | ||
[ 1.72048638, 1.75400878, -1.49284592], | ||
[ 2.66459536, 0.56970289, -1.64283741], | ||
[-0.26072675, 1.64575550, -1.69458091], | ||
[-1.34255969, 2.06506644, -1.14374557], | ||
[ 1.99163571, -0.24707069, 1.72698837]] | ||
|
||
--D-- | ||
D = G > S | ||
[[-0.19737204, -0.29886555, 0.36305570], | ||
[ 0.30534063, -2.06205336, 0.85791965], | ||
[-0.31816348, -1.50494332, 1.20013356], | ||
[ 2.37388446, -0.77882058, -2.38966806], | ||
[-1.26343545, 1.35004930, -2.50027709], | ||
[-2.79467901, 1.98856370, -2.35316213], | ||
[ 2.13003201, -1.86269152, 1.10253472], | ||
[-0.67690309, 0.79051274, 2.26351260], | ||
[-0.59926310, -1.34331266, 2.17618607], | ||
[ 1.53274718, 2.75566058, -2.39949286], | ||
[ 2.50468947, -0.79161118, 1.89192649], | ||
[-1.34296578, -2.47305670, 0.32794480], | ||
[ 0.04971921, 0.31507048, 1.23422994], | ||
[-1.49500104, 1.42257160, 0.02548234], | ||
[ 1.64378575, 0.50837734, -1.16396825], | ||
[-0.15880788, -1.60500876, 0.57350283], | ||
[ 1.97794503, -1.58259626, 0.98126498], | ||
[-2.37234622, -2.92121553, -0.15240542]] | ||
|
||
0.25 | ||
|
||
--E-- | ||
D = G = S | ||
[[-1.92787107, 0.63939344, -1.74877778], | ||
[-0.30968752, -2.78756743, -1.91208517], | ||
[-1.69563097, -0.54375145, -2.04193897], | ||
[-1.19935501, 1.31577906, -2.54588322], | ||
[-2.98803831, -0.36685609, -2.54239741], | ||
[ 1.12833730, -2.12756837, -1.36607097], | ||
[ 1.61800051, 0.18784015, 0.28711688], | ||
[ 1.92682527, 2.09294888, 0.98220375], | ||
[ 1.97998589, 2.24655191, 0.14703710], | ||
[ 0.47940243, 1.69466183, 0.05916908], | ||
[-2.68327754, -1.14751618, 2.31631216], | ||
[ 0.18796644, 2.84885841, 1.20630379], | ||
[-1.69364916, 0.59877788, 2.61884078], | ||
[ 1.43370002, 2.63335636, -1.51988725], | ||
[-1.03356433, 2.15331561, -2.18635319], | ||
[ 2.88018742, -2.11038576, -0.34113182], | ||
[-2.52695979, 2.31005279, 1.70296583], | ||
[-0.95626977, -1.69848325, 1.65944077]] | ||
|
||
--F-- | ||
D = G = S | ||
[[ 0.59172304, 2.18793548, 1.10135151], | ||
[ 0.62986765, -0.44234319, -1.62572802], | ||
[-0.95098904, -2.35326135, 0.49000436], | ||
[-1.32871148, -2.64306835, -2.85634444], | ||
[-1.09643693, -2.35856294, 0.17633947], | ||
[ 0.3299397 , 2.37370064, 0.27763727], | ||
[-2.69151347, -1.59395844, -2.30497489], | ||
[ 1.08577260, -0.95740143, 2.48758025], | ||
[ 2.67521330, 2.29325859, -1.98293085], | ||
[ 2.43850247, 1.28220791, 2.44042221], | ||
[-1.97818562, -0.47634221, -0.88855438], | ||
[ 0.93433954, -0.24520145, 1.18601613], | ||
[-1.60052782, 0.68527799, 1.53182175], | ||
[-0.61836986, 0.16281878, 2.30119389], | ||
[-0.09954839, 0.96592547, 0.57013133], | ||
[ 2.62370233, 0.60724350, 2.32005221], | ||
[ 1.13604260, 1.25932709, 1.28721869], | ||
[ 0.79380202, -1.49476592, -0.22534066]] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
from copy import deepcopy | ||
from math import sqrt, sin, cos, radians | ||
from simulate import simulatePL | ||
from glideslope import multiAgentGlideslope | ||
from initializations import poseInit | ||
|
||
numAgents = 18 | ||
numJumps = 5 | ||
|
||
innerRad = 0.4 | ||
R_T = [[innerRad*1*sin(radians( 0)), innerRad*1*cos(radians( 0)), 0.000], | ||
[innerRad*1*sin(radians( 60)), innerRad*1*cos(radians( 60)), 0.000], | ||
[innerRad*1*sin(radians(120)), innerRad*1*cos(radians(120)), 0.000], | ||
[innerRad*1*sin(radians(180)), innerRad*1*cos(radians(180)), 0.000], | ||
[innerRad*1*sin(radians(240)), innerRad*1*cos(radians(240)), 0.000], | ||
[innerRad*1*sin(radians(300)), innerRad*1*cos(radians(300)), 0.000], | ||
|
||
[innerRad*2*sin(radians( 0)), innerRad*2*cos(radians( 0)), 0.000], | ||
[innerRad*2*sin(radians( 30)), innerRad*2*cos(radians( 30)), 0.000], | ||
[innerRad*2*sin(radians( 60)), innerRad*2*cos(radians( 60)), 0.000], | ||
[innerRad*2*sin(radians( 90)), innerRad*2*cos(radians( 90)), 0.000], | ||
[innerRad*2*sin(radians(120)), innerRad*2*cos(radians(120)), 0.000], | ||
[innerRad*2*sin(radians(150)), innerRad*2*cos(radians(150)), 0.000], | ||
[innerRad*2*sin(radians(180)), innerRad*2*cos(radians(180)), 0.000], | ||
[innerRad*2*sin(radians(210)), innerRad*2*cos(radians(210)), 0.000], | ||
[innerRad*2*sin(radians(240)), innerRad*2*cos(radians(240)), 0.000], | ||
[innerRad*2*sin(radians(270)), innerRad*2*cos(radians(270)), 0.000], | ||
[innerRad*2*sin(radians(300)), innerRad*2*cos(radians(300)), 0.000], | ||
[innerRad*2*sin(radians(330)), innerRad*2*cos(radians(330)), 0.000],] | ||
Rdot0 = [[0.00, 0.00, 0.00] for i in range(numAgents)] | ||
R = 6870 + 405 | ||
mu = 398600.50 | ||
omega = sqrt(mu/R**3) | ||
nframes = 400 | ||
dt = 4000.0/nframes | ||
e = 0.05 | ||
h = (R**2)*omega | ||
config = [[1, 2, 1, 1, 1, 2], | ||
[2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2]] | ||
fConfig = [i for i in range(numAgents)] | ||
|
||
Neighbors = [[0 for i in range(numAgents)] for i in range(numAgents)] | ||
Nghradius = 3.00 | ||
|
||
# RRR, _ = poseInit(numAgents) | ||
# print(RRR) | ||
|
||
RRR = [[ 2.29364301, 1.26911104, -1.71273596], | ||
[-2.30499439, 1.46048986, 0.84474138], | ||
[-2.20553178, 0.33463571, -0.45545043], | ||
[-2.00737466, 2.69883730, 2.20860278], | ||
[-2.13433824, -2.45255776, 0.01869546], | ||
[-2.87274879, -1.20121056, -2.55504595], | ||
[-2.82212589, -2.88499068, -2.82692798], | ||
[-2.32413586, 1.38993451, -1.85659537], | ||
[-2.79356145, -1.84074991, 1.31134734], | ||
[-2.45089991, 2.86245750, -0.92419686], | ||
[-2.15760877, -1.63576172, -0.10413470], | ||
[-2.22633934, 2.55351914, -2.75085611], | ||
[-2.19934209, -1.28014131, 1.85593947], | ||
[-2.72048638, 1.75400878, -1.49284592], | ||
[-2.66459536, 0.56970289, -1.64283741], | ||
[-2.26072675, 1.64575550, -1.69458091], | ||
[-2.34255969, 2.06506644, -1.14374557], | ||
[-2.99163571, -0.24707069, 1.72698837]] | ||
|
||
R_0 = deepcopy(RRR) | ||
Neighbors = [[0 for i in range(numAgents)] for i in range(numAgents)] | ||
X, Y, Z, Deltav, Energy, NeighborsOutput = multiAgentGlideslope(Neighbors, Nghradius, | ||
R_0, Rdot0, R_T, R, e, h, omega, | ||
numJumps, dt, nframes, | ||
auctionParams = (True, 'Standard', False), | ||
Config = (config, fConfig)) | ||
NeighborsDistanceOT = NeighborsOutput[0] | ||
NeighborsConfigOT = NeighborsOutput[1] | ||
simulatePL ('08A-Standard.html', X, Y, Z, ['Spacecraft '+str(agent) for agent in range(numAgents)]) | ||
|
||
R_0 = deepcopy(RRR) | ||
Neighbors = [[0 for i in range(numAgents)] for i in range(numAgents)] | ||
X, Y, Z, Deltav, Energy, NeighborsOutput = multiAgentGlideslope(Neighbors, Nghradius, | ||
R_0, Rdot0, R_T, R, e, h, omega, | ||
numJumps, dt, nframes, | ||
auctionParams = (True, 'Distributed', False), | ||
Config = (config, fConfig)) | ||
NeighborsDistanceOT = NeighborsOutput[0] | ||
NeighborsConfigOT = NeighborsOutput[1] | ||
simulatePL ('08B-Distributed.html', X, Y, Z, ['Spacecraft '+str(agent) for agent in range(numAgents)]) | ||
|
||
# R_0 = deepcopy(RRR) | ||
# Neighbors = [[0 for i in range(numAgents)] for i in range(numAgents)] | ||
# X, Y, Z, Deltav, Energy, NeighborsOutput = multiAgentGlideslope(Neighbors, Nghradius, | ||
# R_0, Rdot0, R_T, R, e, h, omega, | ||
# numJumps, dt, nframes, | ||
# auctionParams = (True, 'Consensus', False), | ||
# Config = (config, fConfig)) | ||
# NeighborsDistanceOT = NeighborsOutput[0] | ||
# NeighborsConfigOT = NeighborsOutput[1] | ||
# simulatePL ('08C-Consensus.html', X, Y, Z, ['Spacecraft '+str(agent) for agent in range(numAgents)]) | ||
|
||
R_0 = deepcopy(RRR) | ||
Neighbors = [[0 for i in range(numAgents)] for i in range(numAgents)] | ||
X, Y, Z, Deltav, Energy, NeighborsOutput = multiAgentGlideslope(Neighbors, Nghradius, | ||
R_0, Rdot0, R_T, R, e, h, omega, | ||
numJumps, dt, nframes, | ||
auctionParams = (True, 'Greedy', False), | ||
Config = (config, fConfig)) | ||
NeighborsDistanceOT = NeighborsOutput[0] | ||
NeighborsConfigOT = NeighborsOutput[1] | ||
simulatePL ('08D-Greedy.html', X, Y, Z, ['Spacecraft '+str(agent) for agent in range(numAgents)]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
from numpy import cos, sin, multiply | ||
|
||
# True Anomaly from Time | ||
def getTrueAnomalyFromTime(omega, e, T, calcDerivs = False): | ||
M = multiply(omega, T) | ||
c1 = (2.0*e -(e**3.0)/4.0) | ||
c2 = (5.0/4) *(e**2.0) | ||
c3 = (13.0/12)*(e**3.0) | ||
F = M + c1*sin(M) + c2*sin(2.0*M) + c3*sin(3.0*M) | ||
if not calcDerivs: | ||
return F | ||
cd1 = (1.0+(e*cos(F)))**2 | ||
cd2 = (1.0-(e**2.0)) **(3.0/2) | ||
Fd = cd1*omega/cd2 | ||
cdd1 = -2.0*e*(Fd**2.0) | ||
cdd2 = (1+(e*cos(F))) | ||
Fdd = cdd1*sin(F)/cdd2 | ||
return F, Fd, Fdd |
Oops, something went wrong.