The Lambert problem

In general, the term Lambert's problem refers to the question of finding the orbit that connects any two points in space where the departure and arrival time is given. This definition includes trajectories of arbitrary length or very high propellant consumption.

In particular, we are in the following concerned with the subset of reasonable transfers, i.e. transfers which might be of actual use for spaceflight in low orbit. There the usual rendezvous strategy is that the chaser is first brought onto a phasing orbit to approach the target from below/behind - which is gradually made more similar in altitude to the target orbit to decrease the approach rate - and when everything is ready, the actual rendezvous burn is made from that phasing orbit. The rational is that this gives a large time window for the rendezvous. In contrast, a rendezvous from a very different orbit has a narrow time window for the optimal burn and is more prone to go astray if anything goes wrong.

Thus, we assume in the following that the chaser is 'reasonably close' in altitude and phase angle - and want to solve the transfer problem for that situation within the next orbital period.

The initial state

Let's set up a situation is it might arise just after a phasing period - chaser and target are in circular orbits, 20 km separate in altitude with the target being higher and the chaser approaching from below.

(Note that the chaser could equally well approach from the front and be above the target - assuming the chaser was launched from Earth, it's just energetically cheaper to come from a lower orbit, but if the chaser were an interplanetary spacecraft arriving, it would be cheaper to approach from above.)

Add the following lines to a config file:

config
units SI
gravity_model J3
earth_model spherical
burn_model constant
timestep 0.01
fit verbose
plot2d_resolution 1000
max_time 20000
fit_max_iterations 200

position
lat 0.0
lon 0.0
alt 300000
heading 45.0
vup 0.02
vtot 7729.90

target_position
lat 1.999
lon 2.0
alt 320000
heading 44.95
vup 0.02
vtot 7718.35

Note that here we give an example of a target position (rather than state vector) which makes the altitude separation rather obvious. Due to the slightly changed heading, the orbital plane of the two craft is similar, but not quite the same.

The Lambert burn sequence

Now, let's program a fit for a rendezvous burn sequence. This is conceptually similar to the PEG-4 fit, but unlike in the PEG-4 case where a specific point in space is targeted and there are constraints on the vertical speed at this point, in a Lambert fit the time at which the point is reached is fixed.

Since LEO targeting only allows one single rendezvous target in the simulation, the fit is completely specified by providing the initial time t1 and the arrival time t2 (for the sake of accuracy - for finite burn durations, t1 is taken to be the time at which the first burn ignites and t2 the time at which the closest point to the target is reached - in practice it might not be possible to come to a stop precisely at t2 or end the velocity adjustment burn there).

However, likely the target is an extended object. So we might in fact not want to reach it precisely - we'd like to reach a position somewhat distance so that we can start proximity operations and e.g. dock. To do that, optionally offset_x, offset_y and offset_z can be specified (in proximity coordinates).

Note that only the x-offset will lead to a stationary position with respect to the target if velocities are matched - both other offsets will lead to drift due to orbital mechanics and will require stationkeeping.

Add the following lines to the config file:

burn_lambert
name Rendezvous
t1 8150
t2 10500
offset_x 0.0
offset_z -100.0

This aims to get us to a position 100 meters below the target. If you run the fit and plot x and z proximity coordinates, the parameters of both burns will be shown after it converges and the simulation will show a small drift afterwards,

If you plot the y-coordinate, you'll see that the two burn sequence has also adjusted the orbital plane. We've seen before that this would usually be done with a single burn at the crossing nodes of the orbits, but generally it is possible to change plane also with nearly any two burns. The exception to this is when the times are such that the transfer angle is near 180 degrees - in this case, symmetry will dictate that whatever normal burns are initiated, we always reach the same point (at different altitude) at arrival. If such a situation arises, the y-fit will automatically be inhibited.

If so desired, it is also possible to manually inhibit any plane changes during the Lambert fit via disable y_fit added to the burn sequence definition.

You can vary the departure and arrival time somewhat - for a while the fit will still converge, but eventually it will get more and more propellant-costly and at the same time more and more difficult to converge.

Analytical vs. numerical Lambert solution

There are many analytical Lambert solvers available in libraries or as sample codes. They assume a spherical gravity field and instantaneous burns (impulse approximation). Using the LEO targeting software, it is relatively easy to first set spherical gravity and impulse approximation, do a Lambert fit, then change to J3 gravity and finite duration burns and program the Lambert solution obtained before as PEG-7 burns.

The result of such a procedure is shown here for the above rendezvous:

Analytical vs. numerical Lambert solution.

In the event, the analytical solution misses the target by a good 2.5 km - and is much worse in letting the chaser come to a good rest relative to the target. So while it is quite possible to use the analytical solution and then do suitable correction burns, there's something to be said for the numerics.

Continue with Rendezvous plans.


Back to main index     Back to science     Back to LEO targeting

Created by Thorsten Renk 2019 - see the disclaimer, privacy statement and contact information.