# A generalised ideal rocket equation

#### Keithth G

##### New member
The subject of this post is a generalisation of the well-known ideal rocket equation

[MATH]\Delta V = v_e\,\log\frac{m_i}{m_f}[/MATH]
to a Keplerian gravitational field. The resulting equations of motion are relevant to the calculation of optimal launch trajectories (for bodies without atmospheres) and long-duration orbital insertion/escape burns.

Some background
Recently, I was asked to comment upon a derivation of Tsiolkovsky's ideal rocket equation. As I worked my way through the derivation (for the umpteenth time), I mused on the observation that I had often had when doing the same that the ideal rocket equation was derived in a 'flat' one-dimensional gravitational field, but that it should be quite possible to extend the derivation to two dimensions and to include a Keplerian gravitational field into the model framework. Not finding any derivations on the internet (although I'm sure this isn't an original extension of the classic Tsiolkovsky's rocket equation), I decided to sit down and work through the calculus to derive them for myself. This note captures the fruits of that endeavour - and applies it to a couple of particular cases:

1. Optimal gravity turn launch of a craft from the Moon to Low Lunar Orbit; and
2. Insertion into a circular orbit around the Earth from a high-velocity hyperbolic approach trajectory.

Before going on to working though application of the generalised rocket equation to these particular cases, I need to work thought the development of the mathematical apparatus.

The maths
Many Orbiter fans will be familiar with the ideal rocket equation expressed in the form:

[MATH] \Delta V = v_e\,\log\frac{m_i}{m_f} [/MATH]
where [MATH]\Delta V[/MATH] is the change in velocity of the spacecraft; [MATH]v_e[/MATH] is the effective velocity of the exhaust gases (e.g., for the Delta Glider, 40,000 m/s); [MATH]m_i[/MATH] is the initial mass of the rocket; and, of course, [MATH]m_f[/MATH] is the final mass of the rocket.

Less familiar to most people will be the differential form of this equation which can be written as:

[MATH]m(t)\,\frac{d^2}{dt^2}x(t)=-v_e\,m'(t)[/MATH]
Here, [MATH]x(t)[/MATH] is just the position of the spacecraft as a function of time; [MATH]m(t)[/MATH] is the mass of the spacecraft at time [MATH]t[/MATH], and [MATH]x'(t)[/MATH] is the time rate of change of the mass of the spacecraft. The term on the left-hand side is just the force acting on the spacecraft; and the term on the right-hand side is conventionally called 'the thrust'. So, this equation expresses the not unexpected expression that "the force on the rocket equals the thrust from the rocket engines". With appropriate boundary conditions, this second equation represents exactly the same physical system as the first - albeit one that can be recognised as an 'equation of motion' for the spacecraft.

What one immediately notices, here is that cast in this form there gravitational forces have been neglected. If effective gravitational forces are low (because, for example, one executes a manoeuvre on a ballistic trajectory in deep space, or a low thrust manoeuvre in Low Earth Orbit). And in these cases, as most Orbiter uses will recognise, this assumption works just fine. However there are cases, usually where manoeuvres require long burn durations, where gravitational forces cannot be neglected. So, the question arises, how should one include gravity in this framework?

First, let's start off with the equations of motion for a spacecraft in a (two-dimensional) Keplerian gravitational field - absent any thrust:

[MATH]m\,\frac{d^2}{dt^2}x(t) = -\frac{\mu\,m\,x(t)}{\left(x(t)^2+y(t)^2\right)^{3/2}}[/MATH][MATH]m\,\frac{d^2}{dt^2}y(t) = -\frac{\mu\,m\,y(t)}{\left(x(t)^2+y(t)^2\right)^{3/2}}[/MATH]
where [MATH]\mu[/MATH] is the gravitational constant ('GM') for the central gravitating body; [MATH]x(t)[/MATH] and [MATH]y(t)[/MATH] are the cartesian coordinates for the spacecraft at time [MATH]t[/MATH] with the gravitating body being located at the origin of the coordinate system. This equation is generally valid for objects with constant mass. But when a rocket fires its engines, it loses masses - so these equations of motion need to be modified to take into account the varying mass of the system. To do this we need an additional term on the right-hand side that takes into account the rocket's thrust:

[MATH] m(t)\,\frac{d^2}{dt^2}x(t) = -\frac{\mu\,m(t)\,x(t)}{\left(x(t)^2+y(t)^2\right)^{3/2}}-v_e\,m'(t)[/MATH][MATH] m(t)\,\frac{d^2}{dt^2}y(t) = -\frac{\mu\,m(t)\,y(t)}{\left(x(t)^2+y(t)^2\right)^{3/2}}[/MATH]

Here, we have assumed that the thrust is entirely along the positive x-axis. This, then, is a more general representation of the ideal rocket equation for a spacecraft moving in a Keplerian gravitational field.

More generally, the equations of motion can be written as:

[MATH] m(t)\,\frac{d^2}{dt^2}x(t) = -\frac{\mu\,m(t)\,x(t)}{\left(x(t)^2+y(t)^2\right)^{3/2}}-v_e\,m'(t)\,\cos\phi(t)[/MATH][MATH] m(t)\,\frac{d^2}{dt^2}y(t) = -\frac{\mu\,m(t)\,y(t)}{\left(x(t)^2+y(t)^2\right)^{3/2}}-v_e\,m'(t)\,\sin\phi(t)[/MATH]
where [MATH]\phi(t)[/MATH] is the angle that the thrust vector makes with the x-axis. Generally when applying thrusts, the most efficient thing for us to apply thrust is along the prograde or retrograde vectors. In this case, the equations of motion can be written as:

[MATH] m(t)\,\frac{d^2}{dt^2}x(t) = -\frac{\mu\,m(t)\,x(t)}{\left((x(t)^2+y(t)^2)\right)^{3/2}}-v_e\,m'(t)\,\frac{x'(t)}{\sqrt{x'(t)^2+y'(t)^2}}[/MATH][MATH] m(t)\,\frac{d^2}{dt^2}y(t) = -\frac{\mu\,m(t)\,y(t)}{\left((x(t)^2+y(t)^2)\right)^{3/2}}-v_e\,m'(t)\,\frac{y'(t)}{\sqrt{x'(t)^2+y'(t)^2}}[/MATH]
This, then, is our generalised version of the ideal rocket equation written in cartesian coordinates. Of course, it is a bit of a mess. But we can tidy things up a little by converting from cartesian coordinates to polar coordinates such that [MATH]x(t)=r(t)\cos\theta(t)[/MATH] and [MATH]x(t)=r(t)\sin\theta(t)[/MATH]. If we do that then, after a fair amount of manipulation, we get the following equations:

