Tutorial:Ideal Orbits for Communication Satellites

With the additions in Communications networks in 1.2, getting continious communication in any given system is an important factor. While the exact method of execution depends on personal taste there are fairly easy ways to set up a Comm network, even in early career with only 1.25 Parts at max.

This Tutorial will show two sets of Comm Networks around any given body and shine a little light on the math of it and an easy way to do it. This is a pretty theoretical tutorial. There is no way around this, really. You can skip to the results tho.

For simplicity this guide assumes an occlusion of 1 for planets and a target orbit with an eccentricity of 0. With higher or lower settings your results will differ.


3-Satellite Constellation

In a 3-Satellite constellation 3 satellites are evenly spaced in a triangle with each one holding a 60° angle towards the other satellites. To work properly they need to be visible to each other; over the horizon. This leads to the question of what altitude is required so the satellites can see each other.

Constellation minimum Altitude

The answer is simple and applies to all bodies. It is one planetary radius or a semi-major axis of the planets diameter, assuming a negligible eccentricity, which should be a given for a commsat constellation.

Why is it one Radius? I have to go into sine/cosine for that a little.

As I said earlier each satellite holds a 60° angle to the others. If you draw a line at mid-angle through each angle to the opposing side where the triangle is touching the circular planet you split the triangle into six smaller triangles with a 30° angle at the satellite, a 60° angle at the planet’s center where the lines will cross and a 90° right angle at the horizon point. Thus we now know, that the side adjacent from the 60° angle and opposite from the 30° angle is the planet’s radius.

With that we can now apply sine and/or cosine to the problem at hand. Remember here that the sine of an angle is the relation between the opposing (o) and the long side (hypotenuse h) of the triangle while the cosine is relation of the adjacent side (a) to the hypotenuse. Or in math form: sin(x)=o/h cos(x)=a/h The long side hence will also be the distance of the satellite to the center of the planet.

In our case we will use sine and cosine in such form that it will always give us r/h. A scientific Calculator gives us: sin(30)=0.5=1/2 cos(60)=0.5=1/2

This means that for the constellation to work the satellite needs to be twice as far from the center of the planet than its radius. Hence you need to be at an altitude of the radius to be visible.

Yes, it’s that simple.

Finding the optimal altitude

Now that we know our minimum altitude we could set up shop there, and it’ll work. It’s not going to work well, though. For one the satellites will be barely visible to each other, making for a lousy commline. Also the satellites will be rather hard to place as either you need to place them at 60° with some reference or you separate them by launching them all at once and using the orbital period to make sure they have a good separation. I find it easier to use the orbital period, however for example Kerbin’s orbital period at 600 km circular altitude is 1h 13m 15s. You could work with that, but it would be rather hard.

So we need a time that is easy to use at a higher altitude. Easy to use here means a time that while a placed satellite in its final orbit will perform 2/3 of that orbit the satellite carrier being parked in a lower orbit with the apoapsis at the target altitude will perform one orbit. Alternatively when coming from a higher orbit the placed satellite might do 1.33 orbits while the carrier makes 1 orbit with its PE at the target altitude.

This requires two steps to work out.

Getting the Period from the semi-major axis

The first step is knowing the period of the minimum orbit at which the satellites will see each other. The period can be calculated from the following formula:


  • T: Orbital Period in seconds
  • Pi: 3.14159…
  • a: semi-major axis of the orbit in meters; in the Previous step we have established this to be the diameter or two times the radius of the planet
  • GM: the planets standard gravitational parameter in m³/s²

Inserting the semi-major axis derived from the earlier step will give you a time in seconds, which I recommend to convert to HH:MM:SS for ease of use in the next step.

Getting the altitude through the desired period

Now that we know the minimum time satellites visible to each other take for one orbit we can select a higher time interval, and hence a higher orbit, that will allow us to place the satellites evenly. To make it easy it should be a time interval easily dividable by 3. That limits your options to 1.5 hours with 1 hour transfer, 2 hours with 1.33 hours transfer and every 3 hours with 2/3 of that time for transfer (3 with 2, 6 with 4 and so forth). If you convert that time back to seconds you can use the following formula to get a semi major axis for that period time:


