The rocket equation vs. braking distance

Hlynkacg

Aspiring rocket scientist
Addon Developer
Tutorial Publisher
Donator
Joined
Dec 27, 2010
Messages
1,868
Reaction score
4
Points
0
Location
San Diego
I'm working on a landing/rendevous autopilot.

The idea is simple, given the range to a target and a relative velocity (whose vector intercepts the target) determine the range at wich to start braking.

Now the equation used to calculate braking distance given a constant rate of acceleration/deceleration is...

d = -V2/(2a)

Where:
V = Initial velocity
a = Rate of acceleration/deceleration
d = Distance traversed (range at which to start the burn)

...But how would I account for the fact that as I expend propellant my rate of acceleration will increase?
 
As a first approximation, calculate the acceleration at the start & end of the burn and use the average. This will slightly over-do the braking required (better than under-estimating!), but if you iterate the estimate as you go you can adjust the thrust down as required - like the throttle-down on the LEM during descent.
 
I'm working on a landing/rendevous autopilot.

The idea is simple, given the range to a target and a relative velocity (whose vector intercepts the target) determine the range at wich to start braking.

Now the equation used to calculate braking distance given a constant rate of acceleration/deceleration is...

d = -V2/(2a)

Where:
V = Initial velocity
a = Rate of acceleration/deceleration
d = Distance traversed (range at which to start the burn)

...But how would I account for the fact that as I expend propellant my rate of acceleration will increase?

I'm not sure what you mean by d = -V2/(2a) . If you divide velocity with acceleration the result is time not distance. (m/sec)/(m/sec*sec)=sec

The distance equation is: d=vt-1/2at²

d= distance travelled (m)
t= time of burn (sec)
v= Original speed (m/sec)
a= deceleration (m/sec²)

I think that you will find the answers of this post interesting.
 
Last edited:
How much do you know about calculus? Just take that equation, replace a with a(t) and integrate everything with respect to time.
 
Here is how I'd try to calculate at which distance to begin a braking burn for a rendesvouz using the distance, BurnTime and rocket equations (Vector intercepts the target).

1. Distance
[math]x[/math]=distance, [math]\Delta V[/math]=velocity relative to the target, [math]T_{burn}[/math]=BurnTime, [math]a[/math]= acceleration.

The distance is [math] x= \Delta V\cdot\ T_{burn} - {\frac{a \cdot\ T_{burn}^{2}}{2}}[/math] and since [math] a= \frac{\Delta V}{T_{burn}}[/math] we get: [math] x= \Delta V\cdot\ T_{burn} - {\frac{\frac{\Delta V}{T_{burn}} \cdot\ T_{burn}^{2}}{2}}= \frac{1}{2}\Delta V\cdot\ T_{burn}[/math]

2. BurnTime
[math]m_f[/math]=fuel mass, [math]u_e[/math]=exhaust velocity, [math]F_{thrust}[/math]= thrust
The BurnTime is [math]T_{burn}=\frac{m_f\cdot u_e}{F_{thrust}}[/math]

3. Rocket equation, solving for fuel mass
[math]\Delta V[/math]= Delta Velocity [math]u_e[/math]= exhaust velocity [math]m_0[/math]= initial mass [math]m_1[/math]= final mass [math]m_f=m_0-m_1[/math]= fuel mass

[math]\Delta V = u_e \cdot\ln{\frac{m_0}{m_1}}[/math]=>[math]
\ln{\frac{m_0}{m_1}} = \frac{\Delta V}{u_e}[/math]=>[math]
\frac{m_0}{m_1} = e^{\frac{\Delta V}{u_e}}[/math]=>[math]
{m_1} = \frac{m_0}{e^{\frac{\Delta V}{u_e}}} = {m_0} \cdot\ e^{-\frac{\Delta V}{u_e}}[/math]=>[math]
{m_f} = {m_0}-({m_0} \cdot\ e^{-\frac{\Delta V}{u_e}}) = {m_0} \cdot\ (1-e^{-\frac{\Delta V}{u_e}})[/math]

Now let's solve for [math]T_{burn}[/math]

[math]T_{burn}=\frac{{m_0} \cdot\ (1-e^{-\frac{\Delta V}{u_e}})\cdot u_e}{F_{thrust}}[/math]

and now we can finally solve for distance

[math] x= \frac{1}{2}\Delta V\cdot\ \frac{{m_0} \cdot\ (1-e^{-\frac{\Delta V}{u_e}})\cdot u_e}{F_{thrust}}[/math] and check the units [math]\frac{m}{s}\cdot \frac{kg}{\frac{kg\cdot\ m}{s^{2}}}\cdot\ \frac{m}{s}=\frac{m^{2}}{s^{2}}\cdot\ \frac{kg\cdot\ s{2}}{kg\cdot\ m}=m [/math]