[MATH]\frac{d^2}{dt^2}r(t) = \left(r(t) \,\theta'(t)^2-\frac{\mu }{r(t)^2}\right)-v_e\frac{\,m'(t)}{m(t)}\frac{r'(t)}{\sqrt{r'(t)^2+r(t)^2 \,\theta'(t)^2}}[/MATH][MATH]\frac{d^2}{dt^2}\theta(t) = -2\frac{r'(t)\, \theta'(t)}{r(t)}-v_e\frac{\,m'(t)}{m(t)}\frac{\theta'(t)}{\sqrt{r'(t)^2+r(t)^2 \,\theta'(t)^2}}[/MATH]
For a particle moving such that [MATH]\theta'(t)[/MATH] is positive (i.e., moving in an anti-clockwise orbit when viewed from above) and with [MATH]v_e>0[/MATH], these equations describe the motion of a spacecraft executing a prograde burn in a Keplerian gravitational field. If we change the sign of [MATH]v_e[/MATH] they describe a spacecraft executing a retrograde burn.

These equations are a generalisation of the usual form of the ideal rocket equation - albeit with the constraint that rockets are fired in either the prograde or retrograde direction. Now to apply these equations to some specific cases.

Case I - launch trajectories from the Moon
Clearly, the above generalised equations of motion are considerably more intimidating than the standard ideal rocket equation

[MATH]\Delta V = v_e\,\log\frac{m_i}{m_f}[/MATH]
and we certainly need some fairly specialised tools to solve differential equations
subject to appropriate boundary conditions. Needless to say, though, that such tools do exist and can be applied to fairly routinely solve these (rather ugly) equations of motion.

A case in point is the launch of a spacecraft into a prescribed orbit - e.g. a circular orbit. As many will know, for a given spacecraft with specific impulse and fuel flow rate, an efficient way to get into orbit is to specify a 'pitch program' that slowly tilts the spacecraft from a near vertical orientation towards the horizontal such that the thrust vector more or less tracks the spacecraft's prograde vector. This launch profile his is termed a gravity turn. But the question arises, how does one develop the 'best' pitch program that gives the perfect gravity turn without resorting to trial and error?.

Well, this is where the generalised ideal rocket equation (above) can be used to good effect. But because the equations of motion neglect atmospheric drag and lift, the equations as stated are best applied to spacecraft launching from slowly rotating bodies without atmospheres - e.g., the Moon.

So, for this particular example, we will focus on developing the 'pitch program' for launch of, say, a Delta Glider from the surface of the Moon and direct insertion into a circular orbit. To calculate this, we need to know a few things about the Delta Glider:

1. [MATH]v_e[/MATH] - the effective velocity of the engine exhaust. For the Delta Glider in its standard configuration this is 40,000 m/s. For current technology spacecraft, this is grossly unrepresentative of real engine capabilities - but for the purpose of this example, we'll stick with that number if for no other reason than everyone has a Delta Glider installed in their version of Orbiter.

2. [MATH]m'(t)[/MATH] - the rate at which the Delta Glider loses mass - which is equivalent to the negative of the rate at which the Delta Glider burns fuel. Now, although the Delta Glider can burn fuel at 8 kg/s as it turns out, at this maximum fuel burn rate, the perfect gravity turn calculation would have the Delta Glider inserted into a circular orbit with an altitude of around 5.5 km. This is a bit low. To increase the altitude of the circular orbit, one needs a lower fuel burn rate - in fact to enter into a 60 x 60 km circular orbit, one needs a fuel burn rate of around 2 kg/s. In fact, given the assumptions that we are making, the fuel rate controls our final orbital altitude. For a fuel burn rate of 2.000 kg/s, the theory says that we will insert into a circular orbit with orbital altitude of 58.0 km.

3. [MATH]m(0)[/MATH] - this is the initial total mass of the spacecraft at the instant that the pitch program and launch sequence is engaged. For a fully fuelled Delta Glider, its mass is 24,500 kg. But if we launch from Brighton Beach, say, we will need to hover off the ground and into the right attitude at the right elevation for launch. For reasons specific to the launch from Brighton Beach, and because it is 2.5 km below the Moon's mean radius. it is more appropriate to use a value of 24,323 kg which takes into account the fuel needed to hover up the 2.5 km to the Moon's mean altitude of 0.0 km at a vertical hover speed of 15 m/s.

Given these assumptions, we can now solve the ideal rocket equations of motion to calculate the 'pure' gravity turn that corresponds to those equations. Without going through the gory details of solving the problem, here are the results:

1. Time from launch to orbital insertion - 584 seconds.
2. Delta-V needed for launch 1,969 m/s.
3. Final orbit 58.0 x 58.0 km circular orbit.
4. Initial pitch angle of 87 degrees.

(Now a lot of you will be saying: "87 degree initial pitch angle for launching from the Moon in a Delta Glider? Say what!?". The reason why we have such a high initial pitch angle is that we are using just a quarter of the thrust that the Delta Glider can produce. We are using the fuel flow rate as way to control our altitude of our final circular orbit. Under the assumption of a constant fuel flow rate, we need just 2 kg/s to achieve an orbital altitude of 58 km. And with a quarter of its maximum thrust, the Delta Glider pretty much needs to be standing on its tail in order to execute a pure gravity turn manoeuvre to insert into the required circular orbit. Of course, if we start with a much higher initial thrust and then subsequently lower the thrust, we will have a much lower initial pitch angle. But that's not the example we are working with here.)

And here is the profile of altitude with time: By the time the spacecraft has established a circular orbit, the Delta Glider is 400 km down range from Brighton Beach.

From the solution, we can also calculate the optimal pitch program corresponding to this solution which we can then insert in a configuration file for . The pitch program sets out the pitch angle as a function of either time or altitude. In our case, we choose to calculate pitch as function or altitude. And here in 100 metre increments is the resulting pitch program:

Code:
 0.1  84.85
0.2  82.82
0.3  81.28
0.4  79.98
0.5  78.85
0.6  77.83
0.7  76.89
0.8  76.03
0.9  75.22
1.0  74.45
1.1  73.73
1.2  73.04
1.3  72.38
1.4  71.75
1.5  71.14
1.6  70.56
1.7  69.99
1.8  69.44
1.9  68.91
2.0  68.40
2.1  67.89
2.2  67.41
2.3  66.93
2.4  66.47
2.5  66.01
2.6  65.57
2.7  65.13
2.8  64.71
2.9  64.29
3.0  63.89
3.1  63.49
3.2  63.09
3.3  62.71
3.4  62.33
3.5  61.96
3.6  61.59
3.7  61.23
3.8  60.87
3.9  60.53
4.0  60.18
4.1  59.84
4.2  59.51
4.3  59.18
4.4  58.85
4.5  58.53
4.6  58.22
4.7  57.91
4.8  57.60
4.9  57.30
5.0  56.99
5.1  56.70
5.2  56.41
5.3  56.12
5.4  55.83
5.5  55.55
5.6  55.27
5.7  54.99
5.8  54.72
5.9  54.45
6.0  54.18
6.1  53.91
6.2  53.65
6.3  53.39
6.4  53.13
6.5  52.88
6.6  52.63
6.7  52.38
6.8  52.13
6.9  51.88
7.0  51.64
7.1  51.40
7.2  51.16
7.3  50.92
7.4  50.69
7.5  50.46
7.6  50.23
7.7  50.00
7.8  49.77
7.9  49.55
8.0  49.33
8.1  49.11
8.2  48.89
8.3  48.67
8.4  48.45
8.5  48.24
8.6  48.03
8.7  47.82
8.8  47.61
8.9  47.40
9.0  47.19
9.1  46.99
9.2  46.79
9.3  46.58
9.4  46.38
9.5  46.19
9.6  45.99
9.7  45.79
9.8  45.60
9.9  45.40
10.0  45.21
10.1  45.02
10.2  44.83
10.3  44.64
10.4  44.46
10.5  44.27
10.6  44.09
10.7  43.90
10.8  43.72
10.9  43.54
11.0  43.36
11.1  43.18
11.2  43.01
11.3  42.83
11.4  42.65
11.5  42.48
11.6  42.31
11.7  42.13
11.8  41.96
11.9  41.79
12.0  41.62
12.1  41.45
12.2  41.29
12.3  41.12
12.4  40.96
12.5  40.79
12.6  40.63
12.7  40.46
12.8  40.30
12.9  40.14
13.0  39.98
13.1  39.82
13.2  39.66
13.3  39.51
13.4  39.35
13.5  39.2
13.6  39.04
13.7  38.89
13.8  38.73
13.9  38.58
14.0  38.43
14.1  38.28
14.2  38.13
14.3  37.98
14.4  37.83
14.5  37.68
14.6  37.53
14.7  37.39
14.8  37.24
14.9  37.10
15.0  36.95
15.1  36.81
15.2  36.66
15.3  36.52
15.4  36.38
15.5  36.24
15.6  36.10
15.7  35.96
15.8  35.82
15.9  35.68
16.0  35.54
16.1  35.41
16.2  35.27
16.3  35.13
16.4  35.00
16.5  34.86
16.6  34.73
16.7  34.60
16.8  34.46
16.9  34.33
17.0  34.20
17.1  34.07
17.2  33.94
17.3  33.81
17.4  33.68
17.5  33.55
17.6  33.42
17.7  33.29
17.8  33.16
17.9  33.04
18.0  32.91
18.1  32.78
18.2  32.66
18.3  32.53
18.4  32.41
18.5  32.29
18.6  32.16
18.7  32.04
18.8  31.92
18.9  31.79
19.0  31.67
19.1  31.55
19.2  31.43
19.3  31.31
19.4  31.19
19.5  31.07
19.6  30.95
19.7  30.84
19.8  30.72
19.9  30.60
20.0  30.48
20.1  30.37
20.2  30.25
20.3  30.14
20.4  30.02
20.5  29.91
20.6  29.79
20.7  29.68
20.8  29.56
20.9  29.45
21.0  29.34
21.1  29.23
21.2  29.11
21.3  29.00
21.4  28.89
21.5  28.78
21.6  28.67
21.7  28.56
21.8  28.45
21.9  28.34
22.0  28.23
22.1  28.12
22.2  28.02
22.3  27.91
22.4  27.80
22.5  27.69
22.6  27.59
22.7  27.48
22.8  27.37
22.9  27.27
23.0  27.16
23.1  27.06
23.2  26.95
23.3  26.85
23.4  26.75
23.5  26.64
23.6  26.54
23.7  26.44
23.8  26.33
23.9  26.23
24.0  26.13
24.1  26.03
24.2  25.93
24.3  25.83
24.4  25.73
24.5  25.62
24.6  25.52
24.7  25.43
24.8  25.33
24.9  25.23
25.0  25.13
25.1  25.03
25.2  24.93
25.3  24.83
25.4  24.74
25.5  24.64
25.6  24.54
25.7  24.44
25.8  24.35
25.9  24.25
26.0  24.16
26.1  24.06
26.2  23.96
26.3  23.87
26.4  23.77
26.5  23.68
26.6  23.59
26.7  23.49
26.8  23.40
26.9  23.30
27.0  23.21
27.1  23.12
27.2  23.03
27.3  22.93
27.4  22.84
27.5  22.75
27.6  22.66
27.7  22.57
27.8  22.47
27.9  22.38
28.0  22.29
28.1  22.20
28.2  22.11
28.3  22.02
28.4  21.93
28.5  21.84
28.6  21.75
28.7  21.67
28.8  21.58
28.9  21.49
29.0  21.40
29.1  21.31
29.2  21.22
29.3  21.14
29.4  21.05
29.5  20.96
29.6  20.87
29.7  20.79
29.8  20.70
29.9  20.61
30.0  20.53
30.1  20.44
30.2  20.36
30.3  20.27
30.4  20.19
30.5  20.10
30.6  20.02
30.7  19.93
30.8  19.85
30.9  19.76
31.0  19.68
31.1  19.59
31.2  19.51
31.3  19.43
31.4  19.34
31.5  19.26
31.6  19.18
31.7  19.10
31.8  19.01
31.9  18.93
32.0  18.85
32.1  18.77
32.2  18.69
32.3  18.60
32.4  18.52
32.5  18.44
32.6  18.36
32.7  18.28
32.8  18.20
32.9  18.12
33.0  18.04
33.1  17.96
33.2  17.88
33.3  17.80
33.4  17.72
33.5  17.64
33.6  17.56
33.7  17.48
33.8  17.40
33.9  17.32
34.0  17.24
34.1  17.17
34.2  17.09
34.3  17.01
34.4  16.93
34.5  16.85
34.6  16.78
34.7  16.70
34.8  16.62
34.9  16.54
35.0  16.47
35.1  16.39
35.2  16.31
35.3  16.24
35.4  16.16
35.5  16.09
35.6  16.01
35.7  15.93
35.8  15.86
35.9  15.78
36.0  15.71
36.1  15.63
36.2  15.56
36.3  15.48
36.4  15.41
36.5  15.33
36.6  15.26
36.7  15.18
36.8  15.11
36.9  15.03
37.0  14.96
37.1  14.89
37.2  14.81
37.3  14.74
37.4  14.67
37.5  14.59
37.6  14.52
37.7  14.45
37.8  14.37
37.9  14.30
38.0  14.23
38.1  14.15
38.2  14.08
38.3  14.01
38.4  13.94
38.5  13.86
38.6  13.79
38.7  13.72
38.8  13.65
38.9  13.58
39.0  13.51
39.1  13.43
39.2  13.36
39.3  13.29
39.4  13.22
39.5  13.15
39.6  13.08
39.7  13.01
39.8  12.94
39.9  12.87
40.0  12.80
40.1  12.73
40.2  12.66
40.3  12.59
40.4  12.52
40.5  12.45
40.6  12.38
40.7  12.31
40.8  12.24
40.9  12.17
41.0  12.10
41.1  12.03
41.2  11.96
41.3  11.89
41.4  11.82
41.5  11.75
41.6  11.68
41.7  11.62
41.8  11.55
41.9  11.48
42.0  11.41
42.1  11.34
42.2  11.27
42.3  11.21
42.4  11.14
42.5  11.07
42.6  11.00
42.7  10.93
42.8  10.87
42.9  10.80
43.0  10.73
43.1  10.66
43.2  10.60
43.3  10.53
43.4  10.46
43.5  10.39
43.6  10.33
43.7  10.26
43.8  10.19
43.9  10.13
44.0  10.06
44.1   9.99
44.2   9.93
44.3   9.86
44.4   9.79
44.5   9.73
44.6   9.66
44.7   9.59
44.8   9.53
44.9   9.46
45.0   9.40
45.1   9.33
45.2   9.26
45.3   9.20
45.4   9.13
45.5   9.07
45.6   9.00
45.7   8.93
45.8   8.87
45.9   8.80
46.0   8.74
46.1   8.67
46.2   8.61
46.3   8.54
46.4   8.47
46.5   8.41
46.6   8.34
46.7   8.28
46.8   8.21
46.9   8.15
47.0   8.08
47.1   8.02
47.2   7.95
47.3   7.89
47.4   7.82
47.5   7.76
47.6   7.69
47.7   7.63
47.8   7.56
47.9   7.50
48.0   7.43
48.1   7.37
48.2   7.30
48.3   7.24
48.4   7.17
48.5   7.11
48.6   7.04
48.7   6.98
48.8   6.91
48.9   6.85
49.0   6.78
49.1   6.72
49.2   6.66
49.3   6.59
49.4   6.53
49.5   6.46
49.6   6.40
49.7   6.33
49.8   6.27
49.9   6.20
50.0   6.14
50.1   6.07
50.2   6.01
50.3   5.94
50.4   5.88
50.5   5.81
50.6   5.75
50.7   5.68
50.8   5.62
50.9   5.55
51.0   5.49
51.1   5.42
51.2   5.36
51.3   5.29
51.4   5.23
51.5   5.16
51.6   5.09
51.7   5.03
51.8   4.96
51.9   4.90
52.0   4.83
52.1   4.77
52.2   4.70
52.3   4.63
52.4   4.57
52.5   4.50
52.6   4.43
52.7   4.37
52.8   4.30
52.9   4.23
53.0   4.17
53.1   4.10
53.2   4.03
53.3   3.97
53.4   3.90
53.5   3.83
53.6   3.76
53.7   3.69
53.8   3.63
53.9   3.56
54.0   3.49
54.1   3.42
54.2   3.35
54.3   3.28
54.4   3.21
54.5   3.14
54.6   3.07
54.7   3.00
54.8   2.93
54.9   2.86
55.0   2.79
55.1   2.71
55.2   2.64
55.3   2.57
55.4   2.50
55.5   2.42
55.6   2.35
55.7   2.27
55.8   2.20
55.9   2.12
56.0   2.04
56.1   1.96
56.2   1.89
56.3   1.81
56.4   1.72
56.5   1.64
56.6   1.56
56.7   1.48
56.8   1.39
56.9   1.30
57.0   1.21
57.1   1.12
57.2   1.03
57.3   0.93
57.4   0.83
57.5   0.72
57.6   0.61
57.7   0.49
57.8   0.35
57.9   0.19
58.0   0.00

The numbers in the first column denote the altitude of the spacecraft (in km) above the Moon's mean radius of 1738 km; and the numbers in the second column indicate the pitch angle (in degrees) of the spacecraft at that altitude. Following this pitch program will insert the Delta Glider directly into a 58.0 x 58.0 km circular orbit.

Of course, slight errors will creep in to the trajectory in the absence of some form of automated guidance control. In practice, it makes sense to take over manual control for the last 60 seconds so of the launch. Doing so allows one to execute a near perfect gravity turn insertion into a circular orbit. Although one takes over manual control for the last minute or so of the manoeuvre, the pitch program does most of the hard work and sets the stage for finalising orbit insertion.

Following this pitch program manually is nigh on impossible. So, it needs to be set up as an automated process within, say, LaunchMFD. To do this, one has to add or augment a configuration file (DeltaGlider.cfg) for the Delta Glider in the \config\MFD\LaunchMFD folder as in:

Code:
; Put your variables in this file to make them permanent.
; You might want to copy here some vars collected from the previous sim session from the file:
; Config\MFD\LaunchMFD\ShuttleA_variables.cfg

OLD_ATMO_MODEL = TRUE

SPACE_XY = 2.5 16.0 0
SPACE_BANK = 1.0 12.0 0
ATMO_XY = 2.0 2.5 0
ATMO_BANK = 3.0 6.0 0
ATMO_CONTINUOUS_CONTROL_SWITCH_ANGLE = 10.0
ATMO_BANK_TARGET_WINGS_LEVEL_SWITCH_ANGLE = 20.0

PITCH_PROGRAM_ALTITUDE
Moon
0.1  84.85
0.2  82.82
0.3  81.28
0.4  79.98
0.5  78.85
0.6  77.83
0.7  76.89
0.8  76.03
0.9  75.22
1.0  74.45
1.1  73.73
1.2  73.04
1.3  72.38
1.4  71.75
1.5  71.14
1.6  70.56
1.7  69.99
1.8  69.44
1.9  68.91
2.0  68.40
2.1  67.89
2.2  67.41
2.3  66.93
2.4  66.47
2.5  66.01
2.6  65.57
2.7  65.13
2.8  64.71
2.9  64.29
3.0  63.89
3.1  63.49
3.2  63.09
3.3  62.71
3.4  62.33
3.5  61.96
3.6  61.59
3.7  61.23
3.8  60.87
3.9  60.53
4.0  60.18
4.1  59.84
4.2  59.51
4.3  59.18
4.4  58.85
4.5  58.53
4.6  58.22
4.7  57.91
4.8  57.60
4.9  57.30
5.0  56.99
5.1  56.70
5.2  56.41
5.3  56.12
5.4  55.83
5.5  55.55
5.6  55.27
5.7  54.99
5.8  54.72
5.9  54.45
6.0  54.18
6.1  53.91
6.2  53.65
6.3  53.39
6.4  53.13
6.5  52.88
6.6  52.63
6.7  52.38
6.8  52.13
6.9  51.88
7.0  51.64
7.1  51.40
7.2  51.16
7.3  50.92
7.4  50.69
7.5  50.46
7.6  50.23
7.7  50.00
7.8  49.77
7.9  49.55
8.0  49.33
8.1  49.11
8.2  48.89
8.3  48.67
8.4  48.45
8.5  48.24
8.6  48.03
8.7  47.82
8.8  47.61
8.9  47.40
9.0  47.19
9.1  46.99
9.2  46.79
9.3  46.58
9.4  46.38
9.5  46.19
9.6  45.99
9.7  45.79
9.8  45.60
9.9  45.40
10.0  45.21
10.1  45.02
10.2  44.83
10.3  44.64
10.4  44.46
10.5  44.27
10.6  44.09
10.7  43.90
10.8  43.72
10.9  43.54
11.0  43.36
11.1  43.18
11.2  43.01
11.3  42.83
11.4  42.65
11.5  42.48
11.6  42.31
11.7  42.13
11.8  41.96
11.9  41.79
12.0  41.62
12.1  41.45
12.2  41.29
12.3  41.12
12.4  40.96
12.5  40.79
12.6  40.63
12.7  40.46
12.8  40.30
12.9  40.14
13.0  39.98
13.1  39.82
13.2  39.66
13.3  39.51
13.4  39.35
13.5  39.2
13.6  39.04
13.7  38.89
13.8  38.73
13.9  38.58
14.0  38.43
14.1  38.28
14.2  38.13
14.3  37.98
14.4  37.83
14.5  37.68
14.6  37.53
14.7  37.39
14.8  37.24
14.9  37.10
15.0  36.95
15.1  36.81
15.2  36.66
15.3  36.52
15.4  36.38
15.5  36.24
15.6  36.10
15.7  35.96
15.8  35.82
15.9  35.68
16.0  35.54
16.1  35.41
16.2  35.27
16.3  35.13
16.4  35.00
16.5  34.86
16.6  34.73
16.7  34.60
16.8  34.46
16.9  34.33
17.0  34.20
17.1  34.07
17.2  33.94
17.3  33.81
17.4  33.68
17.5  33.55
17.6  33.42
17.7  33.29
17.8  33.16
17.9  33.04
18.0  32.91
18.1  32.78
18.2  32.66
18.3  32.53
18.4  32.41
18.5  32.29
18.6  32.16
18.7  32.04
18.8  31.92
18.9  31.79
19.0  31.67
19.1  31.55
19.2  31.43
19.3  31.31
19.4  31.19
19.5  31.07
19.6  30.95
19.7  30.84
19.8  30.72
19.9  30.60
20.0  30.48
20.1  30.37
20.2  30.25
20.3  30.14
20.4  30.02
20.5  29.91
20.6  29.79
20.7  29.68
20.8  29.56
20.9  29.45
21.0  29.34
21.1  29.23
21.2  29.11
21.3  29.00
21.4  28.89
21.5  28.78
21.6  28.67
21.7  28.56
21.8  28.45
21.9  28.34
22.0  28.23
22.1  28.12
22.2  28.02
22.3  27.91
22.4  27.80
22.5  27.69
22.6  27.59
22.7  27.48
22.8  27.37
22.9  27.27
23.0  27.16
23.1  27.06
23.2  26.95
23.3  26.85
23.4  26.75
23.5  26.64
23.6  26.54
23.7  26.44
23.8  26.33
23.9  26.23
24.0  26.13
24.1  26.03
24.2  25.93
24.3  25.83
24.4  25.73
24.5  25.62
24.6  25.52
24.7  25.43
24.8  25.33
24.9  25.23
25.0  25.13
25.1  25.03
25.2  24.93
25.3  24.83
25.4  24.74
25.5  24.64
25.6  24.54
25.7  24.44
25.8  24.35
25.9  24.25
26.0  24.16
26.1  24.06
26.2  23.96
26.3  23.87
26.4  23.77
26.5  23.68
26.6  23.59
26.7  23.49
26.8  23.40
26.9  23.30
27.0  23.21
27.1  23.12
27.2  23.03
27.3  22.93
27.4  22.84
27.5  22.75
27.6  22.66
27.7  22.57
27.8  22.47
27.9  22.38
28.0  22.29
28.1  22.20
28.2  22.11
28.3  22.02
28.4  21.93
28.5  21.84
28.6  21.75
28.7  21.67
28.8  21.58
28.9  21.49
29.0  21.40
29.1  21.31
29.2  21.22
29.3  21.14
29.4  21.05
29.5  20.96
29.6  20.87
29.7  20.79
29.8  20.70
29.9  20.61
30.0  20.53
30.1  20.44
30.2  20.36
30.3  20.27
30.4  20.19
30.5  20.10
30.6  20.02
30.7  19.93
30.8  19.85
30.9  19.76
31.0  19.68
31.1  19.59
31.2  19.51
31.3  19.43
31.4  19.34
31.5  19.26
31.6  19.18
31.7  19.10
31.8  19.01
31.9  18.93
32.0  18.85
32.1  18.77
32.2  18.69
32.3  18.60
32.4  18.52
32.5  18.44
32.6  18.36
32.7  18.28
32.8  18.20
32.9  18.12
33.0  18.04
33.1  17.96
33.2  17.88
33.3  17.80
33.4  17.72
33.5  17.64
33.6  17.56
33.7  17.48
33.8  17.40
33.9  17.32
34.0  17.24
34.1  17.17
34.2  17.09
34.3  17.01
34.4  16.93
34.5  16.85
34.6  16.78
34.7  16.70
34.8  16.62
34.9  16.54
35.0  16.47
35.1  16.39
35.2  16.31
35.3  16.24
35.4  16.16
35.5  16.09
35.6  16.01
35.7  15.93
35.8  15.86
35.9  15.78
36.0  15.71
36.1  15.63
36.2  15.56
36.3  15.48
36.4  15.41
36.5  15.33
36.6  15.26
36.7  15.18
36.8  15.11
36.9  15.03
37.0  14.96
37.1  14.89
37.2  14.81
37.3  14.74
37.4  14.67
37.5  14.59
37.6  14.52
37.7  14.45
37.8  14.37
37.9  14.30
38.0  14.23
38.1  14.15
38.2  14.08
38.3  14.01
38.4  13.94
38.5  13.86
38.6  13.79
38.7  13.72
38.8  13.65
38.9  13.58
39.0  13.51
39.1  13.43
39.2  13.36
39.3  13.29
39.4  13.22
39.5  13.15
39.6  13.08
39.7  13.01
39.8  12.94
39.9  12.87
40.0  12.80
40.1  12.73
40.2  12.66
40.3  12.59
40.4  12.52
40.5  12.45
40.6  12.38
40.7  12.31
40.8  12.24
40.9  12.17
41.0  12.10
41.1  12.03
41.2  11.96
41.3  11.89
41.4  11.82
41.5  11.75
41.6  11.68
41.7  11.62
41.8  11.55
41.9  11.48
42.0  11.41
42.1  11.34
42.2  11.27
42.3  11.21
42.4  11.14
42.5  11.07
42.6  11.00
42.7  10.93
42.8  10.87
42.9  10.80
43.0  10.73
43.1  10.66
43.2  10.60
43.3  10.53
43.4  10.46
43.5  10.39
43.6  10.33
43.7  10.26
43.8  10.19
43.9  10.13
44.0  10.06
44.1   9.99
44.2   9.93
44.3   9.86
44.4   9.79
44.5   9.73
44.6   9.66
44.7   9.59
44.8   9.53
44.9   9.46
45.0   9.40
45.1   9.33
45.2   9.26
45.3   9.20
45.4   9.13
45.5   9.07
45.6   9.00
45.7   8.93
45.8   8.87
45.9   8.80
46.0   8.74
46.1   8.67
46.2   8.61
46.3   8.54
46.4   8.47
46.5   8.41
46.6   8.34
46.7   8.28
46.8   8.21
46.9   8.15
47.0   8.08
47.1   8.02
47.2   7.95
47.3   7.89
47.4   7.82
47.5   7.76
47.6   7.69
47.7   7.63
47.8   7.56
47.9   7.50
48.0   7.43
48.1   7.37
48.2   7.30
48.3   7.24
48.4   7.17
48.5   7.11
48.6   7.04
48.7   6.98
48.8   6.91
48.9   6.85
49.0   6.78
49.1   6.72
49.2   6.66
49.3   6.59
49.4   6.53
49.5   6.46
49.6   6.40
49.7   6.33
49.8   6.27
49.9   6.20
50.0   6.14
50.1   6.07
50.2   6.01
50.3   5.94
50.4   5.88
50.5   5.81
50.6   5.75
50.7   5.68
50.8   5.62
50.9   5.55
51.0   5.49
51.1   5.42
51.2   5.36
51.3   5.29
51.4   5.23
51.5   5.16
51.6   5.09
51.7   5.03
51.8   4.96
51.9   4.90
52.0   4.83
52.1   4.77
52.2   4.70
52.3   4.63
52.4   4.57
52.5   4.50
52.6   4.43
52.7   4.37
52.8   4.30
52.9   4.23
53.0   4.17
53.1   4.10
53.2   4.03
53.3   3.97
53.4   3.90
53.5   3.83
53.6   3.76
53.7   3.69
53.8   3.63
53.9   3.56
54.0   3.49
54.1   3.42
54.2   3.35
54.3   3.28
54.4   3.21
54.5   3.14
54.6   3.07
54.7   3.00
54.8   2.93
54.9   2.86
55.0   2.79
55.1   2.71
55.2   2.64
55.3   2.57
55.4   2.50
55.5   2.42
55.6   2.35
55.7   2.27
55.8   2.20
55.9   2.12
56.0   2.04
56.1   1.96
56.2   1.89
56.3   1.81
56.4   1.72
56.5   1.64
56.6   1.56
56.7   1.48
56.8   1.39
56.9   1.30
57.0   1.21
57.1   1.12
57.2   1.03
57.3   0.93
57.4   0.83
57.5   0.72
57.6   0.61
57.7   0.49
57.8   0.35
57.9   0.19
58.0   0.00
END_PITCH_PROGRAM_ALTITUDE

All that remains now, is to set this scenario up in Orbiter and run the pitch program to see if the maths (and the calculated pitch program) actually works in practice. When I find a little more time, I'll assemble a short video demonstrating the effectiveness of the calculations.

I also have one more example tot work through - insertion into Low Earth Orbit when approaching Earth at a high hyperbolic approach velocity. But that too will have to wait until I have a little more time.

Last edited:

#### Thorsten

##### Active member
But the question arises, how does one develop the 'best' pitch program that gives the perfect gravity turn without resorting to trial and error?.

But that's not really what your solution does.

If you want to put it like this, propellant is wasted during the launch by the need to vector thrust down to counter gravity - the faster you manage to accelerate and build centrifugal force, the less wasteful is the launch. Case in point - once you have orbital speed, you can get vast changes in orbital altitude at hardly any propellant cost, whereas if you're hanging at 100 km altitude with zero inertial speed and 1 g thrust pointed down, you don't get anywhere, you just waste propellant.

So, to throttle the engines down to 25% of rated performance as a tool to get into a higher orbit is quite a bit more wasteful than to extend the vertical part of the ascent for a couple of seconds more to gain altitude and use full thrust all the time.

Also, your solution corresponds to an open loop guidance - it just commands a pitch schedule irrespective of the true state of the spacecraft. It'd be more natural to implement the maneuver as a closed loop guidance - take the error between velocity vector and current thrust vector as input to a pitch controller to vector thrust automatically alone the velocity vector - in that way, you could just as well cope with atmospheres or in fact any perturbation.

While I acknowledge an cute mathematical problem here (how did you solve it by the way - numerics or analytical solution?), I don't really see the applicability to real guidance problems readily apparent.

#### Keithth G

##### New member
You are quite correct, it isn't a minimum fuel solution - although if the maximum fuel flow rate is 2 kg/s for the Delta Glider then I can imagine that it might well be.

At the end of the day, this simply serves as as demonstration of a generalised form of the ideal rocket equation - i.e., to show how Keplerian gravity and thrust are combined in the same equations of motion.

To minimise fuel consumption requires one to work a bit harder than this, I agree. And as far as implementing a launch guidance algorithm, that wasn't the intention.

---------- Post added at 12:56 PM ---------- Previous post was at 12:49 PM ----------

While I acknowledge an cute mathematical problem here (how did you solve it by the way - numerics or analytical solution?)

The problem was solved by numerical integration subject to the boundary conditions that the final orbit was circular; that the initial velocity was zero; and the initial altitude was zero.

Last edited:

#### Thorsten

##### Active member
At the end of the day, this simply serves as as demonstration of a generalised form of the ideal rocket equation - i.e., to show how Keplerian gravity and thrust can be combined in the same equation of motion.

Once you do it numerically, you might equally well add the atmosphere via

F_drag = c_d(alpha) * A_ref * rho * v^2

and

F_lift = c_l(alpha) * A_ref * rho * v^2

where the forces act along and perpendicular to the current velocity vector and alpha is AoA (angle of spacecraft axis with velocity vector) and the local density can be assumed to be

rho(h) = rho_0 * exp(-h/H)

where H is the atmospheric scale height (some 8 km for Earth) and

h = sqrt(x^2 + y^2) - R_earth.

At the end of the day, acceleration is the (vector) sum of all forces acting divided by mass - I'm not sure I'd call that a generalized rocket equation #### Enjo

##### Mostly harmless
Tutorial Publisher
Donator
But still, the gravity well example is a bad one, while the orbital injection sounds like a better candidate. If proven correct, it could help improving BTC's equation for more accurate timing of burns (in space).

#### Keithth G

##### New member
Yes, I guess one could include other forces if one so desires.

---------- Post added at 02:51 PM ---------- Previous post was at 02:48 PM ----------

But still, the gravity well example is a bad one, while the orbital injection sounds like a better candidate. If proven correct, it could help improving BTC's equation for more accurate timing of burns (in space).

Quite so.

And yes it does work. I checked this evening on a low thrust high delta v orbit entry burn. More on this later.

---------- Post added 10-18-16 at 02:55 AM ---------- Previous post was 10-17-16 at 02:51 PM ----------

But still, the gravity well example is a bad one, while the orbital injection sounds like a better candidate. If proven correct, it could help improving BTC's equation for more accurate timing of burns (in space).

Just a bit more on this. I've set up a scenario (below) in which a full-fuelled Delta Glider is approaching the Moon at hyperbolic speeds and is about to insert itself into Low Lunar Orbit (17.5 x 17.5 km) using reverse RCS thrusters alone (with the Delta Glider locked in the prograde orientation.) The total delta-V required for orbit insertion is calculated to be 990 m/s and the burn should take around 1.5 hours. (Use of RCS here simulates a low thrust orbit insertion manoeuvre that might be more representative of the real thrust capabilities of current interplanetary probes.)

By solving the equations of motion for this problem, I calculate that just prior to the start of the orbit insertion burn, the Delta-Glider's relevant orbital parameters are as follows:

semi-major axis = -8149426.1 m
eccentricity = 1.298802

The orbit insertion burn should commence when the Delta-Glider's orbital radius is 4763.86 km. The scenario is set up to start a few minutes prior to the start of the orbit insertion burn. To start the orbit insertion burn:

1. Set up BTC for a 895 m/s burn using the "RCS RE" engines. Available RCS is around 991 m/s. Complete the last 5 m/s of orbit insertion manually.

3. When Orbit MFD says that the orbital radius has reach 4764 km, start the orbital insertion manoeuvre using the "BRN" button on the MFD display.

If all goes to plan, you should achieve a circular orbit with about 0.5 m/s of RCS spare. Prior to the start of the orbital insertion manoeuvre, Orbit MFD estimates the periapsis altitude of the initial ballistic trajectory is 697 km. During the course of the burn, this periapsis altitude will steadily drop to around 17.5 km.

Since the burn takes around 1.5 hours, it may be expedient to introduce some 10X time warp.

Here is the scenario:

Code:
BEGIN_DESC
END_DESC

BEGIN_ENVIRONMENT
System Sol
Date MJD 52006.9737037413
Help CurrentState_img
END_ENVIRONMENT

BEGIN_FOCUS
Ship GL-NT
END_FOCUS

BEGIN_CAMERA
TARGET GL-NT
MODE Cockpit
FOV 50.00
END_CAMERA

BEGIN_HUD
TYPE Orbit
REF AUTO
END_HUD

BEGIN_MFD Left
TYPE Orbit
PROJ Ship
FRAME Ecliptic
REF Moon
END_MFD

BEGIN_MFD Right
TYPE User
MODE BurnTimeMFD
END_MFD

BEGIN_SHIPS
GL-NT:DeltaGlider
STATUS Orbiting Moon
RPOS 577397.667 0.004 -4813364.223
RVEL 929.1968 0.0000 1326.9761
AROT 0.000 -35.021 -0.000
RCSMODE 2
AFCMODE 7
PRPLEVEL 0:1.000000 1:1.0000000
NAVFREQ 0 0 0 0
XPDR 0
HOVERHOLD 0 1 0.0000e+000 0.0000e+000
AAP 0:0 0:0 0:0
END
END_SHIPS

Last edited:

#### Enjo

##### Mostly harmless
Tutorial Publisher
Donator
I would greatly appreciate if you could write the final solution for delta V at least in a Lua script, so I could replace the old equation with yours. Full respect to your work, but it's been a long time since I've graduated.

Last edited:

#### Keithth G

##### New member
I would greatly appreciate if you could write the final solution for delta V at least in a Lua script, so I could replace the old equation with yours. Full respect to your work, but it's been a long time since I've graduated.

Enjo

In a way, Thorsten is right in his comments, at least in as far as he suggests that the equations of motion derived in the opening post are not particularly profound. All that they do, really, is make clear the mathematical problem to be solved to properly account for (Keplerian) gravity in calculating a spacecraft's new orbit following execution of a retrograde/prograde orbital manoeuvre.

As is plain to see, the resulting equations are pigs of things to solve. At the moment, largely for my convenience, I'm relying upon the full, brutish power of Mathematica to solve them. And although I fully trust the solutions that emerge from Mathematica's ruminations, I am well aware that writing a simple equation to replace existing BTC calculations of, say, Delta-V is not straightforward.

But here are some thoughts:

I presume that BTC currently uses the 'balanced burn' approach to circular orbit injection. As it turns out, the balanced burn approach is the second order solution to the 'ideal rocket' equations of motion. Being only 'second-order' accurate, for sufficiently long injection burns, its accuracy noticeably deteriorates. It is possible, however, to derive higher-order solutions (3rd order and higher) to the 'ideal rocket' equations of motion. I suspect that, in the near-term at least, a higher-order solution of this kind that extends the range over which BTC is accurate may be of use. If so, the I will happily work through the perturbation expansions to give you some appropriate equations/tools/scripts.

For exceptionally long burns, as in the Delta Glider scenario example I set out above, this perturbative approach also breaks down. Here, one either has to resort again to brute force numerical integration. Or, one has to employ a very different perturbation scheme. I can tinker with this, if you like - but I venture into terra nova and success is uncertain.

Last edited:

#### Thorsten

##### Active member
I'm not sure what technical environment you get in MFD code. A numerical solution of trajectories in a gravity field under thrust isn't particularly profound to code as algorithm - it's less than a hundred lines (the FG Shuttle I'm working on has rendezvous code which fits a 3-dim numerical trajectory solution in non-spherical gravity to a target state to determine burn parameters for instance).

The first main problem is accuracy - you need to set a good timestep to minimize artifacts. That leads to the second problem, which is that it needs to be threaded in some way, since it usually doesn't fit into a single frame.

I'm using a '1000 timesteps per frame' computation strategy, but it could be (more complicated) completely divorced from the main loop and run in a dedicated thread.

So from my experience, it's really more of a code structure problem than a math problem - writing a numerical solver that does it offline is a comparatively small issue (i.e. you don't need Mathematica or numerical libs to get decent accuracy) - but running it inside the context of a simulation without creating frame delay is what needs to be addressed.