Subtracting the planet’s radius will give you the circular orbital altitude to shoot for.

Individually Spacing Satellites

If you don’t mind launching each satellite individually. There are several ways to space the satellites, including the Law of Cosines or the distance formula. Instead of looking at the periods of the orbits, you will look at the distance between satellites. When you target one, it will display the distance between them, from which you can manipulate by altering your apoapsis or periapsis for a couple of orbits. Here’s how you use the formula:

a2 = b2 + c2 – 2bc * cos(A)

If you have a circular orbit, the formula can be simplified to:

a2 = 2b2 – 2b2 cos(A)

In both of these formulae, A is 120 degrees or 2π/3 radians, and b is the altitude plus the radius of the planet (600km for Kerbin). a is the desired distance between the satellites. The other way to do it is to use the distance formula, but for that you have to use polar coordinates in order to find the points on the circle that we want to find the distance between. Polar coordinates are methods to find the coordinates of points on the edge of a circle. You don’t need a polar coordinate plane, but you can instead convert the points using r*cos(θ) and r*sin(θ) for the x and y, respectively, where r is the altitude plus the radius of the planet and θ is 2π/3 radians. The distance formula,

d2 = (x2-x1)2+(y2-y1)2

can then be used on the coordinates that you calculated. I’ve already implemented it all here in this Desmos graph for convenience.

4-Satellite constellation

The simplest 4-satellite constellation is the equally spaced equatorial constellation. This has no real benefits over a 3 satellite constellation, when I started though it made things conceptually easier, because instead of working with sine and cosine you work with simple pythagoras. In this constellation the satellites form a perfect square with a minimum side length of the diameter or two times the radius of the planet. Hence it can be divided into four squares with the connecting point at the planet’s center and a side length of the radius. And with a²+b²=c² being what it is in such a case the semi-major axis of the target orbit is the radius multiplied by the square root of two with the radius being again subtracted to get the altitude. a=r*2^0.5

To get an optimal altitude from here you proceed just as with 3 satellites, the only difference being that you are looking for periods easily divisible by 4 (1 hour and every even number of hours). Note that this constellation provides optimal coverage for the equator but not the poles.

Other useful satellite constellations are introduced in the lecture slides by Dr. Lloyd Wood of Cisco Systems in 2006.

A far more complex method is also the most efficient way to deliver continuous 100% coverage of the entire surface. John E. Draim published a paper in the J. E. DRAIM. “Three- and four-satellite continuous-coverage constellations”, Journal of Guidance, Control, and Dynamics, Vol. 8, No. 6 (1985), pp. 725-730. outlining a proof that complete coverage could be achieved with only 4 satellites deployed in a tetrahedron. It produces large swaths of multiple-satellite coverage, and no areas are ever out of coverage.

In the Draim 4-satellite constellation, all satellites have identical apoapsis height (from surface), 8.04 ± .05 × the body radius; identical periapsis height, 4.30 ± .05 × the body radius; identical inclinations, 31.5° ± 1°, so that each will eventually cover polar regions in addition to equatorial ones; equal intervals of Longitude of Ascending Node, 90° ± 0.3°, to ensure full coverage of longitudes; alternating arguments of periapsis, 270° and 90° ± 0.3°, to ensure full coverage of latitudes; equal intervals of relative Mean Anomalies , 270° ± 0.3°, so they are spread out along their orbits to form a tetrahedron. Larger semi-major axis allows for slightly larger margin of error since there is more overlap (ex. SMA = 8× the body radius has about 3× the margins of error mentioned above). In any case, you may need to access the save file and edit the semimajor axes to be equal, so the satellites don’t fall out of alignment after a few orbits. An Illustration of this for Earth orbits is in the picture below:

Tetrahedral Satellites Constellation Earth Orbit

The optimal orbital parameters needed for Kerbin are provided, courtesy of Maltesh posts in the KSP forums Scenario: Putting up 4 Satellite Config for Kerbin. Note that these are beyond the altitude for Kerbin synchronous orbit. You can use these values when editing the save file.

Legend for Chart

Abbreviation Term
SMA Semimajor Axis [m]
ECC Eccentricity
INC Inclination [deg]
AoP Argument of Periapsis [deg]
LAN Longitude of Ascending Node [deg]
MAE Mean Anomaly [rad] at Epoch = y1, d1, 0:00

Tetrahedron Constellation around Kerbin

4-Satellite Complete Coverage of Kerbin

Sat1 31.491 0.2612 4 239 000 0.000 270.000 0.000
Sat2 31.491 0.2612 4 239 000 90.000 90.000 -1.571
Sat3 31.491 0.2612 4 239 000 180.000 270.000 3.142
Sat4 31.491 0.2612 4 239 000 270.000 90.000 1.571

Be sure to choose an appropriate antenna. In the case of these orbits and Kerbin, an 8K Omnidirectional Antenna (Relay) appears to be able to keep constant contact with the surface. Be sure to use Relay antennas if you are not playing with the additional ground stations, because they will need to relay to each other to reach KSC. Optionally a large antenna satellite in a geostationary orbit above KSC could serve as the central relay point and would also serve as a relay for comsat pairs with high power relays in highly elliptical polar orbits later in the game.

To adapt these to other bodies, all the factors remain the same except for the Semimajor Axis (adjust periapsis and apoapsis proportionally to body radius). This constellation is not possible/stable for Duna, Ike, Jool, Laythe, or Vall. Use the appropriate relay antennas. The challenge is, of course, getting all these launched and getting them into the precise orbits needed; or else simply editing them into place in the save file. In either case, the semi-major axis should be edited in the save file to be equal to prevent mis-alignment after several orbits. In fact, this is recommended for any satellite constellation.

The recommended procedure is to first get the satellites into a circular orbit with the correct semi-major axis, paired up at opposite sides. Then you can correct inclination and eccentricity of each satellite using the appropriate burns at the appropriate locations (mess around with maneuver nodes). Note that any mis-matched period between burns will cause the satellites to fall out of alignment, so keep the semi-major axis constant before and after each burn. When completed, edit the save file to make the semi-major axes equal. Another method is to edit basic crafts or debris into the desired orbits, then target and rendezvous with each one. This would prevent any mis-alignment of the end product and not require as much mental gymnastics.

N-Satellite Constellation Minimum Altitude

In general, the altitude (as measured from the body’s centre that any number of satellites need to be at or above is:

r = r body ⋅ sin ⁡ 90 ( n − 2 ) n {displaystyle r=r_{text{body}}cdot sin {frac {90(n-2)}{n}}} {displaystyle r=r_{text{body}}cdot sin {frac {90(n-2)}{n}}}

This is for circular orbits, where all satellites are evenly spaced. As stated above however, it is not necessary to build a relay network with extra satellites.

Stationary orbit

Putting comm sats in a stationary orbit is an interesting and challenging choice, however in terms of gameplay it has no benefit. Stationary orbits are great if you have a static directional dish placed on the surface that needs line of sight to a satellite in the very same position in the sky at all time. The antennas in KSP are omnidirectional though, you need not point them. A low orbit is usually an easier choice.

Distance Management

One additional factor that you should be aware of is the distance between the satellites. if their distance is greater than their Range it does not matter if they are in a perfect formation, they won’t connect. The distance is easily calculates using the cosine (relation between adjacent side and hypotenuse) of mid angle at the satellite (30° or 45°) and multiplying it with the Semi -Major axis (a). Since this will only give you the distance between the satellite and the horizont point you also need to multiply it by 2. If the following mathematical statement is true the satelites will connect:

  • 3 Satellite Constellation: (Satellite A Antenna Rating * Satellite B Antenna Rating)^0.5 >= Cos(30)*a*2
  • 4 Satellite Constellation: (Satellite A Antenna Rating * Satellite B Antenna Rating)^0.5 >= Cos(45)*a*2

If your aim is to only create a comm network without nesessarely connecting it to Kerbin, other than for Kerbol or any other body you can always get by with a single HG-5, possibly at the expense of signal strength.

I don’t feel like doing the math…

Here is something i prepared earlier. This table will provide you with everything you need to calculate this yourself along with the precalculated results. I suggest you try it yourself though. That’s when you learn.

This guide is also available on Steam.

See also