So (if i did this correctly), once we know our ship's initial mass, exhaust velocity, engine thrust and our speed relative to the target, the equation above gives us the distance at which to begin the deceleration burn, provided that we are already on an intercept course.
 
Please correct me if I'm wrong but following your equation correctly I should have a function that looks like this.

Code:
double Spider::BrakingDistance(double rVel, double iM, double isp, double thrust){

	rVel;	//relative velocity to target [m/s]
	iM;	//vessel's initial mass [kg]
	isp;	//exhaust velocity [m/s]
	thrust;	//thrust of main engine [N]

	double BrakingDistance = (0.5*rVel*((iM*(1-e*(-rVel/isp))*isp)/thrust));  
	return BrakingDistance;}

The autopilot is supposed to be a simple two-burn calculator. The first burn to put the vessel on an intercept course. the second to zero-out relative velocity once the target range is reached.

The next call in the guidance program would be...

Code:
if (BrakingDistance >= RangeToTarget+x) Initiate Burn;

the theory being that this should bring me to relative velocity of 0 at range of approximately 'x' from my target.
 
Last edited:
[math] x= \frac{1}{2}\Delta V\cdot\ \frac{{m_0} \cdot\ (1-e^{-\frac{\Delta V}{u_e}})\cdot u_e}{F_{thrust}}[/math]

Code:
	double BrakingDistance = (0.5*rVel*((iM*(1-[U][COLOR="Red"]e*[/COLOR][/U](-rVel/isp))*isp)/thrust));  
	return BrakingDistance;}

e is not multiplied by -dv/ve but raised to the power of it.
I'm not very familiar with the notation but I think it should be:

Code:
	double BrakingDistance = (0.5*rVel*(iM*(1-pow(e,(-rVel/isp))*isp)/thrust));  
	return BrakingDistance;}
(Someone check if I have placed the parentheses correctly).
 
Last edited:
Use the pow() function, not ^ which doesn't work in C++.

Example: x to the power of y would be pow(x,y)
 
Use the pow() function, not ^ which doesn't work in C++.
"^" of course works in C++ as operator, but it isn't power, but bitwise exclusive or. :P
 
So it should read...

Code:
double BrakingDistance = (0.5*rVel*((iM*( pow((1-e), (-rVel/isp)) )*isp)/thrust));


Oh god, parenthesis induced meltdown! :owned:
 
So it should read...

Code:
double BrakingDistance = (0.5*rVel*((iM*( pow((1-e), (-rVel/isp)) )*isp)/thrust));


Oh god, parenthesis induced meltdown! :owned:

You have raised (1-e) to the power of -dv/ve instead of just the e , but it shouldn't change the result since 1^n=1. Let's try something simpler: Instead of dividing the whole thing with thrust, multiply it with 1/thrust.

Code:
double BrakingDistance = 0.5*rVel*iM*(1-pow(e,(-rVel/isp))*isp)*1/thrust;  
	return BrakingDistance;}
cutting down the number of parentheses from 14!? to 6.

Edit: Nah, that doesn't seem correct either. Sorry, but I'm not familiar with this notation.

This should be it: 0.5*rVel*iM*(1-pow(e,(-rVel/isp)))*isp*1/thrust
 
Last edited:
[math]
x= \frac{1}{2}\Delta V\cdot\ \frac{{m_0} \cdot\ (1-e^{-\frac{\Delta V}{u_e}})\cdot u_e}{F_{thrust}}[/math]

Sorry to drag this up again, but can we use this to determine the required thrust to come to a halt in a given distance?

[math]
{F_{thrust}}= \frac{1}{2}\Delta V\cdot\ \frac{{m_0} \cdot\ (1-e^{-\frac{\Delta V}{u_e}})\cdot u_e}x
[/math]
 
Sorry to drag this up again, but can we use this to determine the required thrust to come to a halt in a given distance?

[math]
{F_{thrust}}= \frac{1}{2}\Delta V\cdot\ \frac{{m_0} \cdot\ (1-e^{-\frac{\Delta V}{u_e}})\cdot u_e}x
[/math]

Yes. For a given dV and a given distance, the equation you've written will give you the rocket's required thrust.

You can also solve for the required dV (given the thrust and distance):

[math]
\Delta V= \frac{2 \cdot\ {F_{thrust}} \cdot\ x}{{m_0} \cdot\ (1-e^{-\frac{\Delta V}{u_e}})\cdot u_e}
[/math]
 