#### Keithth G

##### New member
Thorsten

The problem is not in integrating the equations of motion forward (or backwards) in time. I agree, that's quite a trivial task.

The task here is, I think, to work out what manoeuvre is needed to bring a vessel into a circular orbit (or other prescribed orbit) from its initial orbital state. That requires a bit more effort.

Last edited:

#### Enjo

##### Mostly harmless
Tutorial Publisher
Donator
I've got readily available tools such as root calculation with Brent method and an RK4 integrator, if it helps. Is it harder than applying them on a complex equation?

---------- Post added at 09:10 AM ---------- Previous post was at 09:08 AM ----------

Thorsten

The problem is not in integrating the equations of motion forward (or backwards) in time. I agree, that's quite a trivial task.

The task here is, I think, to work out what manoeuvre is needed to bring a vessel into a circular orbit (or other prescribed orbit) from its initial orbital state. That requires a bit more effort.
We have to assume the retrograde orientation. Otherwise it's not suitable for Orbiter as a hobby simulator, but more as a research tool.

#### Keithth G

##### New member
Enjo,

Yes, I agree: we have to assume a retrograde orientation for the burn.

It might be helpful if you clarify the regime over which you want improved accuracy.

Is it just for relatively short burns, but where BTC's circular orbit injection solution is noticeably, but marginally, in error.

Or do you want a solution that is valid for all possible burn durations and thrust magnitudes?

The former can be handled by high-order perturbation theory quite well. The latter will require considerably more computational grunt. And here numerical integration and root finding algorithms are valuable.

Last edited:

#### Thorsten

##### Active member
The task here is, I think, to work out what manoeuvre is needed to bring a vessel into a circular orbit (or other prescribed orbit) from its initial orbital state. That requires a bit more effort.

Once you have a tool to predict a future trajectory, you can use it to fit ignition time (or even several parameters) to an arbitrary target.

A one parameter fit is comparatively simple, for the rendezvous computation I fit four parameters (ignition time and the burn delta vs, aka burn attitude and duration) and while that's complicated, it's still in the realm of doable.

#### Keithth G

##### New member
Thorsten

Again, it isn't going to be quite that simple, I'm afraid.

But, give it a go, and let's see what you come up with.

Last edited:

#### Enjo

##### Mostly harmless
Tutorial Publisher
Donator
Or do you want a solution that is valid for all possible burn durations and thrust magnitudes?
Yes. It's supposed to be an algorithm, where you input parameters. All parameters should be accepted except corner parameters like 0 for remaining fuel. And the user shouldn't know the difference between the old and the previous way of calculation. The only thing that the user could notice is precision improvement.
And that is, only if you want to improve BTC. If not, don't bother.

---------- Post added at 09:51 AM ---------- Previous post was at 09:44 AM ----------

Also, only the retrograde orientation makes sense, since what you need to do is modifying (decreasing) the orbit's energy. The only way to do it is burning retrograde. It's a similar point to what Throsten brought up for the gravity well.

#### Keithth G

##### New member
Enjo

I'm going to assume that you want an extended range of accuracy - and not necessarily a 100% accurate solution spanning the entire input parameter space.

So, basically, I'm going to move forward with a perturbations scheme, since, for me, a 100% accurate solution everywhere simply isn't going to be worth the investment in time and effort needed to build it. (Thorsten may have other ambitions, however.)

Last edited:

#### Thorsten

##### Active member
But, give it a go, and let's see what you come up with.

As I said above, I have a working algorithm implemented that fits a two burn rendezvous sequence to an orbital target given your current state vector. Which is sufficient to convince me that I understand the complications (and telling someone who has solved a problem already that it's more complicated than he thinks is an odd thing to do )

I'm not interested in doing your problem for you - I'm interested in sharing my experiences to help you realize the technology for your application. If you're not interested, that's okay for me.

#### Enjo

##### Mostly harmless
Tutorial Publisher
Donator
So, basically, I'm going to move forward with a perturbations scheme, since, for me, a 100% accurate solution everywhere simply isn't going to be worth the investment in time and effort needed to build it. (Thorsten may have other ambitions, however.)

As I said above, I have a working algorithm implemented that fits a two burn rendezvous sequence to an orbital target given your current state vector.
I'm afraid, we're talking about different dV realms. Orbital insertion is a high dV demanding manouevre, to which rendezvous burn is just a fart Last edited:

#### Thorsten

##### Active member
I'm afraid, we're talking about different dV realms. Orbital insertion is a high dV demanding manouevre, to which rendezvous burn is just a fart

I'm afraid that while your propellant reserves care a lot, the math really doesn't.