Orbiter-Forum  

Go Back   Orbiter-Forum > Orbiter Addons > Addon Requests
Register Blogs Orbinauts List Social Groups FAQ Projects Mark Forums Read

Addon Requests If you have a request for a new addon or want to know where to find a specific addon, ask it here!

Reply
 
Thread Tools
Old 02-12-2016, 01:24 AM   #1
Richfromengland
Orbinaut
 
Richfromengland's Avatar
Question The Aldrin Cycler?

Hi,

For anyone who knows about the idea of the cycler proposed by Mr Aldrin, you know the former Lunar Module pilot.

Further orbits around the Martian planet line up to eventually get back to the Earth.

Could this be an addon for Orbiter?
Richfromengland is offline   Reply With Quote
Thanked by:
Old 02-12-2016, 03:50 AM   #2
GLS
Addon Developer
 
GLS's Avatar
Default

Probably yes, as Orbiter has shown to be very accurate. I don't know it well enough to know if it needs orbit corrections.
Anyway, it's a very interesting concept and if I was going to Mars now, I'd get 2 of those things going to "pave the way".
GLS is offline   Reply With Quote
Old 02-12-2016, 07:34 AM   #3
jedidia
shoemaker without legs
 
jedidia's Avatar
Default

I was thinking about that every now and then. Technicall it should work, but I have no Idea how stable it would be at high time acceleration. Would probably require user intervention to keep it on track over several cycles.
jedidia is offline   Reply With Quote
Old 02-12-2016, 02:34 PM   #4
Richfromengland
Orbinaut
 
Richfromengland's Avatar
Default

For anyone up to the challenge of creating this type of addon, it would be interesting to see part of Aldrin's plan with assisting to get a crew to Mars.

I've seen on the youtube site a clip with a proposed station that goes into this orbit between the planets.
Richfromengland is offline   Reply With Quote
Old 02-12-2016, 07:31 PM   #5
jroly
Donator
 
jroly's Avatar
Default

I think the cycler is too difficult and impractical to work. I mean how is something supposed to rendevous it, eg wait in LEO for it to arrive, when it arrives apply enough thrust for a Mars transfer, then rendevous.
jroly is offline   Reply With Quote
Old 02-12-2016, 07:36 PM   #6
Urwumpe
Certain Super User
 
Urwumpe's Avatar

Default

Quote:
Originally Posted by jroly View Post
 I think the cycler is too difficult and impractical to work. I mean how is something supposed to rendevous it, eg wait in LEO for it to arrive, when it arrives apply enough thrust for a Mars transfer, then rendevous.
You can also do rendezvous in solar orbit. It is not that hard, quite contrary - the long orbit period makes it a lot easier to simply fly straight towards the cycler from a longer distance.
Urwumpe is offline   Reply With Quote
Thanked by:
Old 02-12-2016, 08:21 PM   #7
jedidia
shoemaker without legs
 
jedidia's Avatar
Default

Dug out the old thread about it (what do you know, you search for "aldrin cycler orbital elements" and of course an OF thread would be among the top 5... )

There's two scenarios as well as links to a few papers, some of them with more math than I can take on a normal day, much less after being shellshocked by a shell script examn we turned out to have to do on paper.

As I expected, the cycler trajectory isn't maintenance free... the required adjustments consume very little propellant, but they need to be made, or you won't see neither earth nor mars again after the first half of the cycle. Automating this in orbiter would seem a major mathematical undertaking.
jedidia is offline   Reply With Quote
Thanked by:
Old 02-13-2016, 12:51 AM   #8
Keithth G
Orbinaut
Default

I really don't know very much about cycler orbits, but based on what I have quickly read from this paper - http://russell.ae.utexas.edu/FinalPu...AAS-03-145.pdf - it would seem that to operate the cycler trajectory requires some very precise gravity-assist encounters for it to operate. Performing any gravity-assist is like balancing on a knife's edge: a slight variation in approach altitude or angle will have a large effect on the outgoing trajectory. No matter how you do it, course corrections will be required and automating those course corrections is challenging.

The best way that I can think of doing it is for someone to invest time in designing a 'reference trajectory' for the cycler orbit. This reference trajectory would be specific to a particular date range and would specify the 'ideal' state vectors (position and velocity) of the spacecraft at any point in time during the cycler orbit. Then, one would set up some form of autopilot that would make small adjustments to speed and direction so as to stay 'close' to the reference trajectory - with 1 km and 1 m/s say of the 'ideal' position and velocity. Under high time-warp, though, this scheme may fail miserably.

Last edited by Keithth G; 03-06-2017 at 12:12 AM.
Keithth G is offline   Reply With Quote
Thanked by:
Old 02-13-2016, 12:52 AM   #9
Richfromengland
Orbinaut
 
Richfromengland's Avatar
Default

Unfortunately, my maths is at a school's level, really bad.
Richfromengland is offline   Reply With Quote
Old 02-13-2016, 05:31 PM   #10
jedidia
shoemaker without legs
 
jedidia's Avatar
Default

Quote:
The best way that I can think of doing it is for someone to invest time in designing a 'reference trajectory' for the cycler orbit.
I was thinking the same, but I have no clue how to do it. A cycler ephemeris, so to speak.
I guess I could write a short plugin that saves the state vectors to a file every minute or so, and then cycle for a few weeks, but with a six-days work week and two kids, there's no chance of that happening

Quote:
Under high time-warp, though, this scheme may fail miserably.
Not that much of a problem, really. Since you'd have the complete state vectors, you could just make the autopilot cheat at high time acelerations and let him set vessel state vectors directly.
jedidia is offline   Reply With Quote
Old 02-14-2016, 02:18 PM   #11
Keithth G
Orbinaut
Default

Quote:
I was thinking the same, but I have no clue how to do it. A cycler ephemeris, so to speak
Yes, a cycler ephemeris - exactly so.

With some effort, I daresay I could calculate an accurate ephemeris for a cycler orbit and present this in an appropriate (compressed) form. (I would have to learn somewhat more than I do now about cycler orbits first, but that's an acceptable cost.)

But, sadly, my skills don't extend to coding an Orbiter addon.

Last edited by Keithth G; 03-06-2017 at 12:12 AM.
Keithth G is offline   Reply With Quote
Thanked by:
Old 02-14-2016, 02:21 PM   #12
Richfromengland
Orbinaut
 
Richfromengland's Avatar
Default

Folks if it isn't workable, don't worry. It was just another idea.
Richfromengland is offline   Reply With Quote
Old 02-14-2016, 04:40 PM   #13
jedidia
shoemaker without legs
 
jedidia's Avatar
Default

Quote:
But, sadly, my skills don't extend to coding an Orbiter addon.
Coding up a dll that will just keep the cycler stoically on trajectory by setting its state vectors (similar to how ephemeris for planets is handled) would be a breeze, a few hours at most, I could do that pretty easily if I had the data. An actual autopilot would be a lot more work of course, and somewhat outside my area of expertise.
As a bonus, a general enough dll could just as easily be used to do stable lagrange point stations and stuff like that if there's a data set.

Quote:
It was just another idea.
One that I happen to like, and if there's a chance I can get somebody to do the number crunching, I have to seize the opportunity

Last edited by jedidia; 02-14-2016 at 04:44 PM.
jedidia is offline   Reply With Quote
Thanked by:
Old 02-14-2016, 04:48 PM   #14
Richfromengland
Orbinaut
 
Richfromengland's Avatar
Default

Ah right. Well for anyone that can try this out, should be interesting. As for an actual cycler outpost?
Richfromengland is offline   Reply With Quote
Old 02-15-2016, 05:36 AM   #15
Keithth G
Orbinaut
Default

Quote:
Coding up a dll that will just keep the cycler stoically on trajectory by setting its state vectors (similar to how ephemeris for planets is handled) would be a breeze, a few hours at most, I could do that pretty easily if I had the data.
OK, I'll have a look at a simple Earth-Mars cycler trajectory scheme. It may take a while before I have a detailed trajectory worked out, though. At the moment, I'm thinking of modelling a basic Aldrin Cycler trajectory. The trajectory plan would cover a time-period of either 15 or 30 years (i.e., once of twice the time taken for the position for the Earth and Mars to return to the same starting configuration with respect to the Sun). What I would produce would be a function written in C such that, given any given MJD in the relevant 15 or 30 year time interval, return the state vector of the Aldrin Cycler. The function would have to have access to a trajectory ephemeris file which would decode the data contained therein and map the information to an Orbiter-Friendly state vector representation.

The basic scheme for determining the Cycler trajectory is:

1. Work out the basic logic of the Cycler trajectory assuming circular, co-planar orbits for Earth and Mars;

2. Using this as a starting point, refine the trajectory plan in a linked-conics model that takes not account orbital eccentricity and inclination of Earth and Mars; then

3. Using that as a starting point, produce the full ephemeris trajectory solution using an n-body integrator; and finally

4. Encode the n-body ephemeris trajectory as a data file that can be decoded using the C function call.

I have all the tools needed to do this - but it still isn't the work of a few moments. The result, though, will be a high-fidelity model consistent with Orbiter's underlying gravity model and accurate to, say, < 10^-2 m/s in speed and < 10 m in position.


Quote:
As a bonus, a general enough dll could just as easily be used to do stable lagrange point stations and stuff like that if there's a data set.
Strictly speaking, you don't need a data set for this. There is an analytical solution for the elliptical restricted three-body problem. I've written a lua script which calculates the state-vectors for a body at the Earth-Moon L2 lagrange point here: http://www.orbiter-forum.com/showthread.php?t=36110. The speed is accurate to < 10^-3 m/s and position < 1 m. For convenience, the script is copied below:

Code:
     -- get the handle for the spacecraft
       ves 		 = vessel.get_focushandle()

       -- get the handles for the Earth and the Moon
       earth		 = oapi.get_objhandle("Earth")
       moon		 = oapi.get_objhandle("Moon")

       -- define a set of constants relevant to the Earth-Moon L2 libration points
       GM1		= 398600440157821.0    -- gravitational constant for the Earth (SI units)
       GM2		=   4902794935300.0	   -- gravitational constant for the Moon  (SI units)
       GM	        = GM1 + GM2
       MU1		= GM1 / GM
       MU2		= GM2 / GM
       alpha		= 1.155682111433621	   -- the libration parameter for the Earth-Moon L2 point
	
	-- get the current location of the vessel
	q 		= oapi.get_globalpos(ves)
	p 		= oapi.get_globalvel(ves)
	
	-- get the current location of Earth
	q_ear 	= oapi.get_globalpos(earth)
	p_ear 	= oapi.get_globalvel(earth)
	
	-- get the current location of the Moon
	q_mon 	= oapi.get_globalpos(moon)
	p_mon 	= oapi.get_globalvel(moon)
	
	-- calculate the weighted average position and velocity of the Earth and Moon
	com   = vec.add( vec.mul( q_ear, MU1 ), vec.mul( q_mon, MU2 ) )
	cov	 = vec.add( vec.mul( p_ear, MU1 ), vec.mul( p_mon, MU2 ) )
	
	-- calculate the position of the Moon relative to the Earth
	r	= vec.sub( q_mon, q_ear )
	v	= vec.sub( p_mon, p_ear )
	
	-- calculate some quantities that are used multiple times in the ensuing calculations
	vsq	= vec.dotp( v, v)
	rln	= vec.length( r )
	rv	= vec.dotp( r, v)
	
	-- calculate:
	--    'e'	- the eccentricity vector of the Moon relative to Earth
	--    'ecc' - the eccentricity
	--    'a'	- the semi-major axis
	--    'nu'	- the mean anomaly
	e	= vec.sub( vec.sub( vec.mul( r, vsq / GM ), vec.mul( v, rv / GM) ), vec.mul( r, 1.0 / rln ) )
	ecc	= vec.length(e)
	a	= GM / (2.0 * GM / rln - vsq)
	nu	= math.acos( vec.dotp(e, r) / ecc / rln)
	if rv < 0 then
		nu 		= 2.0 * math.pi - nu
	end
	
	-- calculate the unit vectors of a dextral reference frame aligned with the Moon's
	-- orbital plane and orbital orientation:
	--		'xhat'	- a unit vector pointing in the direction to the Moon's orbital periapsis
	--		'zhat'	- a unit vector point normal to the Moon's orbital plane
	--		'yhat'	- the third unit vector to complete the trio
	xhat	= vec.unit( e )
	zhat	= vec.unit( vec.crossp( r   , v    ) )
	yhat	= vec.unit( vec.crossp( zhat, xhat ) )
	
	-- calculate some more intermediate values
	k1	= a * (1.0 - ecc * ecc )
	k2	= math.sqrt( GM / k1 )
	cnu	= math.cos(nu)
	snu	= math.sin(nu)
	k3	= 1.0 + ecc * cnu		
	
	-- calculate the position of the Lagrange point in the dextral reference frame:
	--		'qx'	- the position of the Lagrange point in the 'xhat' direction
	--		'qy'	- the position of the Lagrange point in the 'yhat' direction
	--		'qz' = 0  by definition
	--		'px'	- the speed of the Lagrange point in the 'xhat' direction
	--		'py' 	- the speed of the Lagrange point in the 'yhat' direction
	--		'pz' = 0  by definition
	qx	=  alpha * k1 * cnu / k3
	qy	=  alpha * k1 * snu / k3
	px	= -alpha * snu * k2
	py	=  alpha * (ecc + cnu) * k2
	
	-- caluclate the position of the Lagrange point in Orbiter's global reference frame
	l2qa	= vec.mul( xhat, qx   )
	l2qb	= vec.mul( yhat, qy   )
	l2qc	= vec.add( l2qa, l2qb )
	l2q    = vec.add( l2qc, com  )
	
	-- calculate the velocity of the Lagrange point in Orbiter's global reference frame
	l2pa	= vec.mul( xhat, px   )
	l2pb	= vec.mul( yhat, py   )
	l2pc	= vec.add( l2pa, l2pb )
	l2p	= vec.add( l2pc, cos  )
I doubt that it would take much effort to convert this into a C function. Moreover, by changing the value of 'alpha' in the above script to 0.83691519487205988712 one could also calculate the state vectors for the Earth-Moon L1. And if one wants to change the gravitational constants to reflect bodies other than the Earth and Moon, one could calculate similar points for other bodies - e.g. Sun-Earth.

Last edited by Keithth G; 03-06-2017 at 12:11 AM.
Keithth G is offline   Reply With Quote
Thanked by:
Reply

  Orbiter-Forum > Orbiter Addons > Addon Requests


Thread Tools

Posting Rules
BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
Forum Jump


All times are GMT. The time now is 03:07 PM.

Quick Links Need Help?


About Us | Rules & Guidelines | TOS Policy | Privacy Policy

Orbiter-Forum is hosted at Orbithangar.com
Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Copyright 2007 - 2017, Orbiter-Forum.com. All rights reserved.