Here is how I'd try to calculate at which distance to begin a braking burn for a rendesvouz using the distance, BurnTime and rocket equations (Vector intercepts the target).
1. Distance
[math]x[/math]=distance, [math]\Delta V[/math]=velocity relative to the target, [math]T_{burn}[/math]=BurnTime, [math]a[/math]= acceleration.
The distance is [math] x= \Delta V\cdot\ T_{burn} - {\frac{a \cdot\ T_{burn}^{2}}{2}}[/math] and since [math] a= \frac{\Delta V}{T_{burn}}[/math] we get: [math] x= \Delta V\cdot\ T_{burn} - {\frac{\frac{\Delta V}{T_{burn}} \cdot\ T_{burn}^{2}}{2}}= \frac{1}{2}\Delta V\cdot\ T_{burn}[/math]
It's simplification ( [math] x = \frac{1}{2}\Delta V\cdot\ T_{burn}[/math] ) .
To find the exact solution we need to solve few differential equations:
(1) [math]\frac{d \vec x(t)}{dt} = \vec v(t)[/math]

Reactive motion:
(2) [math]m(t)\frac{d \vec v(t)}{dt}-\vec u_e\frac{dm(t)}{dt}=0 \Rightarrow[/math]
(3) [math]\vec v(t)=- \vec u_e ln(\frac{m_0}{m(t)})+\vec v_0[/math]

Mass :
(4) [math] m(t) = m_0 - a t [/math]
a - fuel mass flow rate:
(5) [math] a = - \frac{\vec F_{thrust}}{\vec u_e} [/math]

Now we can get x(t) solving (1). I used Maple (math software ):
(6) [math] \vec x(t) = \vec u_e (t-\frac{m_0}{a}) ln(1-\frac{a t}{m_0}) - \vec u_e t+\vec v_0 t+\vec x_0 [/math]

Using (3) and (6) we can solve %subj% in more accurate way, finding where [math]v(t)=v_{target}[/math]:
(7) [math] t_{target} = \frac{m_0}{a} (1-e^{\frac{v_{target} - v_0}{u_e}})[/math]
and calculating [math]x(t_{target})[/math]

Lets's compare solutions. Situation: DG, empty mass 11000 kg, fuel 12900 kg, Isp 40000, Thrust 2*160000N, Initial velocity 10000 m/s, we need zero velocity:
[math] m_0=23900 kg[/math]
[math] x_0=0 m[/math]
[math] v_{target}=0 m/s[/math]
[math] v_0=10000 m/s[/math]
[math] u_e=40000 m/s [/math]
Pay attention, [math]\vec u_e[/math] - vector. If it's value in 1D has same sign with [math]\vec v_0[/math] then the ship are losing velocity.
[math] a=2*160000/40000=8 kg/s [/math]
[math] t_{target} = \frac{m_0}{a} (1-e^{\frac{v_{target} - v_0}{u_e}}) = 660.832660 s [/math]
[math] x(t_{target})= u_e (t_{target}-\frac{m_0}{a}) ln(1-\frac{a t_{target}}{m_0}) - u_e t_{target}+ v_0 t_{target}+ x_0 = 3441693.58 m [/math]



Using [math] x = \frac{1}{2}\Delta V\cdot\ T_{burn}[/math] simplification:
[math]\Delta V = 10000 m/s[/math]
[math]m_0=23900 kg[/math]
[math]u_e = 40000 m/s[/math]
[math]F_{thrust} = 2*160000 = 320000 N[/math]
[math]T_{burn}=\frac{{m_0} \cdot\ (1-e^{-\frac{\Delta V}{u_e}})\cdot u_e}{F_{thrust}} = 660.832660 s [/math] (correct)
[math]x= \frac{1}{2}\Delta V\cdot\ \frac{{m_0} \cdot\ (1-e^{-\frac{\Delta V}{u_e}})\cdot u_e}{F_{thrust}} = 3304163.30 m[/math] (wrong!!!)


Visual:

Green area is [math] x = \frac{1}{2}\Delta V\cdot\ T_{burn}[/math] approximation. Red - difference between approximation and exact value.
 
Last edited:
Excellent post! :tiphat:

Just to clarify, dgatsoulis is using Tsiolovsky's equation to find [math]\Delta t[/math] and then finding the distance using linear acceleration.

I guess the real trick to (Orbiter) space flight is to know how exact you need to be, and when an approximation is good enough. :lol:

Ajaja's example uses a huge [math]\Delta V[/math] of 10 km/s. This produces an error of 137.5 km using approximation. Let's look at some other numbers.

[math]\Delta V=2000 m/s[/math] (a badly planned PD to the lunar surface) produces an error of 1.2 km.

[math]\Delta V=100 m/s[/math] (a slightly unsafe orbital rendezvous) Produces an error of 16 cm.

I hope this can help to put things in perspective.
:cheers:
 
Back
Top