MontBlanc2012
Active member
- Joined
- Aug 13, 2017
- Messages
- 138
- Reaction score
- 26
- Points
- 28
Code:
In the thread in the Maths & Physics section J4 - J5 perturbations, it was pointed out that that the gravitational perturbation calculations needed to be carried out in the Earth-centred Earth-fixed (ECEF) reference - i.e., one that is centred on the Earth but rotates along with the Earth.
However, to calculate the trajectory of a satellite in orbit reasonably close to the Earth, it is conventional to integrate the equations of motion in the Earth-centred inertial (ECI) reference frame. Although this reference frame includes a reference to 'inertial' in its name, it isn't really an inertial reference frame and if we want to do things properly we should really add tidal accelerations (due to the Sun and the Moon) in order to calculate the right trajectory.
In addition to dealing with tidal forces in the ECI reference frame, somewhere in the calculation of gravitational forces, one also needs to convert from the ECI reference frame to the ECEF reference frame (and back again) in order to add in the 'non-spherical' gravitational perturbations. as discussed in the aforementioned thread.
However, if we are going to do stuff in the ECI and ECEF reference frames, we first need to understand the ECI reference frame first.
What is the ECI refernce frame?
Orbiter bases all of its internal calculations on a 'global' reference frame notionally centred on the barycentre of the Solar System [see comment ^1 below]. The position and velocity of all bodies and vessels in Orbiter are tracked using this global reference frame. This reference to a base 'global' reference frame is conventional and JPL and all other relevant bodies use the same basic idea that all events in space-time are reference and related by some form of universal reference frame.
In Orbiter, this global reference frame is treated as a Newtonian inertial reference frame so that if one were able to remove all of the gravitational force from all of the planets and the Sun in the program, a spacecraft at rest in this reference would remain at rest [see comment ^2 below] thereby satisfying one of the standard Newtonian tests of an inertial reference frame.
However, what it also means is that if one wishes to describe the motion of a spacecraft near Earth, one is using a coordinate system referenced to the Solar System barycentre - a point in space roughly 1.5 x 10^11 m away. Although there is no reason why one couldn't carry out all of one's calculations in this global and inertial reference frame, it clearly isn't a natural representation of a satellite in orbit around the Earth where it would be far more natural to represent the equations of motion of the satellite in coordinates centred on the Earth. And if the Earth were an isolated (large) mass, then because of the huge difference in mass between the Earth and the satellite, a reference frame centred on the Earth would also be an inertial reference frame. In which case we would simply be left with the standard Keplerian equations of motion for gravity without further ado.
The problem is, though, that the Earth is not an isolated mass. The Earth and Moon are in orbit around the Earth-Moon barycentre and, in turn, the Earth-Moon barycentre is in orbit around the Sun. (To a very good approximation, we could ignore the gravitational contributions from the other planets in the Solar System but if we wanted to be pedantic about the thing, we may also want to take into account the gravitational contribution of all of the other planets as well.)
These more complex motion of the Earth created by the gravitational influence of other planetary bodies means that a non-rotating reference frame centred on the Earth is an accelerated reference frame because the Earth is in 'free fall' in its local gravitational field induced by the Sun, Moon and other bodies. Now if you could free fall in this accelerating frame of reference exaclty alongside the centre of the Earth, you would not notice this acceleration because you and the Earth would be in free fall together. In practice, though, you must be at some non-zero distance from the Earth (at least 6371 km, presumably) and so you cannot be in free fall exactly alongside the Earth. And this means that you experience a slightly different free fall acceleration from the Earth, which means that the acceleration of the Earth appears to be slightly different from your own. The closer you are to the centre of the Earth, the smaller this effect. This anomalous acceleration differential between two closeby bodies in free fall is usually termed a 'tidal force' because from an observer's standpoint on the surface of the Earth, there appears to be an anomalous tidal force tugging on things (witness the behaviour of the oceans).
The ECI reference frame is, then, a non-rotating reference frame centred on the Earth that takes account of the accelerated motion of the Earth by adding tidal contributions due to the differential gravitational influence due to other massive bodies (e.g., the Sun and the Moon) into the equations of motion in the ECI reference frame. These tidal contributions are 'fictitious' forces (in much the same way that the centrifugal force in a rotating reference frame is a 'fictitious' force) but everything works out so long as we make sure that we include these tidal forces in our ECI reference frame calculations.
OK, so how do we calculate the tidal forces so that we can include them in our calculations?
Derivation of the ECI equations of motion
To begin with, let's simplify things and ignore the gravitational contribution from the Sun and just focus on the Earth-Moon system. In this case, if we fix the origin of our coordinate system on the Earth-Moon barycentre, we should have an inertial reference frame. In this case, we can write down our equations of motion as:
[MATH]x''(t) = -\frac{\mu _e}{\Delta r_e^3}\left(x(t)-x_e(t)\right)-\frac{\mu _m}{\Delta r_m^3}\left(x(t)-x_m(t)\right)[/MATH]
[MATH]y''(t) = -\frac{\mu _e}{\Delta r_e^3}\left(y(t)-y_e(t)\right)-\frac{\mu _m}{\Delta r_m^3}\left(y(t)-y_m(t)\right)[/MATH]
[MATH]z''(t) = -\frac{\mu _e}{\Delta r_e^3}\left(z(t)-z_e(t)\right)-\frac{\mu _m}{\Delta r_m^3}\left(z(t)-z_m(t)\right)[/MATH]
where:
* [MATH]\left(x(t), y(t), z(t)\right)[/MATH] is the location of the satellite in the EMB inertial reference frame;
* [MATH]\left(x_e(t), y_e(t), z_e(t)\right)[/MATH] is the location of the Earth in the EMB inertial reference frame;
* [MATH]\left(x_m(t), y_m(t), z_m(t)\right)[/MATH] is the location of the Moon in the EMB inertial reference frame;
* [MATH]\Delta r_e^3[/MATH] is the standard Euclidian distance of the satellite from the centre of the Earth;
* [MATH]\Delta r_m^3[/MATH] is the standard Euclidian distance of the satellite from the centre of the Moon;
* [MATH]\mu_e[/MATH] is the gravitational parameter ('GM') for the Earth; and
* [MATH]\mu_m[/MATH] is the gravitational parameter ('GM') for the Moon.
What you see here in these equations is on the right-hand side of each a force due to the gravitational attraction of the Earth; and force due to the gravitation attraction of the Moon. Although it looks a little complex, each is just the component of the normal Keplerian contribution from each body as one might expect.
So, far we've been working in the inertial reference frame centred on the EMB. Let's shift the origin of our coordinate system to the centre of the Earth by introducing the new variables:
[MATH]X(t) = x(t) - x_e(t)[/MATH][MATH]Y(t) = y(t) - y_e(t)[/MATH][MATH]Z(t) = z(t) - y_e(t)[/MATH]
[MATH]X_m(t) = x_m(t) - x_e(t)[/MATH][MATH]Y_m(t) = y_m(t) - y_e(t)[/MATH][MATH]Z_m(t) = z_m(t) - y_e(t)[/MATH]
These new spatial coordinates are just a re-expression of the position of the satellite and the Moon relative to the centre of the Earth rather than the EMB. If we make these substitutions in the above equations of motion, we get:
[MATH]X''(t) + x_e''(t) = -\frac{\mu _e}{\Delta r_e^3}X(t)-\frac{\mu _m}{\Delta r_m^3}\left(X(t)-X_m(t)\right)[/MATH]
[MATH]Y''(t) + y_e''(t) = -\frac{\mu _e}{\Delta r_e^3}Y(t)-\frac{\mu _m}{\Delta r_m^3}\left(Y(t)-Y_m(t)\right)[/MATH]
[MATH]Z''(t) + z_e''(t) = -\frac{\mu _e}{\Delta r_e^3}Z(t)-\frac{\mu _m}{\Delta r_m^3}\left(Z(t)-Z_m(t)\right)[/MATH]
In this expression, the values [MATH]\Delta r_e[/MATH] and [MATH]\Delta r_m[/MATH] don't change although we now calculate them as:
[MATH]\Delta r_e = \sqrt{X(t)^2 + Y(t)^2 + Y(t)^2}[/MATH]
[MATH]\Delta r_m = \sqrt{\left(X(t)-X_m(t)\right)^2 + \left(Y(t)-Y_m(t)\right)^2 + \left(Z(t)-Z_m(t)\right)^2}[/MATH]
This just leaves the terms like [MATH]x_e''(t)[/MATH[. What is this? If we remember that the Earth is indeed accelerating due to gravitational from the Moon only in this simple Earth-Moon system, we can immediately write: [MATH]x_e''(t) = -\frac{\mu_m}{\Delta r_{e,m}^3}\left(x_e(t) - x_m(t)\right)[/MATH]
[MATH]y_e''(t) = -\frac{\mu_m}{\Delta r_{e,m}^3}\left(y_e(t) - y_m(t)\right)[/MATH]
[MATH]z_e''(t) = -\frac{\mu_m}{\Delta r_{e,m}^3}\left(z_e(t) - z_m(t)\right)[/MATH]
where [MATH]\Delta r_{e,m}[/MATH] is the normal Euclidean distance between the Earth and the Moon. The right-hand side of these equations can be thought of as having been expressed in terms of the initial EMB-centric coordinates. If we re-express this in terms of the Earth-centric coordinates, we get:
[MATH]x_e''(t) = +\frac{\mu_m}{\Delta r_{e,m}^3}X_m(t)[/MATH]
[MATH]y_e''(t) = +\frac{\mu_m}{\Delta r_{e,m}^3}Y_m(t)[/MATH]
[MATH]z_e''(t) = +\frac{\mu_m}{\Delta r_{e,m}^3}Z_m(t)[/MATH]
with
[MATH]\Delta r_{e,m} = \sqrt{X_m^2 + Y_m^2 + Z_m^2}[/MATH]
so that in the ECI reference frame, our equations of motion become:
[MATH]X''(t) = -\frac{\mu _e}{\Delta r_e^3}X(t) + \left(\frac{\mu _m}{\Delta r_m^3}\left(X_m(t)-X(t)\right) - \frac{\mu_m}{\Delta r_{e,m}^3}X_m(t)\right)[/MATH]
[MATH]Y''(t) = -\frac{\mu _e}{\Delta r_e^3}Y(t) + \left(\frac{\mu _m}{\Delta r_m^3}\left(Y_m(t)-Y(t)\right) - \frac{\mu_m}{\Delta r_{e,m}^3}Y_m(t)\right)[/MATH]
[MATH]Z''(t) = -\frac{\mu _e}{\Delta r_e^3}Z(t) + \left(\frac{\mu _m}{\Delta r_m^3}\left(Z_m(t)-Z(t)\right) - \frac{\mu_m}{\Delta r_{e,m}^3}Z_m(t)\right)[/MATH]
So, let's quickly recap. The above are the equations of motion for the satellite in the ECI reference frame. On the right-hand side in each equation, we have two terms. The first is the usual Keplerian terms due to the gravitational attraction of the Earth; and the second is the tidal force due to the gravitational influence of the Moon in this case. This tidal force is clearly the difference between the acceleration of the satellite due to the gravitational influence of the Moon and the acceleration of the Earth due to the gravitational influence of the Moon. It is a small differential that gets smaller the closer to the centre of the Earth we get.
A generalisation of the ECI equations of motion
OK, so far we have worked out the ECI reference frame equations of motion for the simple Earth-Moon system. What happens if we include the gravitational attraction of other bodies - most notably the Sun? It turns out that if we add other gravitating bodies into the mix, the equations of motion generalise to:
[MATH]X''(t) = -\frac{\mu _e}{\Delta r_e^3}X(t) + \sum_i\left(\frac{\mu _i}{\Delta r_i^3}\left(X_i(t)-X(t)\right) - \frac{\mu_i}{\Delta r_{e,i}^3}X_i(t)\right)[/MATH]
[MATH]Y''(t) = -\frac{\mu _e}{\Delta r_e^3}Y(t) + \sum_i\left(\frac{\mu _i}{\Delta r_i^3}\left(Y_i(t)-Y(t)\right) - \frac{\mu_i}{\Delta r_{e,i}^3}Y_i(t)\right)[/MATH]
[MATH]Z''(t) = -\frac{\mu _e}{\Delta r_e^3}Z(t) + \sum_i\left(\frac{\mu _i}{\Delta r_i^3}\left(Z_i(t)-Z(t)\right) - \frac{\mu_i}{\Delta r_{e,i}^3}Z_i(t)\right)[/MATH]
Here, the index [MATH]i[/MATH] runs over all of the bodies other than the Earth that exert a gravitational influence over the satellite (and the Earth). For the Earth, it is usually sufficient to include just the Sun and the Moon so that we can set [MATH]i=1[/MATH] for the Sun and [MATH]i=2[/MATH] for the Moon.
How do we calculate the tidal force terms?
So far, we have worked out the equations of motion of a satellite in the ECI reference frame. To calculate the acceleration of the satellite in this frame, we need to calculate the acceleration due to the Earth (the first term in the equations on the right-hand side); and the tidal force terms for each of the other gravitating bodies that we want to include in our gravitational model.
Note, though, that these are not equations of motion for the other gravitating bodies - e.g., the Moon and the Sun. They are only equations of motion for the satellite in which case we presume that we can calculate the position of these gravitating bodies relative to the Earth for any time, [MATH]t[/MATH]. In practice, what we do is use an ephemeris system (such as Orbiter's internal VSOP87 calculations) that allow us to calculate the position of the relevant gravitating bodies (e.g., the Sun and the Moon) in a global, inertial reference frame; and then subtract of the position of the position of the Earth to calculate the same positions relative to the Earth.
An example calculation
So that we can see how this works - and the magnitude of the various components - let's calculate the forces - Keplerian and tidal - acting on a satellite in Low Earth Orbit using the above framework. To be specific, let's use Orbiter's default "Docked at ISS" scenario for the Delta-Glider and use a simple Lua script to extract the relevant information about the position of the ISS, the Moon and the Sun relative to the Earth. From this, we'll calculate the Keplerian and tidal contributions to the ISS's acceleration in the ECI reference frame.
The Lua script is:
Code:
oapi.set_pause(true)
mjd = oapi.get_simmjd()
iss = vessel.get_handle("ISS")
earth = oapi.get_objhandle("Earth")
moon = oapi.get_objhandle("Moon")
sun = oapi.get_objhandle("Sun")
-- get the current location of ISS
q_iss = oapi.get_globalpos(iss)
-- get the current location of Earth
q_ear = oapi.get_globalpos(earth)
-- get the current location of the Moon
q_mon = oapi.get_globalpos(moon)
-- get the current location of Earth
q_sun = oapi.get_globalpos(sun)
-- print out the results to a text file
file = io.open("testmb2012.txt", "w")
io.output(file)
file:write("q_v ", q_iss.x, " ", q_iss.y, " ", q_iss.z, "\n")
print()
file:write("q_e ", q_ear.x, " ", q_ear.y, " ", q_ear.z, "\n")
print()
file:write("q_m ", q_mon.x, " ", q_mon.y, " ", q_mon.z, "\n")
print()
file:write("q_s ", q_sun.x, " ", q_sun.y, " ", q_sun.z, "\n")
print()
file:close()
Since we haven't fixed the date at which these positions are sampled, if you were to run this script you will probably get slightly different values - but in my case the result of this sampling yields the following output:
Code:
q_v -148373734893.55 26948501.361495 16086774535.065
q_e -148375953122.08 20958013.704895 16088895065.916
q_m -148619322792.77 47628076.771252 15794821861.364
q_s -605098472.74882 21242703.919854 -772982266.62465
This gives the x-y-z coordinates of the ISS, the Earth, the Moon and the Sun in Orbiter's global inertial coordinate system. Values are in SI units metres. From this, we can calculate the coordinates of the ISS, the Moon and the Sun in the ECI reference frame simply by subtracting the Earth coordinates from the three others:
[MATH](X, Y, Z) = (2218228.53, 5990487.66, -2120530.85 )\,\text{m}[/MATH]
[MATH](X_m, Y_m, Z_m) = (2296995275914.85, 26670063.07, -294073204.55 )\,\text{m}[/MATH]
[MATH](X_s, Y_s, Z_s) = (147770854649.33, 284690.21, -16861877332.54 )\,\text{m}[/MATH]
To be sure, some of these are big numbers - but that's just a reflection of using SI units for these calculation. Now, if we use the following values for the gravitational parameters for the Earth, Moon and Sun as listed in Wikipedia.
[MATH]\mu_e = 3.986004418\times 10^{14}[/MATH][MATH]\mu_m = 4.9048695\times 10^{12}[/MATH][MATH]\mu_s = 1.32712440018 \times 10^{20}[/MATH]
then we can calculate the Keplerian gravitational acceleration due to the Earth (the first term on the right-hand side of the equations of motion in the ECI reference frame):
[MATH]\left(g_{e,x},g_{e,y},g_{e,z}\right) = \left(-2.89969,-7.83083,2.77198\right)[/MATH] ms^-2
The magnitude of the gravitational acceleration is around 8.80 ms^-2. Which is what one would expect for an object at an orbital altitude slightly less than 400 km.
What about the tidal contribution from the Moon? If we work our way through the calculations, we calculate that the tidal acceleration due to the Moon is:
[MATH]\left(t_{m,x},t_{m,y},t_{m,z}\right) = 10^{-6}\,\left(-0.29185, -0.516213, 0.069545\right) [/MATH] ms^-2
Note the factor of [MATH]10^{-6}[/MATH] in front of the tidal acceleration vector. This says that this is a pretty small acceleration. It isn't zero, but it certainly isn't going to have a huge impact on the satellite's trajectory. Unless we want to do high fidelity trajectory planning for objects in Low Earth Orbit, we can do what Orbiter tools such as TransX normally do in this case which is to ignore it.
And what about the tidal contribution from the Sun? Again, if we work our way though the calculations, we find that the tidal contribution due to the Sun is:
[MATH]\left(t_{s,x},t_{s,y},t_{s,z}\right) = 10^{-6}\,\left(0.204405, -0.241657, 0.052007\right) [/MATH] ms^-2
Again note the leading factor of [MATH]10^{-6}[/MATH]. In other words, the tidal acceleration from the Sun is also very small (and somewhat smaller that the Moon's - about 50% of the Moon's tidal contribution in fact [see comment ^3 below]) so it too can generally be ignored for objects in Low Earth Orbit unless you are wanting to do high fidelity trajectory calculations.
In summary
And that's about all there is to it. So long as one includes the tidal forces attributable to the effects of other gravitating bodies, the ECI reference frame is equivalent to working in a 'pure' inertial coordinate system. And generally speaking the numbers used in the calculations are a lot more 'human friendly than those that appear when using the global inertial reference frame.
[^1]: Orbiter inherits this reference frame the underlying VSOP87 ephemeris system used to calculate the future past, present and future position of the planets (or, more correctly for the Earth Moon system, say, the position of the Earth-Moon barycentre (EMB)).
[^2]: One can approximate this scenario by adjusting the mass of all of the objects in the configuration files to just 1 kg each. Now, the motion of the Sun, planets ad moons will not be correct because those objects will continue to move along rails as if they were massive bodies - but if you use the scenario editor to place a vessel at an arbitrary point in space with zero velocity, then it should remain at rest.
[^3]: If this were not the case, there would be no such thing as spring and neap tides.
Last edited: