I'm looking for a clear description of RCS jet selection logic. The space shuttle, for instance, had tens of RCS thrusters, only three of which would be called to fire at a time given a 3D attitude error vector (probably six jets if also controlling for position).

I've read vague things about lookup table jet selection, but I still don't understand jet selection well enough to model it. I'm interested in any and all jet selection algorithms.

The space shuttle and the apollo missions are well understood and much of their technology is public IP now, so there must be a good detailed description of how their jet selection agorithms worked? Thanks if you know of a good reference to point me to!

  • $\begingroup$ For shuttle I've got some examples but you'd need the FSSR (flight software requirements document) to get everything, and I don't think that's public. tl;dr it was a bunch of lookup tables. $\endgroup$ Commented May 4, 2021 at 16:51
  • $\begingroup$ Is there anything public that you can share? I'd be interested in learning more about those lookup tables and the selection logic behind them :) $\endgroup$
    – user39728
    Commented May 4, 2021 at 16:54
  • 1
    $\begingroup$ OK, I'll post a partial-partial answer... $\endgroup$ Commented May 4, 2021 at 16:56
  • $\begingroup$ Thank you thank you :) $\endgroup$
    – user39728
    Commented May 4, 2021 at 16:58
  • 2
    $\begingroup$ Keep in mind that the Shuttle was limited by late 1960s computer technology that performed 480000 instructions per second. What was a good solution 40 years ago most likely would be viewed as not being a good solution today. $\endgroup$ Commented May 4, 2021 at 18:26

1 Answer 1


sub-partial answer...

Shuttle used a table lookup method to determine which jets to fire for a desired maneuver. If the full tables are available online, I am not aware of it, but there were some examples in training material.

For background on the shuttle RCS and its operations please review the following answers first:

This diagram shows the naming convention of the Orbiter jets and their groupings.

enter image description here

For a given command (automatic or manual), the jet selection first references a look-up table to tell how many jets are needed from each jet group. A jet group is a group of jets located on the same pod (forward, left, or right) that point in the same direction, as shown in Figure 7-3. There are several tables, and they take into account factors such as jet failures, propellant feed constraints, and whether or not the jets are being fed OMS propellant through an interconnect. Then, the jet priority table is referenced for the actual selections. Pre-mission, each jet is assigned a rank within its jet group. Under normal conditions, only the jets with the highest priority are commanded to fire. If a jet fails and becomes deselected, it is removed from the table. Since jet RM keeps the DAP informed as to which jets have failed, only those jets that are still available on the priority table are commanded to fire.

An example for a pure positive yaw maneuver using primary jets and HI ROT selected on the Digital Autopilot.

enter image description here

Reference: Guidance and Control Insertion/Orbit/Deorbit Workbook G&C I/O/D 21002 (paper copy)

For Apollo, there is a useful paper Apollo Command and Service Module Reaction Control by the Digital Autopilot. It's unsurprisingly similar to shuttle - jet groups, lookup tables, etc. See paragraph 3.3.1.

enter image description here

There's also a discussion of phase plane control (figure 3.5) which might shed some additional light on Modeling attitude control: ramping/easing between attitude commands? and its answer & discussion in comments.

  • $\begingroup$ Nice addition for Apollo. You can probably stop calling it a "sub-partial answer"; it's quite good now. $\endgroup$
    – DrSheldon
    Commented May 11, 2021 at 0:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.