SIMPLIFIED MODEL OF THE SPACE SHUTTLE ON-ORBIT FLIGHT CONTROL SYSTEM
Table of Contents
- author: P. Hattis, C. Kirchwey, H. Malchow, D. Sargent, S. Tavan
- address The Charles Stark Draper Laboratory, Inc. 555 Technology Square Cambridge, Massachusetts 02139
- sponsor National Aeronautics and Space Administration Johnson Space Center Houston, Texas 77058
- date July 1982
Annotations by H. Bourbouh, P-L. Garoche and K. Trinh. Oct. 2019
1 FrontMatter
1.1 Abstract
This document defines the simplified version of the space shuttle on-orbit flight control system intended for establishing the interaction of the flight control on the payload and/or payload interface structure during the predeployment or deployment state. These states are defined to occur any time the payload is unlatched from its relatively rigid ascent/entry mounting, but is still connected to the orbiter. This flight control version is called the simplified digital autopilot (SDAP) and includes all rotational control capabilities generally expected during orbital payload operations which include any payload related activity where payload dynamics and orbiter dynamics significantly interact.
The purpose of the SDAP is to generate representative reaction control system (RCS) jet firings during on-orbit operations. The SDAP lends itself to ready implementation in any well constructed flexure simulation with payload and possibly orbiter bending models. Possible outputs of simulation studies include payload loads data and payload/orbiter interactions.
1.2 Preface
This document defines the simplified version of the space shuttle on-orbit flight control system intended for establishing the interaction of the flight control on the payload and/or payload interface structure during the pre-deployment or deployment state. These states are defined to occur any time the payload is unlatched from its relatively rigid ascent/entry mounting, but is still connected to the orbiter. This flight control version is called the simplified digital autopilot (SDAP) and includes all rotational control capabilities generally expected during orbital payload operations which include any payload related activity where payload dynamics and orbiter dynamics significantly interact.
The purpose of the SDAP is to generate representative reaction control system (RCS) jet firings during on-orbit operations. The SDAP lends itself to ready implementation in any well constructed flexure simulation with payload and possibly orbiter bending models. Possible outputs of simulation studies include payload loads data and payload/ orbiter interactions.
Key constraints in developing the SDAP model were that no translation operations would be required during pre-deployment or deployment payload activity and that the most severe failures requiring study would be single jet ON failures of the jet type(s) (primary and vernier) used when operating with a particular payload. Any planned payload operations that could violate these assumptions may require study beyond the scope of this document.
A significant number of quantities which are software design or mission dependent, called I-loads, are required in the SDAP. Sample values, applicable to STS-5, are given in the SDAP model, but reference to the NASA I-load baseline, Space Shuttle Program Orbiter Project Computer Program Development Specification Volume I, Book 9.5 STS Flight Software Initialization Load SS-P-0002-195F will be required to assure that appropriate I-load values are used for a payload on a specific shuttle flight.
The user should be aware that a flight software change may have some affect on the validity of the SDAP model.
While the SDAP is not meant to guarantee the exposure of all payload/orbiter/FCS operational concerns, it is intended to be used as a design tool to aid in resolving broad configurational and operational issues.
2 MainMatter
2.1 Introduction
This report documents a simplified model of the shuttle orbital flight-control system (FCS). The model is designed for construction of shuttle-payload interaction simulations, and it contains sufficient elements of the complete autopilot to provide realistic reaction control system (RCS) jet-firing patterns.
The report defines a simplified digital autopilot (DAP) that contains an automatic maneuver routine to control rotation maneuvers and attitude hold. Manual rotation modes are allowed also. The RCS processor retains state-error computations, phase-plane logic, and rotational vernier and primary jet selection. A state estimator is included to process attitude data, thus assuring that the RCS processor senses errors in a similar manner to the actual flight software. A considerable simplification is attained by eliminating RCS and orbital maneuvering system translational DAP logic Q1.
The report begins with an overview of the simple DAP (SDAP). Then, each logic module is discussed in turn. The discussion includes four elements for each module, namely:
- Purpose.
- Functional Description.
- Recommended Logical Realization.
- Input/Output (I/0) Requirements.
Simplified models of the inertial measurement unit (IMU) (DAP sensory data source) and RCS jets (DAP effectors) complete the FCS model.
The appendices provide supporting material including a discussion of the sources and allowable sizes of SDAP parameters, an overview of the attitude data transfer problem, a discussion of rigid-body SDAP behavior, and some discussion of suggested test cases to verify the SDAP implementation. This report defines the FCS as including the SDAP, the motion sensors (IMU), and the RCS (jet) model. The RCS hardware models are designed for rotation only. The FCS model can be configured as a logical unit in a shuttle/payload simulation as shown in Figure 1.
Figure 1: Shuttle/payload simulation.
Users of the SDAP are cautioned that, at very small rate limits and deadbands, e.g., 0.01 deg/s and 0.01 deg for vernier jets, simulation results using the models presented here may not represent real vehicle behavior because of the model simplifications. [Req.s1.p2.1]
2.2 SDAP Structure
- DAP/Vehicle Relationship
Figure 2 shows the general nature of the DAP/vehicle relationship. The DAP receives information concerning the vehicle attitude from sensors (IMUs), makes decisions about needed changes in state, and requests the exercise of effectors (jets) to bring about a desired state. The conditioning inputs shown in Figure 2 include DAP parameters, such as attitude rate limits and deadbands and other quantities that the crew can set via keyboard entry, and by push-button moding discretes, such as the choices between primary and vernier jets and automatic and manual attitude control. [Req.s2.1.p3.1]
Figure 2: DAP/Vehicle Relationship
- SDAP Internal Structure (Basic)
The heavy arrows in Figure 3 show the SDAP basic flow structure. The Attitude Processor receives attitude measurements from the IMU, sends the current attitude to the Steering modules, and sends attitude increments to the State Estimator. The State Estimator filters the attitude increments and sends rate and attitude estimates to the State Error module. The Steering modules send desired state information to the State Error module where it is compared to the estimated state. Resulting state errors are passed to the Phase Plane module where decisions are made about requesting jet firings. If a decision is made to fire jets, the Jet Selection algorithm selects an efficient jet combination to fire.
Figure 3: Simplified DAP functional structure.
The SDAP executive routine calls the SDAP at a 12.5-Hz cycle rate with appropriate settings of input moding discretes.
The light arrows in Figure 3 represent refinements required to reproduce complete DAP behavior. The State Estimator feeds a body-attitude change estimate to the Auto Maneuver steering module. It also feeds an estimate of all unmodeled accelerations to the Phase Plane which uses this information for more efficient control. The Jet Selection module feeds information about jet firings to the State Estimator so that the firings will not be treated as unmodeled forces. When the steering mode is manual open-loop, the State Error and Phase Plane modules can be bypassed; jets are fired directly by moving the rotational hand controller (RHC) out of detent. [Req.s2.2.p5.1]
- SDAP Construction
Figure 4 is a detailed SDAP diagram with module I/0. The structure is basically that of Figure 3, except that the Attitude Processor is treated as an external module.
Figure 4: Unknown figure 4
We are missing Figure 4 and pages 7 and 8 !
- SDAP Input Description
The SDAP input quantities can be conveniently divided into four categories:
- Constants.
- Dynamic Variables.
- Parameters.
- Moding Discretes.
Normal crew inputs cannot alter constants such as State Estimator gains. Other constants, such as Phase Plane acceleration, can be scaled by crew input, but the basic reference set remains unchanged. Appendix A lists the constants, along with their documented identification numbers.
Only two dynamic variables enter the SDAP from the IMU via the Attitude Processor module. These are current attitude and attitude increment.
SDAP parameters are crew alterable items, such as rate limit and deadband.
Finally, the moding discretes choose options such as auto or manual control and jet subgroup selection. Tables 1 through 4 list all the SDAP inputs shown in Figure 4 and the inputs to the SDAP executive. Except where noted, the user must supply these inputs.
Table 1: Constants Name Function MIN DELTA OMEGA Minimum rotation rate change, used to define Phase Plane switching lines CONTROL ACCELERATION 3-axis body acceleration expected from thrusting jet PHASE PLANE ACCEL Control acceleration used to define Phase Plane switching lines PRIMARY JET LARGEST Largest expected rotation rate ROTATION MINIMUM IMPULSE change in any axis over one SDAP cycle, for primary jets ROTATION RATE INCREMENT Expected rotation rate change over one SDAP cycle due to jet firing STATE ESTIMATOR GAIN Constant gains used in the estimator measurement incorporation equations VERNIER JET LARGEST Vernier equivalent of primary ROTATION MINIMUM IMPULSE value listed above Table 2: Dynamic variables Name Function ATTITUDE INCREMENT Change in attitude during two SDAP cycles. Not a user input. CURRENT ATTITUDE Current attitude relative to inertial reference. Not a user input. Table 3: Parameters Name Function COMMANDED ATTITUDE Attitude to be attained by an automatic maneuver DEADBAND Attitude error limit allowed before invoking control DIAGONAL INERTIA RATIO Ratio of inverse inertia matrix diagonals to reference values MANEUVER RATE Rate at which maneuver is to be carried out OFF-AXIS COMP THRESHOLD Threshold for off-axis coupling compensation RATE LIMIT Rate error limit allowed before invoking control Table 4: Moding discretes Name Function AUTO-MANUAL SWITCH Chooses between automatic and manual steering. Executive discrete not passed to SDAP BYPASS Allows Phase Plane to be bypassed in open-loop manual mode. Not a user input INITIALIZE AUTO MANEUVER Required by Auto Maneuver logic. Not a user input INITIALIZE JET SELECTION Required by the Jet Selection logic. Not a user input INITIALIZE STATE ERROR Required by the State Error logic. Not a user input CLOSED LOOP Chooses between closed- and open-loop manual control NO PLUS Z JETS Controls use of jets firing in upward direction PAYLOAD EXTENDED Provides for alternate set of mass properties when payload is extended PITCH HI-LOW SWITCH Allows selection of pitch jet forward plus aft couples or forward or aft only jets PITCH TAIL-NOSE SWITCH If previous switch is LOW, allows choice of forward or aft jets PRIMARY-VERNIER SWITCH Allows choice of primary or vernier jets RHC STATE Indicator of RHC deflection YAW HI-LOW SWITCH Yaw equivalent of pitch switch previously listed YAW TAIL-NOSE SWITCH Yaw equivalent of pitch switch previously listed - SDAP Outputs
The SDAP has only two outputs, namely discretes which determine jet ON/OFF status (see Table 5).
Table 5: SDAP outputs Name Function PRIMARY JET COMMAND Primary ON/OFF discrete VERNIER JET COMMAND Vernier ON/OFF discrete - Mode Possibilities
Figure 5 shows the basic moding possibilities. SDAP can be in either AUTO or MANUAL configuration. If in AUTO, the desired state comes from the auto maneuver logic [Req.s2.6.p13.1]; if in MANUAL, the desired state depends on the hand controller history [Req.s2.6.p13.2]. The possibilities of Figure 5 are repeated for both primary and vernier jets. Manual acceleration can be achieved in the SDAP by turning on jets when the RHC is deflected in the manual open-loop mode. The flight code pulse mode can be emulated by an appropriate choice of RHC deflection interval [Req.s2.6.p13.3]. In flight, pulse sizes in all axes are controlled by a single crew specified rate change quantity which is divided by an estimated per axis acceleration to compute pulse duration [Req.s2.6.p13.4]. Pulses in close proximity to one another generally will all be based on one rate change value [Req.s2.6.p13.5]. In any one axis, plus and minus pulses will be of the same duration [Req.s2.6.p13.6].
Tables 6 and 7 describe the moding options.
Figure 5: SDAP moding possibilities.
Table 6: Automatic modes. Name Function AUTOMATIC MANEUVER The vehicle executes an attitude change from current to commanded attitude at a selected rate AUTOMATIC ATTITUDE HOLD The vehicle maintains current inertial attitude within selected rate limit and deadband Table 7: Manual modes. Name Function OPEN-LOOP PULSE RHC deflection is exercised to mimic pulse behavior in the shuttle where pulses achieve the selected rate change ACCEL RHC deflection turns on jets for duration of deflection. This mode, for the SDAP, is functionally the same as Pulse CLOSED-LOOP DISCRETE RATE Vehicle achieves and maintains constant rate about axes with RHC deflected, attitude hold about axes with RHC in detent - Differences Between Simple and Complete DAPs
- General Discussion
By eliminating thrust vector control (TVC), seven of the 18 modules of the complete DAP are eliminated. Elimination of the local vertical/local horizontal tracking module (LVLH TRACK) and the translation modules, and combining manual rotations in one module, reduce the DAP to six control law modules, an Attitude Processor module, and an Executive module which retains some of the functions of the complete DAP reconfiguration (RECON) module.
- Module Alterations
The Phase Plane and State Estimator modules are unchanged. Auto Maneuver is simplified by eliminating the track mode and moving the desired attitude increment integration to the State Error module. The Manual Maneuver module contains three DAP functions: discrete rate rotation (ROT DISC), pulsed rotation (ROT PULSE), and rotational acceleration (ROT ACCEL). ROT DISC becomes a manual closed-loop option and works the same way as in the complete DAP; however, interaction with LVLH TRACK is eliminated and the desired attitude increment integration moves to the State Error module. Setting the RHC discrete to ON for an appropriate interval mimics the ROT PULSE and ROT ACCEL functions.
The State Error module adds desired attitude increment integration and drops the BYPASS switch, which can be handled in the Executive module by altering the SDAP calling sequence.
Although the Phase Plane module function is unaltered, the boundary equations and control action equations have been simplified by eliminating a number of intermediate variables.
Finally, the Jet Selection module has been simplified considerably by reducing the number of primary jets considered to 11.
- General Discussion
2.3 Module descriptions
This section describes the construction of each defined logic module. The module descriptions are located in the following sections.
- SDAP Executive.
- Attitude Processor.
- Auto Maneuver.
- Manual Maneuver.
- State Estimator.
- State Error.
- Phase Plane.
- Jet Selection.
The Executive module contains a subset of the logic contained in the complete DAP reconfiguration function. It may include read/write functions for use of the SDAP in simulations. The Attitude Processor is not a control law module, such as modules 3.3 through 3.8; however it performs a flight control system function and is therefore included.
Each module description section contains a statement of purpose, a description of how it works, a sequence of logic from which codinq can be produced, and an I/0 list.
- SDAP Executive.
- Purpose
The SDAP Executive routine serves two functions. It calls the SDAP modules in proper sequence [Req.s3.1.1.p18.1] and sets SDAP moding flags [Req.s3.1.1.p18.2].
- Functional Description
- Relation of SDAP Executive to Simulation Executive
The SDAP Executive must be integrated into an overall simulation which includes the dynamics of the orbiter and models of its sensors and effectors. Figure 6 shows the essential functions of a simulation executive, including the sequencing of the SDAP Executive and the FCS hardware models. The vehicle dynamics models for rigid-body motion and flexure should propagate the vehicle state in a manner that makes IMU measurements current and applies RCS thrust impulses to the proper dynamic state.
Information transport lags due to the IMU and the RCS hardware models affect the simulation results significantly. Implementation of these lags is covered in the section on FCS hardware models. In general, however, these models are responsible for supplying the SDAP with information and responding to SDAP commands, with appropriate delays.
A clock is maintained that increments time at intervals of 80 ms, the SDAP time step [Req.s3.1.2.1.p19.1]. The IMU module is called every 80 ms, even though the SDAP reads the IMU only every 160 ms, so a push-down stack of old IMU data can be maintained. Thus, IMU lags that are multiples of the 80 ms SDAP cycle can be implemented conveniently. Section 4.1, on the IMU model, and Appendix B, on attitude data generation and transfer, contain a further discussion of IMU lags.
Figure 6: Simulation executive.
- SDAP Executive Functional Description
The SDAP Executive sets some module initialization and modinq flags, and sequences the SDAP modules in accordance with the flag settings. If the hand controller is deflected in any axis, the SDAP automatically switches to manual mode [Req.s3.1.2.2.p19.1]. On the first pass, the jet select initialization flag is set [Req.s3.1.2.2.p19.2], and if the mode is manual, the state error initialization flag is set [Req.s3.1.2.2.p19.3]. Every second pass, the Attitude Processor and Part 1 of the State Estimator are called to incorporate new attitude information from the IMU [Req.s3.1.2.2.p19.4]. When the maneuver mode is changed from manual to auto, if the bypass flag is ON, it is set to OFF and the auto maneuver initialization flag is set to ON [Req.s3.1.2.2.p19.5. Since the Auto Maneuver module is processed at 1.04 Hz, it is called every 12th DAP pass whenever SDAP is in the auto mode [Req.s3.1.2.2.p19.6]. If the mode is manual, the Manual Maneuver module is called each SDAP pass [Req.s3.1.2.2.p20.1].
State Error uses the desired attitude and rate, which are generated by the maneuver modules, to calculate attitude and rate errors. If any of the bypass-flag elements are OFF, then Phase Plane is called to set the rotation commands in those axes [Req.s3.1.2.2.p20.2]. Jet Selection then is called to convert the rotation commands to individual jet commands. Finally, Part 2 of the State Estimator is called to extrapolate the vehicle state estimates.
- Relation of SDAP Executive to Simulation Executive
- Logical Structure
Figure 7 shows the logical structure of the SDAP Executive.
Figure 7: SDAP Executive logical structure
IF ANY ELEMENT OF RHC STATE \neq 0 THEN AUTO MANUAL SWITCH = MANUAL IF FIRST PASS THEN INIT JET SELECT = ON IF AUTO MANUAL SWITCH = MANUAL THEN SET ALL ELEMENTS OF INIT STATE ERROR= ON EVERY SECOND PASS: CALL ATTITUDE PROCESSOR CALL PART1 FILTER IF AUTO MANUAL SWITCH = AUTO THEN IF OLD AUTO MANUAL= MANUAL THEN CALL COUNTER= 0 SET ALL ELEMENTS OF BYPASS= OFF INIT AUTO MANEUVER= ON IF CALL COUNTER= 0 THEN CALL COUNTER = 12 CALL AUTO MANEUVER ELSE CALL MANUAL MANEUVER CALL STATE ERROR IF ANY ELEMENT OF BYPASS= OFF THEN CALL PHASE PLANE CALL JET SELECT CALLPART2 FILTER OLD AUTO MANUAL= AUTO MANUAL SWITCH CALLCOUNTER=CALLCOUNTER-1
- Interface Summary
The Executive receives the RHC state, the auto/manual switch, and the bypass flag as inputs. Its outputs are the initialization flags for state errors, jet select and auto maneuver, and the bypass flag. In addition, the Executive modifies the auto/manual switch based on the RHC state.
- Input List
The quantities listed in Table 8 are the subset of quantities listed in Table 4 that actually affect the SDAP calling sequence.
Table 8: Executive module inputs Variable Name Source Qualities AUTO MANUAL SWITCH Run Input,Executive Boolean 1=auto 0=manual BYPASS Manual Maneuver, Executive 3 vector of Booleans RHC STATE Run Input 3 vector with 0 = detent \(\pm\) 1 = out of detent - Output List
Table 9 shows the subset of the quantities in Table 4 that are outputs of the Executive.
Table 9: Executive module outputs Variable Name Destination Qualities BYPASS Phase Plane 3 Vector of Booleans INIT AUTO MANEUVER Auto Maneuver Boolean INIT JET SELECT Jet Select Boolean INIT STATE ERROR State Error Boolean
- Purpose
- Attitude Processor.
- Purpose
The flight-code attitude processor module reads IMU gimbal angles. From these, it produces the quaternion that specifies the relationship of the orbiter body axes to inertial coordinates and also produces angle increments over successive cycles. Because of the simple IMU model chosen for use with the SDAP, the Attitude Processor defined herein simply reads the Euler rotation matrix \(R_I^B\) (orbiter body with respect to inertial reference rotation) produced by the orbiter dynamics model, and constructs the quaternion \(Q_I^B\) (body with respect to inertial), from which angular increments \(\delta\theta\) are derived (see Appendices B and C).
- Function
The quaternion \(Q_I^B\) is obtained from the rigid-body dynamics integration of \(\dot{R}_I^B\), name \(R_I^B\). \(Q_I^B\) is named CURRENT ATTITUDE and is used by the Auto Maneuver module. Successive values of \(Q_I^B\) are used to produce ATTITUDE INCREMENT, which is the basic attitude measurement processed by Part 1 of the State Estimator module. The Attitude Processor module is called every second SDAP pass; that is, on the same pass on which Part 1 of the State Estimator is called [Req.s3.2.2.p23.1].
- Logical Structure
The logic carries out the indicated transform algebra (see Appendix B for overall transport of attitude data and Appendix C for a discussion of quaternion algebra).
- Current Attitude \((Q_I^B)\) Calculation
Let \(q_i\) represent the elements of \(Q_I^B\), \(i = 0,1,2,3\). Let \(R\) represent \(R_I^B\), then
\[q_0 = \frac{1}{2} \sqrt{tr(R) + 1} \] \[|q_i| = \frac{1}{2} \sqrt{2 R_{ii} + 1 - tr(R) }\]
- ATTITUDE INCREMENT Calculation Using Successive \(Q_I^B\) Values
Compute the quaternion increment (\(B'\) represents previous cycle value)
\[ Q_{B'}^B = Q_I^B (Q_I^{B'})^* \]
Let \(q_i\) represent the elements of \(Q_{B'}^B\), then
\[ \delta\theta = 2 \cdot (q_1^2 + q_2^2 + q_3^2)^{1/2} \text{ (radians)} \]
The projection of single-axis rotation magnitude \(\delta\theta\) onto the body axes is
\[ (\text{ATTITUDE INCREMENT})_i = \delta\theta \cdot -\hat{u}_i \]
where \(\hat{u}\) is the unit vector formed from \(q_1\), \(q_2\), \(q_3\), and \(i\) denotes a particular body axis.
- Current Attitude \((Q_I^B)\) Calculation
- Interface Summary
The Attitude Processor module receives an Euler rotation matrix representing body axis orientation with respect to an inertial reference. This matrix is produced by the rigid-body dynamics model and passed, with delay, through the IMU model. The Attitude Processor produces quaternion CURRENT ATTITUDE and vector ATTITUDE INCREMENT for the Auto Maneuver module and the State Estimator to use.
- Input List
See Table 10.
Table 10: Attitude processor input list. Variable Name Source Qualities \(R_I^B\) IMU Model 3 x 3 matrix - Output List
Table 11: Attitude processor output list. Variable Name Destination Qualities ATTITUDE INCREMENT State Estimator 3 vector CURRENT ATTITUDE Auto Maneuver Quaternion (4 vector)
- Purpose
- Auto Maneuver.
- Purpose
The Auto Maneuver module performs attitude change maneuvers or attitude hold. A commanded inertial attitude is input, and, if this attitude is sufficiently different from the current attitude, the SDAP executes a maneuver at a preselected maneuver rate until the current attitude approaches the commanded attitude [Req.s3.3.1.p26.1].
- Functional Description
The two driving inputs are CURRENT ATTITUDE and COMMANDED ATTITUDE. The logic has been designed around quaternion algebra (see Appendix C). The module accepts the two inertial attitude inputs in the form of quaternions \(Q_I^B\). Multiplication yields the commanded attitude with respect to current body attitude quaternion \(QB^C\) from which the Euler eigen axis can be extracted in body coordinates
\[ \underline{\hat{u}} = - \frac{\underline{V}^n}{|V^n|} = -(q_1 \underline{\hat{i}} + q_2 \underline{\hat{j}} + q_3 \underline{\hat{k}})/|V^n|\]
and the single equivalent axis rotation
\[ \Delta\theta = 2 sin^{-1} (q_1^2 + q_2^2 + q_3^2)^{1/2} \text{ (radians)} \]
where \(q_0\), \(q_1\), \(q_2\), \(q_3\) are the elements of \(Q_B^C\), and \(V^n\) is the vector formed from \(q_1\), \(q_2\), \(q_3\). For convenience, the commanded attitude can be defined as a series of Euler rotations. The Euler rotation matrix can be calculated and converted to eigen axis and a single equivalent rotation angle using the equations of Appendix C.
Auto Maneuver tests the rotation angle \(\Delta\theta\) against two numerical criteria. If \(\Delta\theta\) is larger than \(y\), the module places itself in the maneuver mode; if \(\Delta\theta\) is less than \(x\), the hold mode results [Req.s3.3.2.p27.1]. The test values x and y are calculated as
\[\begin{array}{l} x = \text{SCALAR BIAS} + \text{Deadband}\\ y = \text{SCALAR BIAS} + 2 \cdot \text{Deadband} \end{array} \]
where
\[ \text{SCALAR BIAS} = \left(\text{RATE ESTIMATE} \cdot \underline{\hat{u}})^2/(2\underline{CA} \cdot abs\; \underline{\hat{u}}\right) + 0.5 |\underline{\text{RATE ESTIMATE}} \cdot \underline{\hat{u}}|\]
where the underscore indicates a vector, and
TODO: problem to display the equations
The difference between x and y, namely one deadband, is an angular hysteresis zone. The scalar bias is added to ensure that the angle traversed during deceleration from maneuver to hold results in a vehicle attitude near the center of the deadband.
The output of Auto Maneuver is simply two variable quantities DESIRED RATE and DESIRED ATTITUDE. DESIRED RATE is either zero during hold or the projection of MANEUVER RATE on the eigen axis during maneuver [Req.s3.3.2.p27.2]. Table 12 shows possible values of DESIRED ATTITUDE as set by Auto Maneuver.
Situation Module State Desired Attitude Hold Hold ATTITUDE ESTIMATE + ROTATION ANGLE \(\cdot\) Eigen Axis Unit Vector Maneuver Maneuver Not set by Module Start of Hold Hold Same as Hold Above Start of Maneuver Maneuver ATTITUDE ESTIMATE+ VECTOR BIAS In the hold mode, DESIRED ATTITUDE is the attitude estimate plus the projection of the rotation angle \(\Delta\theta\) the eigen axis [Req.s3.3.2.p28.1]. This means that in the State Error module, the attitude error is just \(\Delta\theta\) projected on the eigen axis, since the attitude estimate is subtracted.
When the maneuver mode is first entered, DESIRED ATTITUDE is set equal to the current attitude estimate plus a bias vector. The State Error module then has an attitude error equal to the bias vector [Req.s3.3.2.p28.2]. On each pass, State Error adds an attitude increment of \(0.08 \cdot \text{DESIRED RATE}\) to the desired attitude so that the attitude error is always referred to a frame rotating at the desired maneuver rate [Req.s3.3.2.p28.3].
The bias vector is computed as
for the ith axis. This bias compensates for the angular error produced during acceleration to the maneuver rate. The vehicle follows a quadratic angle versus time curve while the State Error module increments the desired attitude linearly. The bias vector therefore attempts to zero the attitude error during the acceleration phase of the maneuver.
- Logical Structure
See Figure 8.
Figure 8: Auto maneuver module logical structure.
IF FIRST PASS THEN MANEUVER HOLD SWITCH = OFF OLD MANEUVER HOLD SWITCH = OFF $Q_B^C = Q_I^C (Q_I^B)^*$ $\underline{V}$ = $SIGN$ ($Q_B^C$ (SCALAR)) $Q_B^C$ (VECTOR) ROTATION ANGLE = $2 arcsin |\underline{V}| 180/\pi$ IF $|\underline{V}| = 0$ THEN $V_1 = 1.0$ EIGEN AXIS = -UNIT (\underline{V}) SCALAR BIAS = ((RATE EST $\cdot$ EIGEN AXIS)^2/(2(CONTROL ACCEL_1|EIGEN AXIS_1| + CONTROL ACCEL_2 |EIGEN AXIS_2| + CONTROL ACCEL_3 |EIGEN AXIS_3|))) + 0.5 |RATE EST \cdot EIGEN AXIS| IF ROTATION ANGLE > SCALAR BIAS+ 2 \cdot DEADBAND THEN MANEUVER HOLD SWITCH = ON ELSE IF ROTATION ANGLE < SCALAR BIAS + DEADBAND THEN MANEUVER HOLD SWITCH = OFF IF MANEUVER HOLD SWITCH = OFF THEN DO DESIRED RATE = 0 DESIRED ATTITUDE = ATTITUDE EST+ EIGEN AXIS· ROTATION ANGLE ELSE DO DESIRED RATE = EIGEN AXIS \cdot MANEUVER RATE IF INIT AUTO MANEUVER = ON OR OLD MANEUVER HOLD SWITCH = OFF THEN DO DO FOR I = 1 TO 3 TEMP = DESIRED RATE_I - RATE EST_I VECTOR BIAS_I = -TEMP|TEMP|/(2 \cdot CONTROL ACCEL_I) DESIRED ATTITUDE = ATTITUDE EST+ VECTOR BIAS INIT AUTO MANEUVER = OFF OLD MANEUVER HOLD SWITCH = MANEUVER HOLD SWITCH
- Interface Summary
The basic dynamical inputs to the Auto Maneuver module are the quaternions CURRENT ATTITUDE (from the Attitude Processor module) and COMMANDED ATTITUDE (a user input). Functional parameters input by the user include DEADBAND, CONTROL ACCELERATION, and MANEUVER RATE. The Executive provides an initialization discrete, INITIALIZE AUTO MANEUVER, on the first pass when entering the AUTO mode. ATTITUDE ESTIMATE and RATE ESTIMATE are input from the State Estimator.
The outputs DESIRED ATTITUDE and DESIRED RATE are passed to the State Error module.
- Input List
Table 13 lists the Auto Maneuver module inputs.
Table 12: Auto Maneuver module inputs. Constants Name Values (deq/s2) CONTROL ACCELERATION Primary Jets Vernier Jets roll 0.8 0.019 pitch 0.9 0.013 yaw 0.6 0.014 Moding Discretes Name Source Qualities INITIALIZE AUTO MANEUVER Executive Boolean Parameters Name Source Qualities DEADBAND User Input scalar MANEUVER RATE User Input scalar Variables Name Source Qualities ATTITUDE ESTIMATE State Estimator 3 vector COMMANDED ATTITUDE User Input quaternion CURRENT ATTITUDE Attitude Processor quaternion RATE ESTIMATE State Estimator 3 vector - Output List
Table 14 lists the Auto Maneuver module outputs.
Table 13: Auto Maneuver module outputs. Name Destination Qualities DESIRED ATTITUDE State Error 3 vector DESIRED RATE State Error 3 vector
- Purpose
- Manual Maneuver.
- Purpose
This module executes open- and closed-loop manual rotation commands. The open-loop option sends a rotation command directly to the Jet Selection module whenever the RHC is deflected from null. The closed-loop option commands a constant rotation rate about chosen axes.
- Functional Description
The Manual Maneuver module incorporates three of the regular on-orbit autopilot functions, namely RHC acceleration, RHC pulse, and RHC discrete rate/attitude hold. In the SDAP, manual control is defined as being open-loop or closed-loop. The open-loop submode issues a rotation command whenever the RHC is deflected [Req.s3.4.2.p33.1]. The user can simulate acceleration and pulse actions by choosing an appropriate RHC deflection interval. In this submode, the module sets a BYPASS discrete and consequently, the Phase Plane module output is ignored. The rotation command is sent directly to the Jet Selection module [Req.s3.4.2.p33.2].
The closed-loop submode causes a DESIRED RATE value to be sent to State Error. For each axis in which the RHC is deflected, this rate is set equal to the input MANEUVER RATE [Req.s3.4.2.p33.3]. Normal Phase Plane module processing then maintains this body rate. When the RHC is returned to detent, the DESIRED RATE is set to zero and attitude hold is established at the current attitude [Req.s3.4.2.p33.4].
When the closed-loop submode is operating, the Manual Maneuver module issues an INITIALIZE STATE ERROR discrete whenever a change occurs in RHC state. This allows an attitude hold to be effected at the attitude attained when the RHC is returned to detent, by zeroing the attitude error [Req.s3.4.2.p33.5].
A FORCE FIRE discrete is sent to the Phase Plane module when the RHC is deflected (first pass of deflection only). This discrete causes at least a minimum-impulse jet firing at the beginning of RHC deflection and improves the crew "feel" of vehicle response to manual input for SDAP settings involving a large RATE LIMIT and small MANEUVER RATE [Req.s3.4.2.p34.1].
The choice between manual open- and closed-loop functions is made by setting the discrete CLOSED LOOP. The ON setting selects the closed-loop function [Req.s3.4.2.p34.2].
- Logical Structure
See Figure 9.
Figure 9: Manual maneuver module logical structure
DO FOR EACH AXIS IN TURN IF CLOSED LOOP = ON THEN BYPASS = OFF IF RHC STATE $\neq$ OLD RHC STATE THEN INITIALIZE STATE ERRORS = ON IF RHC STATE $\neq$ 0 THEN FORCE Fl RE = ON DESIRED RATE = RHC STATE $\cdot$ MANEUVER RATE OLD RHC STATE = RHC STATE OTHERWISE IF CLOSED LOOP = OFF, THEN BYPASS = ON ROTATION COMMAND = RHC STATE OLD RHC STATE is an internally-defined variable which keeps current the RHC history.
- Interface Summary
The Manual Maneuver module receives user inputs of RHC state and the choice of open- or closed-loop control. The main outputs are either a DESIRED RATE sent to the State Error module or a ROTATION COMMAND sent to the Jet Selection module. The flags FORCE FIRE and BYPASS are sent to the Phase Plane module.
- Input List
Table 15 defines the Manual Maneuver module inputs.
Table 14: Manual Maneuver module inputs. Moding Discretes Name Source Qualities CLOSED LOOP User Input 3 vector of Booleans, 1 element for each axis RHC STATE User Input 3 vector of scalars, 1 element for each axis, O = detent \(\pm\) 1 = out of detent Parameter Name Source Qualities MANEUVER RATE User Input Scalar - Output List
Table 16 shows the Manual Maneuver module outputs.
Table 15: Manual Maneuver module outputs. Moding Discretes Name Destination Qualities BYPASS Phase Plane 3 vector of Booleans FORCE FIRE Phase Plane 3 vector of Booleans INITIALIZE STATE ERROR State Error 3 vector of Booleans Variables Name Destination Qualities DESIRED RATE State Error 3 vector ROTATION COMMAND Jet Selection 3 vector of scalars, range \(\pm\) 1.0
- Purpose
- State Estimator.
- Purpose
The State Estimator module filters IMU angle data to provide smoothed estimates of vehicle rate and unmodeled acceleration. Since rate information is obtained by differentiating attitude data, noisy attitude data could create rate jumps large enough to cause many unwanted jet firings, especially when small rate limits are imposed. The estimator provides a low-pass rate filter, which reduces the noise problem to negligible proportions and filters higher frequency sensed rotations due to vehicle flexure. Figure 10 shows the effective attenuation curve for the State Estimator, and Figure 11 shows the associated phase lag.
An undesired acceleration estimate is also produced, which improves Phase Plane performance in the presence of forces like gravity gradient or on-orbit aerodynamic torques.
Figure 10: State Estimator rate estimate attenuation versus frequency.
Figure 11: State Estimator rate estimate phase lag versus frequency.
- Functional Description
The State Estimator module logic is in the following two parts:
- Part 1 Filter-Incorporates each new attitude increment (measurement) as it is produced at half the SDAP calling rate and puts out the current measurement-determined state estimate.
- Part 2 Filter-Extrapolates the estimate at the SDAP calling rate and includes expected \(\Delta\omega\) due to jet firings.
The State Estimator is divided into two parallel sections, one for rate estimation and the other for undesired acceleration estimation. The section division was made so that different gains could be used for the rate and acceleration estimates. The gains are further divided according to primary or vernier jet modes.
The measurement incorporation equation (Part 1 Filter) is of the form
\begin{equation} \underline{\hat{x}} = \underline{\hat{x}}' + \underline{K} (\tilde{\theta} - \hat{\theta}' ) \end{equation}where
The state \(\underline{x}\) includes angle, rate, and acceleration.
Angular motions are assumed to be uncoupled, so a separate Eq.(1) is applied for each axis.
The extrapolation equation (Part 2 Filter) is of the form
\[ \underline{\hat{x}}_N = \phi (\underline{\hat{x}}_{N-1} + \underline{w}) \]
where \(\phi\) is the transition matrix
\[ \phi = \begin{bmatrix} 1 & T & T^2/2\\ 0 & 1 & T\\ 0 & 0 & 1\end{bmatrix} \; (T = 0.08) \]
and \(\underline{w}\) is the Jet Selection feed-forward rate change projection \[ \underline{w} = \begin{pmatrix} 0\\\Delta\omega_{\text{RCS}} \\ 0 \end{pmatrix} \]
- Logical Structure
Part 1 of the estimator is executed on alternate SDAP cycles. Let \(\theta\), \(\omega\) and \(\alpha\) denote the attitude, angular rate, and angular acceleration for a given axis. The State Estimator, Part 1, is then defined by the following equations:
Acceleration Filter (a)
Rate Filter (r)
where \(T = 0.08\) (SDAP cycle time), \(\tilde{\theta}\) is the measured angle (an accumulation of attitude increments), and the prime denotes extrapolated estimates from the Part 2 filter. The constant filter gains \(K_{ij}\) are listed in Table 17 of the I/0 subsection. Each \(K_{ij}\) has two associated values, one for primary and one for vernier jets, thus 10 gain values are defined.
The Part 2 extrapolation equations are as follows:
Acceleration Filter (a)
Rate Filter (r)
Note that the undesired acceleration estimate, \(\alpha(a)\), is used in both the rate and acceleration extrapolation equations.
The rate and acceleration sections of the State Estimator module are executed in parallel. The measurement incorporation equations (Part 1 Filter) are executed at the beginning of the SDAP when a new set of attitude increments is supplied, and the extrapolation (Part 2 Filter) is carried out at the end of the SDAP when \(\Delta\omega_{RCS}\) (delta omega RCS from Jet Selection) is available.
- Interface Summary
The State Estimator module receives angle increment data from the attitude processor, expected rate changes from the Jet Selection module, and a primary or vernier jet indicator from the user. Its outputs are a three-axis rotational state estimate which goes to the State Error and Auto Maneuver modules and an undesired acceleration estimate used by the Phase Plane module.
- Input List
Table 17 outlines the State Estimator module inputs.
Table 16: State Estimator module inputs Constants* Name Value \(K_{\theta a}\) (primary) 1.0 \(K_{\theta a}\) (vernier) 1.0 \(K_{\omega a}\) (primary) 0.013 \(K_{\omega a}\) (vernier) 0.013 \(K_{\alpha a}\) (primary) 0.000064 \(K_{\alpha a}\) (vernier) 0.000064 \(K_{\theta r}\) (primary) 0.18 \(K_{\theta r}\) (vernier) 0.064 \(K_{\omega r}\) (primary) 0.013 \(K_{\omega r}\) (vernier) 0.0016 Moding Discretes Name Source Qualities PRIMARY VERNIER SW User Input Boolean Variables Name Source Qualities ATTITUDE INCREMENT Attitude Processor 3 vector DELTA OMEGA RCS Jet Selection 3 vector *Gains are dimensionless; division by \(T^n\) maintains equation dimension.
- Output List
The State Estimator module outputs are shown in Table 18.
Table 17: State Estimator module outputs. Name Destination Qualities ATTITUDE ESTIMATE Auto Maneuver State Error 3 vector RATE ESTIMATE Auto Maneuver State Error 3 vector UNDESIRED ACCELERATION Phase Plane 3 vector ESTIMATE
- Purpose
- State Error Module.
- Purpose
This module performs the simple but essential function of comparing the estimated and desired state vectors. It passes the difference or 'state error' along to the Phase Plane logic for consideration and decision about possible control action.
- Functional Description
The module performs the calculation
\[ \delta \underline{x} = \hat{\underline{x}} - \underline{x}_d \]
where
Estimated attitude and rate are obtained from the State Estimator module. The desired rate equals the MANEUVER RATE when the SDAP is in the discrete rate mode and the RHC is deflected, or it equals the eigen axis projection of MANEUVER RATE when the SDAP is in the auto maneuver mode and maneuvering. Otherwise the desired rate is zero. [Req.s3.6.2.p45.1]
While maneuvering in the automatic maneuver mode, and while in the manual closed-loop mode with RHC deflected, desired attitude equals a snapshot of the attitude estimate at the beginning of the maneuver plus an accumulation of angular increments each equal to 0.08 times DESIRED RATE [Req.s3.6.2.p45.2].
When the momentary INITIALIZE STATE ERROR flag is ON, DESIRED ATTITUDE is set equal to the current attitude estimate. The flag is set in the Manual Maneuver module when a change of RHC state occurs [Req.s3.6.2.p46.1].
- Logical Structure
The State Error module logical structure is shown in Figure 12.
Figure 12: State Error module logical structure.
DO FOR EACH OF THREE BODY AXES: IF INITIALIZE STATE ERROR = ON, THEN DESIRED ATTITUDE = ATTITUDE EST INITIALIZE STATE ERROR = OFF DESIRED ATTITUDE = DESIRED ATTITUDE +0.08 $\cdot$ DESIRED RATE ATTITUDE ERROR = ATTITUDE EST- DESIRED ATTITUDE RATE ERROR = RATE EST- DESIRED RATE
- Interface Summary
The State Error module receives inputs from the steering modules Auto Maneuver and Manual Maneuver, namely desired attitude and rate, and the initialization flag. It receives attitude information from the State Estimator.
Output of errors in the vehicle state goes solely to the Phase Plane module.
- Input List
Table 19 shows the State Error module inputs.
Table 18: State Error module inputs. Moding Discrete Name Source Qualities INITIALIZE Manual Maneuver Executive 3 vector of Booleans STATE ERROR Variables Name Source Qualities ATTITUDE ESTIMATE State Estimator 3 vector DESIRED ATTITUDE Auto Maneuver 3 vector DESIRED RATE Manual Maneuver, Auto Maneuver 3 vector RATE ESTIMATE State Estimator 3 vector - Output List
Table 20 shows the State Error module outputs.
Table 19: State Error module outputs. Name Destination Qualities ATTITUDE ERROR Phase Plane 3 vector RATE ERROR Phase Plane 3 vector
- Purpose
- Phase Plane Module
- Purpose
The Phase Plane module determines, on a per-axis basis, whether a rotation acceleration command should be issued to the Jet Selection module. Attitude and angular rate errors are compared against a set of mathematical regions defined in a plane formed by attitude and rate error axes for each rotation control axis not in an open-loop mode. A determination is made of whether a command is needed and of what polarity based on current Phase Plane region status. In the vernier jet control mode, preference for rotation coupling in an uncommanded axis may be generated based on a function of Phase Plane state.
- Functional Description
The Phase Plane module generates rotational acceleration commands on a per-body-axis basis whenever the crew has selected closed-loop attitude control (including manual discrete rate). The Phase Plane is divided into nine regions defined by numbered boundaries. At any time, for each axis, the rigid vehicle state is defined by an attitude and rate error point that must lie in one of the defined regions since the regions cover the entire plane [Req.s3.7.2.p48.1]. The decision concerning whether to send a rotation command is made on the basis of logic unique to each defined region. Figure 13 shows the numbered and defined regions and the numbered boundaries. Note the symmetry about the \(\omega_e = 0\) axis.
Figure 13: Phase Plane switch lines and regions.
Detailed definitions of the switching lines are given in Table 21 in terms of the state errors and other input variables such as rate limit and deadband. Switch lines 1, 2, 6, 7, 8, 12, are of the general form
\[ \theta_{switch} = K \omega_e^2 + constant \]
Lines 3, 4, 5 and 9, 10, 11 are of the form \(\omega_{switch} = constant\), and line 13 is of the form \[ \omega_{switch} = K | f(\theta_e)|^{1/2} + constant \]
Switch line S13 is the most complicated line; it affects the boundaries of regions 4, 8, and 9. The sign of \(\alpha_d\), the undesired acceleration estimate, affects its definition. The objective of using S13 to define part of the hysteretic region is to reduce jet duty cycles by extending jet firings in the hysteresis zone long enough to overcome some of the anticipated effects of undesired accelerations when the vehicle is allowed to coast.
Another feature of the Phase Plane is that whenever the state is within the coast or hysteretic regions, the we state value is also used to bias the vernier jet commands by use of off-axis preferences which are incorporated into the ROTATION COMMAND output to take into account corrections that will naturally occur due to \(\alpha_d\). Any fractional command values reflect the influence of the off-axis preferences.
- Switch-line equations.
Define:
- \(\alpha_C\) = Phase Plane control acceleration in the axis of interest
- \(\alpha_d\) = State Estimator generated undesired (disturbance) acceleration
- \(RL\) = angular rate limit
- \(DB\) = attitude deadband
- \(\omega_{min}\) = minimum rotation rate change in the axis of interest
- \(C = 1.25\) if ABS (rotation command last cycle) ≠ 1 \(= 1.0\) if ABS (rotation command last cycle) = 1
- \(\alpha'_C = \alpha_C - SIGN(\omega_e)\alpha_d\)
- \(\omega_e\) = rate error
- \(\theta_e\) = attitude error
Equations
- \(S1(\omega_e) = - \frac{\omega_e^2}{2 \alpha'_C} + DB\)
- \(S2(\omega_E) = - \frac{C \omega_E^2}{2 \alpha'_C} - 1.2 DB\)
- \(S3 = RL\)
- \(S4 = 0.8 RL\) if verniers in use (ignored if primaries in use)
- \(S5 = 0.6 RL\) if vernier in use \(= RL - 2\omega_{min}\) if primaries in use
- \(S6(\omega_e) = - \frac{\omega_e^2}{2\alpha'_C} - DB\)
- \(S7(\omega_e) = \frac{\omega_e^2}{2\alpha'_C} - DB\)
- \(S8(\omega_e) = \frac{C\omega_e^2}{2\alpha'_C} + 1.2 DB\)
- \(S9 = -RL\)
- \(S10 = -0.8 RL\) if verniers in use (ignored if primaries in use)
- \(S11 = -0.6 RL\) if verniers in use \(= -RL + 2\omega_{min}\) if primaries in use
- \(S12(\omega_e) = \frac{\omega_e^2}{2\alpha'_C} + DB\)
- \(S13(\theta_e) = 0\) if \(SIGN (\alpha_d) \theta_e < -0.5 DB \text{ or}\\= - SIGN (\alpha_d) \left(\sqrt{(SIGN(\alpha_d)\theta_e + 0.5 DB)(2 ABS(\alpha_d))} - \omega_{min}\right)\) if \(-0.5 DB \leq SIGN(\alpha_d)\theta_e\) With the constraints: if \(S13 \alpha_d > 0\) then \(S13 = 0\), and if \(|S13| > RL - \omega_{min}\) then \(S13 = SIGN(\alpha_d)(-RL + \omega_{min})\)
Crossing a switch line usually requires redetermination of jet command status. The command status is decided by determining the current state region shown in Table 22 and the required action shown in Table 23 [Req.s3.7.2.p53.1].
The numbered control regions are defined by the boundaries listed in Table 22. Control actions, specified in Table 23, are described as follows.
Regions 1 and 5 always command jets [Req.s3.7.2.p53.2]. For primary jet use, regions 2, 3, 6, and 7 always permit coast with no jet commands [Req.s3.7.2.p53.3]. Region 9 never causes commands to be generated, but a preference for vernier jet selection is computed [Req.s3.7.2.p53.4]. Regions 4 and 8 have hysteresis. If the phase is in either region 4 or 8 and a firing is taking place (because, for example, regions 4 or 8 have been entered from regions 1 or 5), then the firing will continue until the phase point crosses the S13 switch curve. At that point, the ROTATION COMMAND magnitude will become less than one and stop the firing [Req.s3.7.2.p53.5].
When inside region 4 or 8, after S13 has been crossed once, the ROTATION COMMAND magnitude will be less than unity since \(|S13| \leq |RL|\). In fact, it will be less than 0.8 because of the 0.8 multiplication factor. When no ROTATION COMMANDS are issued, vernier jet preferences usually are computed [Req.s3.7.2.p53.6].
Table 24 shows the general I/O relationship between symbols used in the switch curve definitions and the SDAP-defined quantities for the Phase Plane module.
Table 20: Phase Plane region boundaries. Region Boundaries 1 θe > S1 and ωe ≥ 0, or θe > S8 and ωe > S11, or ωe > S3 2 θe < S2 and S4 ≤ ωe ≤ S3 3 θe < S2 and S5 = ωe ≤ S4 4 if αd ≥ 0, S6 ≤ θe ≤ S1 and 0 ≤ ωe ≤ S3, or θe ≤ S8 and S13 ≤ ωe < 0. If αd < 0, S6 ≤ θe ≤ S1 ans S13 < ωe ≤ S3 5 θe < S7 and ωe ≤ 0, or θe < S2 and ωe < S5, or ωe < S9 6 θe > S8 and S10 ≥ ωe ≥ S9 7 θe > S8 and S11 ≥ ωe > S10 8 if αd < 0, S12 ≥ θe ≥ S7 and 0 ≥ ωe ≥ S9, or θe ≥ S2 and S13 ≥ ωe > 0. If αd ≥ 0, S12 ≥ θe ≥ S7 and S13 > ωe ≥ S9 9 S2 ≤ θe < S6 and S13 < ωe ≤ S3 or S8 ≥ θe > S12 and 13 > ωe ≥ S9 Table 21: Phase Plane region actions. Region Action 1 Rotation \(command_n = -1\) 2 If primaries selected, then rotation \(command_n = 0\). Else if past rotation \(command_n = -1\), then do not change it. Else \(rotation command_n = 3.2-4 (\frac{\omega_e}{RL})\) 3 If primaries selated, then rotation \(command_n = 0\). Else if past rotation \(command_n = 1\), then do not change it. Else \(rotation command_n = 3.2-4 (\frac{\omega_e}{RL})\) 4 If past rotation commandn = -1, then do not change it. Else if \(Force Fire_n = ON\), then \(Rotation Command_n = -1\). Else \(Rotation Command_n = 0.8\left(\frac{S13(\theta_e)- \omega_e}{RL-S13(\theta_e)}\right)\) 5 \(Rotation command_n = +1\) 6 If primaries selected, then \(rotation command_n = 0\). Else if past \(rotation command_n = 1\), then do not change it. Else \(rotation command_n = -3.2-4(\frac{\omega_e}{RL})\) 7 If primaries selected, then \(rotation command_n = 0\). Else if past \(rotation command_n = -1\), then do not change it. Else \(rotation command_n = -3.2-4(\frac{\omega_e}{RL})\) 8 If past \(rotation command_n = 1\), then do not change it. Else if \(Force Fire_n = ON\), then \(Rotation Command_n = 1\). Else \(Rotation Command_n = 0.8\left(\frac{S13(\theta_e)- \omega_e}{RL+S13(\theta_e)}\right)\) 9 \(Rotation Command_n = 0.8 \left( \frac{S13(\theta_e) - \omega_e}{RL - SIGN(\omega_e)S13(\theta_e)} \right)\) Table 22: I/0 named quantity and symbol. Variable Name* Symbol RATE ERRORn ωe ATTITUDE ERRORn θe UNDESIRED ACCEL ESTn αd MIN DELTA OMEGAn ωmin PHASE PLANE ACCELn αC DEADBAND DB RATE LIMIT RL *n is the axis index ( 1 = roll, 2 = pitch, 3=yaw).
There are four inputs other than the SDAP internal variables ATTITUDE ERROR, RATE ERROR, and UNDESIRED ACCELERATION EST plus the SDAP parameters DEADBAND and RATE LIMIT. Moding switch PRIMARY VERNIER SW selects appropriate constants, the BYPASS flag effectively eliminates the Phase Plane from the SDAP by ignoring its output in favor of the RHC-commanded rotation from the Manual (open-loop) Maneuver module [Req.s3.7.2.p56.1]. The FORCE FIRE flag initiates a firing if a command was not being set by Phase Plane when the RHC changed state in the closed-loop Manual Maneuver module [Req.s3.7.2.p56.2. The ROTATION COMMAND from the past cycle is input to be used in the region logic [Req.s3.7.2.p56.3].
- Switch-line equations.
- Logical Structure
Figures 14, 15, and 16 specify the logical structure of the Phase Plane in terms of pseudocode.
Figure 14 assigns values to ROTATION COMMAND on a per axis basis, when BYPASSn = OFF, after it executes the logic in Figures 15 and 16. Figure 15 evaluates the switch curve values for the current vehicle state. Figure 16 determines the region for the current state based on the switch curve results.
- Interface Summary
The Phase Plane module receives inputs from the Executive module, from the user, from the State Error module, from the Manual Maneuver module, and from the State Estimator.
The output from the Phase Plane module goes to the Jet Selection module.
- Input List
Table 25 lists the Phase Plane module inputs.
- Output List
Table 26 outlines the phase plane module outputs.
Figure 14: Phase Plane logic construction.
DO FOR n = 1 TO 3 IF BYPASS_n = OFF THEN DO ASSIGN SWITCH CURVE VALUES (Figure 15) ASSIGN REGION INDEX (Figure 16) IF REGION INDEX = 1 THEN ROTATION COMMAND_n = -1 IF REGION INDEX = 5 THEN ROTATION COMMAND_n = 1 IF REGION INDEX = (2 OR 3 OR 6 OR 7) THEN DO IF PRIMARY VERNIER SW = ON THEN ROTATION COMMAND_n = 0 ELSE DO IF (REGION INDEX = 2 AND ROTATION COMMAND_n \neq -1) OR (REGION INDEX = 3 AND ROTATION COMMAND_n \neq 1) THEN ROTATION COMMAND_n = 3.2 - 4 (\omega_e/RL) IF (REGION INDEX = 6 AND ROTATION COMMAND_n \neq -1) OR (REGION INDEX= 7 AND ROTATION COMMAND_n \neq -1) THEN ROTATION COMMAND_n = -3.2 - 4 (\omega_e/RL) IF REGION INDEX = 4 AND ROTATION COMMAND_n \neq -1 THEN DO IF FORCE FIRE_n = ON THEN ROTATION COMMAND_n = -1 ELSE ROTATION COMMAND_n = 0.8 (S13- \omega_e)/(RL- S13) IF REGION INDEX = 8 AND ROTATION COMMAND_n \neq 1 THEN DO IF FORCE FIRE_n = ON THEN ROTATION COMMAND_n = 1 ELSE ROTATION COMMAND_n = 0.8 (S13- \omega_e)/(RL + S13) IF REGION INDEX = 9 THEN ROTATION COMMAND_n = 0.8 (S13 - \omega_e) (RL - SIGN(\omega_e) S13) FORCE FIRE_n = OFF
INPUT LIST FOR INTERNAL PHASE PLANE VARIABLES
Variable Source Qualities REGION INDEX Region Index Evaluation Integer Figure 15: Switch curve evaluation.
\alpha'_C = \alpha_c - SIGN (\omega_e) \alpha_d S1 = DB - \omega_e^2/2\alpha'_C S7 = -S1 IF |ROTATION COMMAND_n| = 1 THEN C = 1 ELSE C = 1.25 SB = C\omega_e^2/2\alpha'_C + 1.2 DB S2 = -S8 S3 = RL S9 = -RL S4 = 0.8 RL S10 = -S4 IF PRIMARY VERNIER SW = OFF THEN S5 = 0.6 RL ELSE S5 = RL - 2\omega_{min} S11 = -S5 S12 = \omega_e^2/2\alpha'_C + DB S6 = -S12 K = SIGN (\alpha_d) \theta_e IF K < -0.5 DB THEN S13 = 0 ELSE S13 = -SIGN (\alpha_d)(SQRT ((K + 0.5 DB) (2|\alpha_d|)) - \omega_{min}) IF S13\alpha_d > 0 THEN S13 = 0 IF |S13| > RL - \omega_{min} THEN S13 = SIGN (\alpha_d) (\omega_{min} - RL)
OUTPUT LIST FOR INTERNAL PHASE PLANE VARIABLES
Variable Destination Qualities S1, S2, … , S13 Region Index Evaluation Scalar (each) Figure 16: Region index evaluation.
(\theta_e > S1 AND \omega_e \geq 0) OR (\theta_e > S8 AND \omega_e> S11) OR \omega_e> S3 THEN REGION INDEX = 1 (\theta_e < S7 AND \omega_e\leq 0) OR (\theta_e < S2 AND \omega_e< S5) OR \omega_e< S9 THEN REGION INDEX = 5 \theta_e < S2 THEN DO IF S4 \leq\omega_e \leq S3 THEN REGION INDEX = 2 IF S5 \leq\omega_e < S4 THEN REGION INDEX = 3 \theta_e > S8 THEN DO IF S10 \geq \omega_e \geq S9 THEN REGION INDEX = 6 IF S11 \geq \omega_e > S10 THEN REGION INDEX = 7 \alpha_d \geq 0 THEN DO IF (S6 \leq \theta_e \leq S1 AND O\leq \omega_e\leq S3) OR (S13 \leq\omega_e< 0 AND \theta_e \leq S8) THEN REGION INDEX = 4 IF S12 \geq \theta_e \geq S7 AND S13 >\omega_e \geq S9 THEN REGION INDEX = 8 ELSE DO IF S6 \leq \theta_e \leq S1 AND S13 <\omega_e \leq S3 THEN REGION INDEX = 4 IF (S12 \geq \theta_e \geq S7 AND O \geq \omega_e \geq S9) OR (S13 \geq \omega_e > 0 AND \theta_e \geq S2) THEN REGION INDEX = 8 {S2 \leq \theta_e < S6 AND S13 <\omega_e \geq S3) OR (S8 \geq \theta_e > S12 AND S13 >\omega_e \geq S9) THEN REGION INDEX = 9
INPUT LIST FOR INTERNAL PHASE PLANE VARIABLES
Source Variable Qualities S1, S2, … , S13 Switch Curve Evaluation Scalar (each) OUTPUT LIST FOR INTERNAL PHASE PLANE VARIABLES
Variable Destination Qualities REGION INDEX Phase Plane Logic Integer #+endsrc
Constants
Name Units Values Primary Vernier SW = ON Primary Vernier SW = OFF MIN DELTA OMEGA roll deg/s 0.064 0.00152 pitch 0.072 0.00104 yaw 0.048 0.00112 PHASE PLANE roll deg/s2 0.64 0.0152 ACCEL pitch 0.72 0.0104 yaw 0.48 0.0112 Moding Discretes
Name Source Qualities BYPASS Executive, Manual Maneuver 3 vector of Booleans FORCE FIRE Manual Maneuver 3 vector of Booleans PRIMARY VERNIER SW User Input Boolean Parameters
Name Source Qualities DEADBAND User Input Scalar RATE LIMIT User Input Scalar Variables (All SDAP Internal)
Variable Source Qualities ATTITUDE ERROR State Error 3 vector RATE ERROR State Error 3 vector ROTATION COMMAND Phase Plane (last pass) 3 vector UNDESIRED ACCEL EST State Estimator 3 vector Table 23: Phase Plane module outputs. Variable Destination Qualities ROTATION COMMAND Jet Selection Phase Plane 3 vector
- Purpose
- Jet Selection.
- Purpose
The Jet Selection module logic processes commands from the Phase Plane and/or RHC (Manual Maneuver module) in combination with options on modes of jet use to derive specific RCS thruster commands. Estimates of expected angular rate changes during the next SDAP cycle are computed for use by the State Estimator. An open-loop off-axis rotation-rate compensation logic is also available in the algorithm.
- Functional Description
The Jet Selection logic (Figure 17) commands either primary jets, producing about 870 pounds of force each, or vernier jets, producing about 24 pounds of force each. The two types of thrusters may not be used simultaneously [Req.s3.8.2.p63.1]. Moding between primary and vernier jets is accomplished by choosing a value for the discrete PRIMARY VERNIER SW (a simulation input) [Req.s3.8.2.p63.2].
Figure 17: Jet Selection logic construction.
IF PRIMARY VERNIER SW = ON THEN DO PERFORM PRIMARY JET LOGIC (Figure 18) VERNIER JET COMMAND = OFF ELSE DO PERFORM VERNIER JET LOGIC (Figure 20) PRIMARY JET COMMAND = OFF PERFORM OPEN LOOP ROTATION COMPENSATION (Figure 22) INIT JET SELECTION = OFF
When using primary jets, there are options to select jets for pitch and yaw control in near couples, using forward and aft thrusters simultaneously, or to select forward only or aft only thrusters to reduce the total torque applied when thrusting. Also, an option exists to preclude using jets that fire out of the top of the orbiter to prevent thruster-plume interaction with payloads that are in proximity, that are being manipulated on the arm, or that are in the payload bay. Details are discussed in Section 3.8.2.1.
When using vernier jets, an option exists to select different tables of expected angular acceleration as a function of orbiter/payload configuration. Details of vernier jet selection are discussed in Section 3.8.2.2.
In addition to producing thruster commands, the jet selection logic also generates estimates of expected next DAP cycle angular rate changes for use by the State Estimator, and has a rotation compensation algorithm which, if selected, permits open-loop correction of coupled rotation effects in uncommanded axes during manual orbiter control. The compensation algorithm is detailed in Section 3.8.2.3.
- Primary Jet Logic
The primary jet selection logic (Figure 18) specifies the desired ON/OFF status at 80-ms intervals of 11 rotation control thrusters (see Tables 32 and 33). This reduced configuration does not provide translation control or failure tolerance.
Figure 18: Primary jet logic.
DO FOR I = 1 TO 3 J = 2 I IF |ROTATION COMMAND_I| = 1 OR |COMPENSATION COMMAND_I| = 1 THEN BIT COMMAND_J = ON ELSE BIT COMMAND_J = OFF IF ROTATION COMMAND_I = -1 OR (ROTATION COMMAND_I \neq 1 AND COMPENSATION COMMAND_I = -1) THEN BIT COMMAND_{J-1} = ON ELSE BIT COMMAND_{J-1} = OFF HI PITCH = PITCH HI-LOW SW OR NO PLUS Z JETS NOSE PITCH = NOT (BIT COMMAND_2 OR HI PITCH OR PITCH TAIL-NOSE SW) TAIL PITCH = NOT (HI PITCH OR NOSE PITCH) SELECT PRIMARY JETS (Figure 19) DELTA OMEGA RCS = 0 DO FOR I = 1 TO 11 DELTA OMEGA RCS = DELTA OMEGA RCS + (PRIMARY JET COMMAND_I ROTATION RATE INCREMENT_I) DO FOR I = 1 TO 3 DELTA OMEGA RCS_I = DELTA OMEGA RCS_I DIAGONAL INERTIA RATIO_I
INPUT LIST FOR INTERNAL JET SELECTION VARIABLES
Variable Source Qualities COMPENSATION COMMAND Open Loop Rotation Compensation 3 Vector OUTPUT LIST FOR INTERNAL JET SELECTION VARIABLES
Variable Destination Qualities BIT COMMAND Primary Jet Selection 6 Vector of Booleans NOSE PITCH Primary Jet Selection Boolean TAIL PITCH Primary Jet Selection Boolean The principle of the selection algorithm is: jets that fire into the orbiter Z body axis provide pitch and/or roll control only; jets that fire into the orbiter Y body axis provide yaw control only. Any simultaneous combination of rotation commands is allowed. The following describes the primary jet selection logic.
- Bit Command Generation – The purpose of the bit commands is to convert the scalar rotation commands into a form that can be processed easily using boolean expressions to select jets. The commands in each axis are converted into two bits each, the first indicating command polarity (1=negative, 0=positive) and the second indicating command state (1 = commanded, 0 = uncommanded). Compensation commands are considered as well as Phase Plane or manual commands. Compensation commands are overridden by commands from outside the jet selection logic.
Rotation Options – The primary jet logic has options in the available control authority for pitch and yaw rotation. These include a nominal level where either near-couple combinations of forward and aft jets are used together or two low levels of forward-only or aft-only thrusters are used. The options are selectable separately in each axis. No such options are included for roll since only the aft thrusters have sufficient moment arms to assure roll control.
Two discretes per axis control the option selection. The PITCH or YAW HI-LOW SW controls the selection of couples. HI means couples, LOW means forward or aft only. The PITCH or YAW TAIL-NOSE SW controls the nose/tail option selection if the low noncouple status is also true. The purpose of the nose/tail options is to permit fuel usage balancing between the forward and aft RCS tanks as well as to reduce limit-cycle jet activity with smaller control torques. The options may have to be overridden in the pitch axis to assure that +Z jets are not used (an option discussed below) or to assure roll control when combined with pitch.
- No +Z Jet Option – Proximity operations with the shuttle orbiter and any payload easily prone to damage or attitude disturbance from RCS plume effects may necessitate inhibiting use of jets that fire out of the top of the orbiter (producing a +Z thrust direction). This option is selected by the discrete NO PLUS Z JETS which affects the selection of jets for roll and/or pitch control. The discrete also influences the effect of the pitch control options since for ward/aft selections may not be possible without up-firing jets.
- Primary Jet Commands – The primary jet commands are set in Figure 19 by processing the outputs of Figure 18 in Boolean algebraic expressions and setting the PRIMARY JET COMMAND for each jet. The command is ON for a jet to fire and OFF for a jet to be idle. The jets for roll and pitch are selected from the seven z-axis jets and for yaw from the four Y-axis jets.
- Rotation Rate Increment Computation – The primary jet rotation-rate increment logic (Figure 18) computes estimated next SDAP cycle-rate changes due to jet activity for use by the open-loop rotation compensation and the State Estimator. The calculation adds a vector of expected rate change from each jet commanded ON for the next cycle. A correction for mass property changes is included which scales each rate-change component inversely with changes in the diagonal elements of the orbiter inertia matrix. (In the flight code, scale factors can be updated occasionally by crew input.) The accuracy of the correction depends partly on the relative magnitude of diagonal and off-diagonal inertia matrix components.
Figure 19: Primary jet selection.
C1 = NOT TAIL PITCH PRIMARY JET COMMAND_1 = BIT COMMAND_3 AND BIT COMMAND_4 AND C1 AND NOT NO PLUS Z JETS PRIMARY JET COMMAND_2 = NOT BIT COMMAND_3 AND BIT COMMAND_4 AND C1 PRIMARY JET COMMAND_3 = PRIMARY JET COMMAND_2 C1 = NOT BIT COMMAND_3 OR NOT BIT COMMAND_4 C2 = NOT BIT COMMAND_2 AND NOT BIT COMMAND_3 AND BIT COMMAND_4 C3 = NOT NOSE PITCH AND NOT NO PLUS Z JETS PRIMARY JET COMMAND_4 = ((BIT COMMAND_1 AND BIT COMMAND_2 AND C1) OR C2) AND C3 PRIMARY JET COMMAND_5 = ((NOT BIT COMMAND_1 AND BIT COMMAND_2 AND C1) OR C2) AND C3 C1 = NO PLUS Z JETS OR BIT COMMAND_3 OR NOT BIT COMMAND_4 C2 = NOT BIT COMMAND_2 AND BIT COMMAND_3 AND BIT COMMAND_4 PRIMARY JET COMMAND_6 = ((NOT BIT COMMAND_1 AND BIT COMMAND_2 AND C1) OR C2) AND NOT NOSE PITCH PRIMARY JET COMMAND_7 = ((BIT COMMAND_1 AND BIT COMMAND_2 AND C1) OR C2) AND NOT NOSE PITCH C1 = (YAW HI-LOW SW OR NOT YAW TAIL-NOSE SW) AND BIT COMMAND_6 PRIMARY JET COMMAND_8 = NOT BIT COMMAND_5 AND C1 PRIMARY JET COMMAND_9 = BIT COMMAND_5 AND C1 C1 = (YAW HI-LOW SW OR YAW TAIL-NOSE SW) AND BIT COMMAND_6 PRIMARY JET COMMAND_10 = BIT COMMAND_5 AND C1 PRIMARY JET COMMAND 11 = NOT BIT COMMAND_5 AND C1
INPUT LIST FOR INTERNAL JET SELECTION VARIABLES
Variable Source Qualities BIT COMMAND Primary Jet Logic 6 Vector of Booleans NOSE PITCH Primary Jet Logic Boolean TAIL PITCH Primary Jet Logic Boolean Figure 20: Vernier jet logic.
IF INIT JET SELECTION = ON THEN DELTA OMEGA RCS = 0 DO FOR I = 1 TO 3 IF |ROTATION COMMAND_I| = 1 THEN VECTOR COMMAND_I = ROTATION COMMAND_I ELSE DO IF |COMPENSATION COMMAND_I| = 1 THEN VECTOR COMMAND_I = COMPENSATION COMMAND_I ELSE VECTOR COMMAND_I = ROTATION COMMAND_I SELECT VERNIER JETS (Figure 21) IF OLD VERNIER JET COMMAND \neq VERNIER JET COMMAND THEN DO DELTA OMEGA RCS = 0 DO FOR I = 1 TO 6 J = I + (6 PAYLOAD EXTENDED)+ 11 DELTA OMEGA RCS = DELTA OMEGA RCS + (VERNIER JET COMMAND_I ROTATION RATE INCREMENT_J) IF PAYLOAD EXTENDED = 0 THEN DO FOR I = 1 TO 3 DELTA OMEGA RCS_I = DELTA OMEGA RCS_I DIAGONAL INERTIA RATIO_I OLD VERNIER JET COMMAND = VERNIER JET COMMAND
INPUT LIST FOR INTERNAL JET SELECTION VARIABLES
Variable Source Qualities COMPENSATION COMMAND Open Loop Rotation Compensation 3 Vector OLD VERNIER JET COMMAND Vernier Jet Selection 3 Vector OUTPUT LIST FOR INTERNAL JET SELECTION VARIABLES
Variable Destination Qualities VECTOR COMMAND Vernier Jet Selection 3 Vector - Vernier jet logic.
The vernier jet selection logic (Figures 20 and 21) specifies the desired ON/OFF status at 80 ms intervals of 6 thrusters which point in 6 different directions. Only rotation control is possible with this jet configuration, and failure tolerance exists for only two of the thrusters, which fire into the Y axis.
Figure 21: Vernier jet selection.
IF INIT JET SELECTION = ON THEN DO OLD VERNIER JET COMMAND = OFF OLD VECTOR COMMAND = 0 K = 0 SELECT JETS = OFF DO FOR I = 1 TO 3 IF |VECTOR COMMAND_I| = 1 THEN SELECT JETS = ON IF SELECT JETS = OFF THEN VERNIER JET COMMAND = OFF ELSE DO IF K = 5 OR OLD VECTOR COMMAND \neq TRUNCATE (VECTOR COMMAND) THEN DO K = 0 (Written note: VERNIER JET COMMAND = OFF) MAX PRODUCT 1 = 0, MAX PRODUCT 2 = 0, MAX PRODUCT 3 = 0 JET 2 = 0 JET 3 = 0 L = 11 + (6 PAYLOAD EXTENDED) DO FOR I = 1 TO 6 J = I+ L C = VECTOR COMMAND \cdot ROTATION RATE INCREMENT_J IF C > MAX PRODUCT 1 THEN DO MAX PRODUCT 1 = C JET 1 = I VERNIER JET COMMAND_{JET1} = ON DO FOR I = 1 TO 6 J = I + L IF I \neq JET 1 THEN DO C = VECTOR COMMAND \cdot ROTATION RATE INCREMENT_J IF C > (0.5 \cdot MAX PRODUCT 1) AND C > MAX PRODUCT 2 THEN DO JET 2 = I MAX PRODUCT 2 = C IF JET 2 \neq 0 THEN VERNIER JET COMMAND_{JET2} = ON IF JET 2 \neq 0 THEN DO FOR I = 1 TO 6 J = I + L IF I \neq JET 1 AND I \neq JET 2 THEN DO C = VECTOR COMMAND \cdot ROTATION RATE INCREMENT_J IF C > (0.4 \cdot MAX PRODUCT 1) AND C > MAX PRODUCT 3 THEN DO JET 3 = I MAX PRODUCT 3 = C IF JET 3 \neq 0 THEN VERNIER JET COMMAND_{JET3} = ON K = K + 1 OLD VECTOR COMMAND = TRUNCATE (VECTOR COMMAND)
INPUT LIST FOR INTERNAL JET SELECTION VARIABLES
Variable Source Qualities VECTOR COMMAND Vernier Jet Logic 3 Vector OUTPUT LIST FOR INTERNAL JET SELECTION VARIABLES
Variable Destination Qualities OLD VERNIER JET COMMAND Vernier Jet Logic 3 Vector The principle of the selection algorithm is to take the dot product of each jet rotational velocity increment vector with a vector from the rotation commands and then select the jets with the biggest dot product values. The command vector must include at least one axis with a manual, Phase Plane, or compensation command (as distinguished from a Phase Plane preference value; refer to the following paragraph) to select any thrusters.
Features which exist to reduce jet duty cycles include repeating previously selected jet combinations for several cycles and varying the rotation-increment vector set used for the dot products when payload manipulation greatly alters orbiter/payload mass properties. The following describes the vernier jet selection logic.
Command Vector Construction – A vector is developed from rotation commands to permit taking a dot product with jet-rate-increment vectors for thruster selection.
Phase Plane and/or manual commands generate values of ± 1. Open-loop compensation commands generate ± 1 values which can be overridden by Phase Plane or manual commands. Values between ± 1 can be generated in the Phase Plane when logic assigns preferences to axes without commands.
- Vernier Rotation Rate Increment Computation – The vernier jet rotation rate increment (Figure 20) logic computes estimated next SDAP cycle-rate changes due to jet activity for use by the open-loop rotation compensation and the state estimator. The calculation adds a vector of expected rate change from each commanded jet for the next SDAP cycle. For each vernier thruster, two rate-change vectors can be used depending on the payload operation status defined by the variable PAYLOAD EXTENDED. If the variable equals zero, nominal rate-change values are used. If it is unity, rate changes are used for payload/orbiter combination inertias expected during payload operations. A correction for mass property changes is used when PAYLOAD EXTENDED equals zero, which scales each rate-change component inversely with changes in the diagonal elements of the orbiter inertia matrix. Since the accuracy of the correction depends on the relative magnitude of the diagonal and off-diagonal inertia matrix components, and since payload manipulation is likely to increase off-diagonal elements more than diagonal elements, no scaling correction is used when PAYLOAD EXTENDED = 1.
Vernier Jet Selection – Vernier jet selection determines if any jets should be selected, and if so, whether one, two, or three jets are required; and whether the same jets selected during the last minor cycle should be used again to minimize duty cycles.
The selection of jets is done only if at least one rotation axis has an explicit fire command from the Phase Plane, a manual mode, or the open-loop compensation logic. If this condition is satisfied and the truncated command vector changed since the last cycle, then dot products of the command vector and the rate change increment vectors for each thruster are computed. The jet with the maximum value is selected. If a second product exists with a value greater than 0.5 times that of the first jet selected, then that jet is also selected. If a second jet is selected and a third product exists with a value greater than 0.4 times the first product, then that jet is selected too.
The rate-change increments used to compute the dot products are selected from one of two sets based on the value of the quantity PAYLOAD EXTENDED.
If the truncated command vector is the same as the past cycle and the number of cycles since 73the jets were recomputed is less than or equal to 5, then the jets selected are the same as during the last cycle. If the number of consecutive cycles since reselection with the same truncated commands exceeds 5, then jets are reselected to allow accumulated off-axis preferences to influence the selection and the count begins again.
- Open-Loop Rotation Compensation
The rotation compensation logic (Figure 22) is designed to control the buildup of undesired off-axis rates during open-loop attitude control of the shuttle. Off-axis coupling occurs because of the inability of the thrusters to provide pure single-axis torques.
Setting the threshold for compensation response OFF-AXIS COMP THRESHOLD larger than the magnitude of the largest single rotation axis minimum impulse for the type of jets in use selects the logic. A smaller threshold value bypasses the compensation.
The compensation computation is done by adding the estimated next cycle rate-increment vector to an accumulator, which is initialized in all three axes when Jet Selection is initialized, and in each axis when a rotation command from outside the compensation logic occurs. If the accumulator in an axis exceeds the compensation threshold rate, then a command is issued in the opposite direction, which remains until the accumulator rate drops below half the largest single rotation axis minimum impulse or until a command is received in that axis from outside the compensation logic. Any previous cycle compensation command will be overridden by an external command.
Figure 22: Open-loop rotation compensation.
IF PRIMARY VERNIER SW = ON THEN LARGEST MIN IMPULSE = PRIMARY JET LARGEST ROTATION MINIMUM IMPULSE ELSE LARGEST MIN IMPULSE = VERNIER JET LARGEST ROTATION MINIMUM IMPULSE IF LARGEST MIN IMPULSE > OFF-AXIS COMP THRESHOLD THEN COMPENSATION COMMAND = 0 ELSE DO IF INIT JET SELECTION = ON THEN DO COMPENSATION COMMAND = 0 ROTATION ACCUMULATOR = 0 ROTATION ACCUMULATOR = ROTATION ACCUMULATOR + DELTA OMEGA RCS DO FOR I = 1 TO 3 IF |ROTATION COMMAND_I|1 = 1 THEN DO COMPENSATION COMMAND_I = 0 ROTATION ACCUMULATOR_I = 0 ELSE DO IF |ROTATION ACCUMULATOR_I| > OFF-AXIS COMP THRESHOLD THEN COMPENSATION COMMAND_I = -SIGN(ROTATION ACCUMULATOR_I) IF |ROTATION ACCUMULATOR_I| < LARGEST MIN IMPULSE/2 THEN COMPENSATION COMMAND_I = 0
OUTPUT LIST FOR INTERNAL JET SELECTION VARIABLES
Variable Destination Qualities COMPENSATION COMMAND Primary Jet Logic 3 Vector Vernier Jet Logic
- Primary Jet Logic
- Logical Structure
Figures 17 through 22 specify the logical structure for the Jet Selection logic in the form of pseudocode.
Figure 17 sequences the logic execution and determines whether primary or vernier jets are selected. Figure 18 sequences the primary Jet Selection assignment commands, calls the selection logic, and computes expected rate changes. Figure 19 selects primary jets in the Z axis and then the Y axis. Figure 20 puts the vernier Jet Selection assignment commands in sequence, calls the selection logic, and computes expected rate changes. Figure 21 selects up to three vernier jets based on a dot product scheme. Figure 22 computes open-loop compensation commands, if the logic is not inhibited, after jets have been selected to fire for the next cycle.
- Interface Summary
The Jet Selection module receives rotation commands from the Phase Plane module, and from the Manual Maneuver module in the open-loop mode. Several conditioning inputs are received from the user, including switch settings that restrict the logic to subsets of jets and adjustable constants for off-axis compensation and inertia-matrix adjustment. The outputs are simply jet ON commands which are sent to the vehicle dynamics model and an estimated rate change due to the commanded ON jet firings which is sent to the State Estimator module.
- Input List
Table 27 lists the Jet Selection module constant inputs.
Table 24: Jet Selection module constant inputs. Constants Name Value PRIMARY JET LARGEST ROTATION MINIMUM IMPULSE 0. 112 ROTATION RATE INCREMENT (Table 28) VERNIER JET LARGEST ROTATION MINIMUM IMPULSE 0.002 Table 28 shows the values of ROTATION RATE INCREMENT. Elements 1 through 11 are for primary jets and elements 12 through 17 are for vernier jets with PAYLOAD EXTENDED = O. Elements 18 through 23 are for vernier jets with PAYLOAD EXTENDED = 1. Values for jets numbered 18 through 23 are computed as follows \[ \overline{\Delta} = 0.08 I^{-1} \overline{\tau} \]
where
\(\overline{\Delta}\) = rotation rate increments for the jet of interest \(I\) = the angular inertia matrix for the composite payload/orbiter/deployment device system in a position requiring control \(\overline{\tau}\) = the torque vector for the jet of interest in body coordinates Table 29 lists the jet identification codes corresponding to these elements. The remaining Jet Selection module inputs are outlined in Table 30.
- Output List
The Jet Selection module outputs are listed in Table 31.
Table 25: Rotation rate increment values*. Element Value (deq/s) Roll Pitch Yaw 1 0 -0.03389 0 2 -0.01775 0.02513 -0.02364 3 0.01778 0.02514 0.02363 4 -0.03573 0.01901 -0.00293 5 0.03607 0.01904 0.00294 6 0.02849 -0.01281 -0.00458 7 -0.02876 -0.01284 0.00457 8 0.00547 -0.00037 0.03194 9 -0.00547 -0.00036 -0.03194 10 0.02112 0 -0.01763 11 -0.02113 0 0.01763 12 -0.0004152 0.0007067 -0.0006653 13 0.0004162 0.0007069 0.0006652 14 -0.0006727 -0.0000146 0.0005203 15 0.0006724 -0.0000138 -0.0005203 16 -0.0005994 -0.0003125 -0.0000201 17 0.0005942 -0.0003120 0.0000200 *Based on STS-5 data.
Table 26: Jet identification codes. Primary Vernier Element Jet ID Element Index Jet ID 1 F3U 12 1 F5R 2 F4D 13 2 FSL 3 F30 14 3 R5R 4 L1U 15 4 L5L 5 R1U 16 5 RSD 6 L3D 17 6 LSD 7 R3D 8 F3L 9 F4R 10 L1L 11 R3R Moding Discretes
Name Source Qualities INIT JET SELECTION Executive Boolean NO PLUS Z JETS User Input Boolean PAYLOAD EXTENDED User Input Integer PITCH HI-LOW SW User Input Boolean PITCH TAIL-NOSE SW User Input Boolean PRIMARY VERNIER SW User Input Boolean YAW HI-LOW SW User Input Boolean YAW TAIL-NOSE SW User Input Boolean Parameters
Name Source Qualities DIAGONAL INERTIA RATIO User Input 3 vector OFF-AXIS COMP THRESHOLD User Input scalar Variables
Name Source Qualities ROTATION COMMAND Phase Plane 3 vector Table 27: Jet Selection module outputs. Name Destination Qualities DELTA OMEGA RCS State Estimator 3 vector PRIMARY JET COMMAND Jet Model 11 vector of Booleans VERNIER JET COMMAND Jet Model 6 vector of Booleans
- Purpose
2.4 FCS Hardware Models
- IMU Model
- Introduction
The IMU model produces measurements of the vehicle attitude expressed as a set of gimbal angles. The attitude-measurement portion of the real IMU hardware consists of an inertially stabilized platform, gyros, and resolvers. However, for applications involving the SDAP, the IMU model can be simplified considerably. IMU noise and quantization effects are small (<0.01 degree) compared to typical SDAP deadbands and rate limits. Therefore, they are not included in the IMU model. The IMU model will be discussed separately for a rigid orbiter and for cases where orbiter flexibility is included in the attitude measurement. Section 4.1.4 discusses IMU information transport lag modeling.
- IMU Model for Rigid Orbiter
For applications involving the SDAP and a rigid orbiter, the IMU can be considered to be aligned with the vehicle body axes. The IMU model is therefore reduced to reading the perfect vehicle attitude matrix from the vehicle rotational dynamics model and transferring this matrix to the attitude processor with the appropriate time lags (see Section 4.1.4).
- IMU Model for Flexible Orbiter
When the effects of vehicle flexure are included in the simulation, the consequently induced bending rotation at the navigation base must be added to the rigid-body rotation sensed by the IMU. If \(\overline{ROTNB}\) is the modal rotation due to bending at the navigation base, then the orthonormal rotation matrix is constructed as follows
\[ R^B_I (flex + rigid°) = R^B_I(rigid) \cdot \begin{pmatrix}\overline{VEC1}\\\overline{VEC2}\\\overline{VEC3}\end{pmatrix} \]
where \[\begin{array}{l} \overline{VEC1} = UNIT(1,-ROTNB_Z, -ROTNB_Y)\\ \overline{VEC2} = UNIT((ROTNB_Y, -ROTNB_X, 1) \times \overline{VEC1})\\ \overline{VEC3} = \overline{VEC1} \times \overline{VEC2} \end{array}\]
The "UNIT" function creates a unit vector from the argument vector, and \(\times\) represents the vector cross product.
- IMU Transport Lag
A transport lag of 240 ms (232 ms is the current baseline, but 240 ms is sufficiently close) is recommended for elapsed time from an IMO read to the issuance of RCS jet commands based on that data.
Leeway exists in the actual times of SDAP execution. Only the following must be observed to.ensure realistic transport lags. The jet commands issued 240 ms after a given IMU read must be the output of an SDAP cycle which
included that IMU data in the estimates through execution of the "measurement incorporation" portion of the State Estimator. The delay can be obtained by presenting delayed data to the SDAP, delaying the SDAP output jet commands, or a combination of these delays. Figure 23 shows the relative timing of the IMU read and the implementation of the resulting jet commands, including RCS hardware on- and off-delays. The illustration assumes that IMU data read at "A" causes a minimum-impulse jet command to be issued at "A", 240 ms later.
Figure 23: Relative timing requirements for SDAP I/O.
- Introduction
- Effector (Jet) Model
RCS thrusters are the only effectors the SDAP uses. Of the 44 jets, 17 are sufficient for SDAP needs.
- RCS Jet System
The RCS jet system consists of 44 thrusters, or jets, used on-orbit for vehicle attitude and rotational rate control. There are 38 primary jets of approximately 870 pounds force, and 6 vernier jets of approximately 24 pounds force. All jets of each type have the same specific impulse, and their thrust vectors are a function of the nominal thrust magnitude, mounting cant angles, scarfed nozzle effects, nozzle extensions, and mounting orientations. Scarfing also moves the thrust vector application point down the nozzle centerline from the thrust mount attach point. Jet vacuum impingement effects on the orbiter reduce thrust and chanqe thrust direction for some jets.
The RCS model calculates the forces and moments on the vehicle due to individual jet firings and sums them to produce the total force and torque due to RCS jets. These values are included in the equations that calculate the rotational motion of the vehicle. The nominal force vectors for all jets, including the various effects listed above, appear in Table 32. Figure 24 is a schematic for identifying each thruster.
Table 33 shows the locations of each thruster in the vehicle body coordinate frame. The moment on the vehicle due to each jet is calculated as \[ \overline{JETTORQ_j} = (\overline{JETPOS_{VEH_j}} - \overline{CG_{VEH}} ) \times \overline{JETFORCE_j} \]
Table 28: RCS jet forces. Force (lbf ) Force (lbf) (With Impingement ) (With Impingement ) Jet X Y Z Jet X Y Z F1F -879.4 26.2 119.9 *L1U 0.1 76.3 872.2 F3F -879.5 0.0 122.7 L4D 210.6 318.4 -576.0 F2F -879.4 -26.2 119.9 L2D 210.6 318.4 -576.0 F1L -26.3 873.6 18.2 *L3D 210.6 318.4 -576.0 *F3L -21.0 870.3 0.5 R1A 856.8 0.0 151.1 F1U -32.3 11.7 874.4 R3A 856.8 0.0 151.1 *F3U -31.9 0.0 873.5 R4R 3.3 -868.8 4.8 F2U -32.3 -11.7 874.4 R2R 3.3 -868.8 4.8 F1D -28.0 616.4 -639.5 *R3R 3.3 -868.8 4.8 *F3D -24.8 612.6 -639.4 R1R 3.3 -868.8 4.8 F2R -26.3 -873.6 18.2 R4U 0.1 -76.3 872.2 *F4R -21.0 -870.3 0.5 R2U 0.1 -76.3 872.2 F2D -28.0 -616.4 -639.5 *R1U 0.1 -76.3 872.2 *F4D -24.8 -612.6 -639.3 R4D 210.6 -318.4 -576.0 L1A 856.8 0.0 151.1 R2D 210.6 -318.4 -576.0 L3A 856.8 0.0 151.1 *R3D 210.6 -318.4 -576.0 L4L 3.3 868.8 4.8 **F5L -0.8 17.0 -17.6 L2L 3.3 868.8 4.8 **F5R -0.8 -17.0 -17.6 L3L 3.3 868.8 4.8 **L5L 0.0 24.0 -0.6 *L1L 3.3 868.8 4.8 **L5D 0.4 4.3 -13.1 L4U 0.1 76.3 872.2 **R5R 0.0 -24.0 -0.6 L2U 0.1 76.3 872.2 **R5D 0.4 -4.3 -13.1 *The SDAP requires only these primary jets. **Vernier jets.
Figure 24: RCS jet locations and plume directions.
Table 29: RCS jet locations-vehicle fabrication frame (inches). Jet X Y Z Jet X Y Z F1F 306.7 -14.7 393.0 *L1U 1542.0 -132.0 480.5 F3F 306.7 0.0 394.5 L4D 1516.0 -112.0 437.4 F2F 306.7 14.7 393.0 L2D 1529.0 -111.0 440.0 F1L 362.7 -69.5 373.7 *L3D 1542.9 -110.1 442.6 *F3L 364.7 -71.7 359.3 R1A 1555.3 124.0 473.1 F1U 350.9 -14.4 413.5 R3A 1555.3 137.0 473.1 *F3U 350.9 0.0 414.5 R4R 1516.0 149.9 459.0 F2U 350.9 14.4 413.5 R2R 1529.0 149.9 459.0 F1D 333.8 -61.4 357.0 *R3R 1542.0 149.9 459.0 *F3D 348.4 -66.2 358.4 R1R 1555.0 149.9 459.0 F2R 362.7 69.5 373.7 R4U 1516.0 132.0 480.5 *F4R 364.7 71.7 359.3 R2U 1529.0 132.0 480.5 F2D 333.8 61.4 357.0 *R1U 1542.0 132.0 480.5 *F4D 348.4 66.2 358.4 R4D 1516.0 112.0 437.4 L1A 1555.3 -124.0 473.1 R2D 1529.0 111.0 440.0 L3A 1555.3 -137.0 473.1 *R3D 1542.0 110.1 442.6 L4L 1516.0 -149.9 459.0 **F5L 324.4 -59.7 350.1 L2L 1529.0 -149.9 459.0 **F5R 324.4 59.7 350.1 L3L 1542.0 -149.9 459.0 **L5L 1565.0 -149.9 459.0 *L1L 1555.0 -149.9 459.0 **L5D 1565.0 -118.0 455.4 L4U 1516.0 -132.0 480.5 **R5R 1565.0 149.9 459.0 L2U 1529.0 -132.0 480.5 **R5D 1565.0 118.0 455.4 *The SDAP requires only these primary jets. **Vernier jets.
Figure 25 shows the relationship between the center of gravity (CG), jet locations, and the vehicle fabrication and body frames. A typical orbiter CG location in the fabrication frame is 1112.6, -0.4, 376.4 inches. Appendix F describes the origin location of the fabrication and body frames.
Figure 25: Relationship between CG, jet locations, and vehicle frames.
- Thrust Buildup and Decay
Each RCS jet may be individually commanded ON and OFF. The buildup of thrust that occurs when a jet is turned ON and the tailoff that occurs during shutdown are modeled by instantaneous (step) changes in the thrust and moment magnitudes, shifted in time from the electrical command. The net firing time, allowing for the ON-delay and OFF-delay, is calculated to give the same total impulse during a transient firing as would be obtained from an actual thruster. Table 34 shows appropriate delay times for each type of jet.
Table 30: Jet delay times. Type of Jet ON-Delay (s) OFF-Delay (s) Primary 0.034 0.022 Vernier 0.015 0.010 - Propellant Consumption
Each primary iet consumes approximately 0.25 lbm of propellant for each commanded cycle. Each vernier jet consumes approximately 0.00735 lbm of propellant for each commanded cycle.
- Jet Plume Impingement
Plume impingement effects have been observed to cause different orbiter flexure responses when different models of the impingement are used. Because of this observation, the following discussion of impingement modeling is included.
The plume expansion fan effect for a single thruster can be predicted theoretically, but the net thrust direction change can be affected by a number of uncertainties. These include the following:
- Simultaneous use of thrusters close to one another can cause complex plume interaction effects, changing the expansion fan shape.
- The orbiter geometry varies since aerosurface positions are not controlled during orbital flight.
- The emission properties of the obstruction surface materials are poorly understood theoretically.
The impingement-included jet force model in Table 32 relies on the following simplifications:
- Impingement effects of any jet are independent of other jet firings.
- Aerosurfaces are at null position.
- The model surface properties accurately represent the shuttle surface properties.
The true impingement effect occurs over a wide area on the shuttle. The assumption that the force change occurs at the jet location does not accurately represent the effect for moment computations, but is adequate for most purposes. If orbiter flexure is considered in a simulation, then the structure loading is most conservatively modeled if the impingement-force change is not included in the bending dynamics. (The unimpinged jet forces are given in Table 35.) However, the changed force must be incorporated into the rigid-body dynamics.
Table 31: RCS jet forces without impingement (for use only in flexible orbiter models). Force (lbf ) Force (lbf) (With Impingement ) (With Impingement ) Jet X Y Z Jet X Y Z F1F -879.4 26.2 119.9 *L1U 0.0 0.0 870.0 F3F -879.5 0.0 122.7 L4D 170.4 291.8 -801.7 F2F -879.4 -26.2 119.9 L2D 170.4 291.8 -801.7 F1L -26.3 873.6 18.2 *L3D 170.4 291.8 -801.7 *F3L -21.0 870.3 0.5 R1A 856.8 0.0 151.1 F1U -32.3 11.7 874.4 R3A 856.8 0.0 151.1 *F3U -31.9 0.0 873.5 R4R 0.0 -870.5 -22.4 F2U -32.3 -11.7 874.4 R2R 0.0 -870.5 -22.4 F1D -28.0 616.4 -639.5 *R3R 0.0 -870.5 -22.4 *F3D -24.8 612.6 -639.4 R1R 0.0 -870.5 -22.4 F2R -26.3 -873.6 18.2 R4U 0.0 0.0 870.0 *F4R -21.0 -870.3 0.5 R2U 0.0 0.0 870.0 F2D -28.0 -616.4 -639.5 *R1U 0.0 0.0 870.0 *F4D -24.8 -612.6 -639.4 R4D 170.4 -291.8 -801.7 L1A 856.8 0.0 151.1 R2D 170.4 -291.8 -801.7 L3A 856.8 0.0 151.1 *R3D 170.4 -291.8 -801.7 L4L 0.0 870.5 -22.4 **F5L -0.8 17.0 -17.6 L2L 0.0 870.5 -22.4 **F5R -0.8 -17.0 -17.6 L3L 0.0 870.5 -22.4 **L5L 0.0 24.0 -0.6 *L1L 0.0 870.5 -22.4 **L5D 0.0 0.0 -24.0 L4U 0.0 0.0 870.0 **R5R 0.0 -24.0 -0.6 L2U 0.0 0.0 870.0 **R5D 0.0 0.0 -24.0 *The SDAP requires only these primary jets. **Vernier jets.
- Input/Output for RCS Model
The RCS model, in response to commands from the autopilot to fire jets, calculates the resultant forces and mo- ments acting on the vehicle. These are used by the vehicle-dynamics model in the orbiter's equations of motion. The model also should maintain the number of jet firings, and their durations, for calculating RCS propellant usage during a simulation.
- RCS Jet System
3 Appendix
3.1 SDAP CONSTANTS AND PARAMETERS
- Introduction
This appendix provides a cross reference for relating SDAP constants and parameters to the names and numbers listed in the on-orbit flight control level C FSSR: STS 81-0009.
- Tables
Tables A-1 through A-3 list the SDAP constants along with various attributes. The FSSR references (FSSR name, type, initial value, and MSID) are to the antecedent I-loads to which the flight code applies selection and scaling as required. Where four values and MSIDs are given, they correspond to PRCS DAP A, PRCS DAP B, VRCS DAP A, and VRCS DAP B. Where three values and MSIDs are given they correspond to the roll, pitch, and yaw components. STS-5 I-load are given.
Table 32: SDAP constants and parameters FSSR reference. SDAP Name FSSR Name Type (see Note 1) Initial Value I-load MSID CONTROL ACCELRATION (see Note 2) MAGCONTROLACCLREFPRIM B 0.8, 0.9 , 0.6 V98U9941C-43C MAGCONTROLACCLREFVERN B 0.019, 0.013 , 0.014 V98U9944C-46C MAGCONTROLACCLVERNALT C 0.0167, 0.0237 , 0.0174 V97U2941C-43C DEADBAND ARRAYDB A 5.0 , 3.0 , 1.0, 1.0 V93H5766C-69C DIAGONAL INERTIA RATION INERTIARATIO B 1.0, 1.0, 1.0 V97U2907C-09C MANEUVER RATE ARRAYMNVRRATE A 0.2, 0.5, 0.2, 0.2 V93R5705C, 06C, 09C, 1OC MIN DELTA OMEGA DELTAVMINIMP B 0.08 * CONTROL ACCELERATION none OFF AXIS COMP THRESHOLD ARRAYCOMPTHRESHOLD A 0.0, 0.0, 0.0, 0.0 V93H5741C, 42C, 45C, 46C PHASE PLANCE ACCEL PHASEPLANEACCEL B 0.08 * CONTROL ACCELERATION none PRIMARY JET LARGEST ROTATION MINIMUM IMPULSE PRIMARYROTMINIMPULSE C 0.112 V97U2797C RATE LIMIT ARRAYRATELIMIT A 0.2, 0.2, 0.02, 0.02 V93R5726C, 27C,30C, 31C ROTATION RATE INCREMENT see Table A-2 C see Table 28 see Table A-2 STATE ESTIMATOR GAINS see Table A-3 C see Table 17 see Table A-3 VERNIER JET LARGEST ROTATION MINIMUM IMPULSE VERNIERROTMINIMPULSE C 0.002 V97U2882C NOTES:
- Type A: Explicitly changeable by crew via display.
- Type B: Not explicitly changeable via display, but derived quantity used in DAP is affected by crew-entered inertia changes.
- Type C: Not changeable via display and not affected by crew-entered data.
- If PAYLOAD EXTENDED=0, flight code selects control acceleration from either MAGCONTROLACCELREFPRIM (if PRCS selected) or MAGCONTROLACCELREFVERN (if VRCS selected), and multiplies by INERTIARATIO. If PAYLOAD EXTENDED=1, control acceleration is set equal to vector No. 1 of MAGCONTROLACCELVERNALT with no INERTIARATIO scaling (supporting VRCS operation only).
Table 33: Rotation rate increment FSSR reference. Rotation Rate Increment Element No. FSSR Definition (ANGINCREMENTS Element No.) MSID 1 4 V97U2969C - 71C 2 5 V97U2972C - 74C 3 6 V97U2975C - 77C 4 11 V97U2990C - 92C 5 12 V97U2993C - 95C 6 13 V97U2996C - 98C 7 14 V97U2999C, V98U9828C - 29C 8 2 V97U2963C - 65C 9 3 V97U2966C - 68C 10 9 V97U2984C - 86C 11 10 V97U2987C - 89C 12 15 V98U9830C - 32C 13 16 V98U9833C - 35C 14 17 V98U9836C - 38C 15 18 V98U9839C - 41C 16 19 V98U9842C - 44C 17 20 V98U9845C - 47C Table 34: .State estimator gains FSSR reference State Estimator Gain FSSR Name MSID \(K_{\theta a}\) (primary) ATTITUDE GAIN2 PRIMARY V97U2658C \(K_{\theta a}\) (vernier) ATTITUDE GAIN2 VERNIER V97U2660C \(K_{\omega a}\) (primary) RATE GAIN2 PRIMARY V97U2823C \(K_{\omega a}\) (vernier) RATE GAIN2 VERNIER V97U2825C \(K_{\alpha a}\) (primary) ACCEL GAIN PRIMARY V97U2500C \(K_{\alpha a}\) (vernier) ACCEL GAIN VERNIER V97U2502C \(K_{\theta r}\) (primary) ATTITUDE GAIN1 PRIMARY V97U2655C \(K_{\theta r}\) (vernier) ATTITUDE GAIN1 VERNIER V97U2657C \(K_{\omega r}\) (primary) RATE GAIN1 PRIMARY V97U2952C \(K_{\omega r}\) (vernier) RATE GAIN1 VERNIER V97U2822C
3.2 ATTITUDE DATA GENERATION AND TRANSFER
- Introduction
The SDAP uses two forms of attitude information. One is the inertial attitude used by the Auto Maneuver module; the other is the body attitude increment used by the State Estimator module. This appendix provides an overview of how attitude information would be processed in an orbiter behavior simulation.
- Attitude Data Processing
Figure B-1 shows the attitude processing structure. The vehicle dynamics model integrates the equations of motion and provides a rotation matrix which defines the relative orientation between the vehicle body axes and the inertial reference (which can be chosen as aligned with the body axes at the beginning of the simulation).
If orbiter flexure is modeled, the flex motion the (perfect) IMU will sense is added to the transformation matrix \(R_I^B\). The IMU model adds a data delay that mimics real processing delays in the flight code and passes \(R_I^B\) to the Attitude Processor module. The Attitude Processor module converts the Euler matrix \(R_I^B\) to the quaternion for the Auto Maneuver module to use and computes an attitude increment, \(\delta\theta\) for the State Estimator module to use (see Section 3.2 for discussion).
Figure 26: Attitude processing overview.
3.3 USE OF QUATERNIONS FOR AUTO MANEUVER AND THE ATTITUDE PROCESSOR
The standard DAP Auto Maneuver module operates with quaternion algebra. In body coordinates, a general three-axis rotation is defined by a single rotation angle about the Eulerian eigen axis. The rotation angle and eigen axis unit vector elements are simply related to the quaternion rotational operator, however, they can be obtained using any representation of the three-dimensional rotational group such as Euler rotations, Pauli spin matrices, or simple quaternions.
Two transformations are involved in the problem, namely the rotation from inertial to commanded attitude, designated by Euler rotation matrix \(R_I^C\) or quaternion \(Q_I^C\), and the rotation from inertial to current body attitude, designated by Euler matrix \(R_I^B\) or quaternion \(Q_I^B\).
The control problem is concerned with the transform from current body to commanded attitude, i.e., either \[ R_B^C = R_I^C (R_I^B)^\intercal \] or \[ Q_B^C = Q_I^C (Q_I^B)^* \]
The rotation angle required to get from current body orientation to commanded orientation can be obtained from either the Euler rotation matrix \(R_B^C\) as \[ \Delta \theta = cos^{-1} (\frac{1}{2}(Tr(R_B^C) - 1 )) \] or from the quaternion \(Q_B^C\) as \[ \Delta \theta = 2 sin^{-1} (q_1^2 + q_2^2 + q_3^2)^{1/2} \]
where \(q_1\), \(q_2\) and \(q_3\) are elements of the quaternion. The unit vector along the axis of rotation is obtained from the Euler rotation matrix \(R_B^C\) as \[ \hat{u} = C_1 \hat{i} + C_2 \hat{j} + C_3 \hat{k} \] with
TODO: problem to display the equations
\[
\begin{array}{l} C_1 = \frac{R_{32} - R_{23}}{2 sin \Delta \theta}\\ C_2 = \frac{R_{13} - R_{31}}{2 sin \Delta \theta}\\ C_3 = \frac{R_{21} - R_{12}}{2 sin \Delta \theta}\\ \end{array}\]
or from the quaternion \(Q_B^C\) as
\[ \hat{u} = -( q_1 \hat{i} + q_2 \hat{j} + q_3 \hat{k}) / (q_1^2 + q_2^2 + q_3^2)^{1/2} \]
The quantities \(\hat{u}\) and \(\Delta \theta\) are used by the Auto Maneuver module and labeled "eigen axis" and "rotation angle" respectively.
Up to this point, there has been no discussion about obtaining \(R_I^B\), \(R_I^C\) and \(Q_I^B\), \(Q_I^C\). The matrix \(R_I^C\) is the Euler matrix that corresponds to a preselected roll, pitch, and yaw angle set chosen for the maneuver. The matrix \(R_I^B\) must be obtained by integrating the equations of motion, feeding the result to the IMU model, and then forming a rotation matrix. The quaternions \(Q_I^B\), \(Q_I^C\) can be derived from the corresponding R matrix using the equations
TODO: problem to display the equations
\[
\begin{array}{c} q_0 = \frac{1}{2} \sqrt {Tr(R) + 1}\\ | q_i | = \frac{&}{2} \sqrt{2 R_{ii} + 1 - Tr(R)}, i = 1 \text{ to } 3 \end{array}\]
with appropriate sign conventions attached. It is natural to ask at this point, "why bother with quaternions when \(R_I^C(R_I^B)^\intercal\) contains all the essential information?" The answer is that evaluation of \(Q_I^C(Q_I^B)^*\) requires 40 percent less multiplication than \(R_I^C (R_I^B)^\intercal\). Defining
TODO: problem to display the equations
\[ \begin{array}{l} Q_I^{B*} = (q_0', -\underline{V'})\\ Q_I^C = (q_0, \underline{V})\\ Q_B^C = (q_0'', \underline{V''}) \]
and writing the quaternion as a hypercomplex number (i.e., \(Q = q_0 + \underline{V}\), one has
TODO: problem to display the equations
\[ \begin{array}{lcl} q_0'' + \underline{V}'' &=& (q_0' - \underline{V}')(q_0 + \underline{V})\\ &=& q_0' q_0 - q_0 \underline{V'} + q_0' \underline{V} - \underline{V'} \underline{V} \]
where the quaternion form of the vector product is defined as \[ \underline{V'}\underline{V} = \underline{V'} \cdot \underline{V} + \underline{V'} \times \underline{V} \]
Therefore
\begin{array}{lcl}
q0'' &=& q0' q0 - \underline{V}' ⋅ \underline{V}
\underline{V}'' &=& -q0 \underline{V'} + q0' \underline{V} - \underline{V'} × \underline{V}
\]
3.4 VEHICLE RIGID-BODY MOTION MODEL
- Introduction
The SDAP is not configured to include translational control, therefore only the rotational dynamics are modeled.
- Rotational Dynamics
The angular acceleration of the orbiter about its center of gravity is expressed by the Euler equation
\[ d\overline{\omega}_V/dt = I^{-1} (\overline{tau} - \overline{\omega}_V \times I \overline{\omega}_V ) \]
where
\(\overline{\tau}\) = total moment acting on the vehicle \(I\) = vehicle inertia tensor $\overline{\omega}V = vehicle angular velocity about its center of gravity The following differential equation updates the transformation matrix from vehicle body coordinates to the reference inertial coordinates \(R_I^B\).
\[ \frac{d R_I^B}{d t} = R_I^B \cdot \begin{bmatrix} 0 & \omega_{V_Z} & - \omega_{V_Y} \\ -\omega_{V_Z} 1 0 & \omega_{V_X} \\ \omega_{V_Y} & -\omega_{V_X} & 0 \end{bmatrix} \]
The recommended procedure is to perform numerically the first integral of the Euler equation, then, using the resultant \(\overline{\omega}_V\), numerically integrate the \(dR/dt\) equation. At the start of the simulation, the vehicle coordinate system can be aligned with the inertial system so that RIB(0) is the identity matrix.
Experience has shown that a fourth-order Runge-Kutta integration is adequate for the previous equations.
- Input/Output for the Rigid-Body Dynamical Model
Inputs to the model include the torques from the RCS jet system and the inertia tensor and its inverse.
The output consists of the elements of a rotation matrix that transform vehicle body coordinates to inertial coordinates.
- Closed-Loop Rigid Body Response
Phase Plane module response to a steady disturbance smaller than the control authority consists of intermittent firings which tend to drive a trajectory loop or limit cycle. If a limit cycle is traversed with high repeatability, the firings will be highly periodic. The State Estimator outputs of estimated rate and disturbance acceleration must converge to achieve a repeating cycle. Before the rate estimate converges on the true rate, the attitude and rate estimates are inconsistent, the Phase Plane is not controlling attitude divergence, and a limit cycle may not even form. This is especially true for "unmodeled" disturbances, i.e., accelerations that are not commanded (and predicted) by the Jet Selection logic. A failed-ON jet is a typical example. During onset of a modeled disturbance, the rate estimate is more accurate.
The acceleration estimate is always slow to converge. Since it determines the placement of disturbance switching line S13, periodicity of firings in both modeled and unmodeled disturbance cases is likely to be greater after convergence. However, for large unmodeled disturbances, S13 can reach an essentially saturated value (see Figure D-1) well before convergence. Both the rate and acceleration estimates have convergence times on the order of 1 minute. (This time is also considered to be the approximate upper limit for a failed-ON jet disturbance. The crew is expected to have reconfigured the RCS by then.)
Phase-plane cyclic behavior in the presence of a disturbance can be broken down into four classes. Two of these are limit cycles, which theoretically are infinitely repeatable. The other two are transitional, tending eventually to evolve into one of the limit cycles, and capable of producing periodic firings while in transit. In the following descriptions, references to specific polarities assume a positive disturbing torque. Descriptions of typical behavior assume the use of typical values of phase-plane rate limit and deadband. (Refer to the Phase Plane module logic description, Section 3.7, for details of operation.)
- Two-Sided Limit Cycle-Figure D-2 shows the phase-plane trajectory. This kind of limit cycle is only obtained with little or no disturbance; ideally, it consists of minimum-impulse firings with relatively long OFF-times.
- One-Sided Limit Cycle-Figure D-3 shows trajectories for small and large disturbances. In the established cycle, the disturbance drives the rate positive from \(\omega_1\). When the positive deadband is exceeded, a compensating jet firing drives the rate negative from \(\omega_2\) to \(\omega_1\). (\(\omega_1\) is the approximate intercept of the trajectory with S13.) The duration and average period of the firings depends on the magnitudes of the disturbance alone and the disturbance plus effective compensation, together with the rate change (\(\omega_1 - \omega_2\)). Frequencies typically range from a very low rate to about 1 Hz.
- Rate Hysteresis Cycle-Figure D-4 shows a typical traiectory. The disturbance drives the rate to the positive rate limit, whereupon a compensation jet firing drives the rate to S13. The trajectory tends to move toward the positive deadband and evolve into either a one-sided limit cycle or a rate threshold cycle. The rate hysteresis cycle typically produces relatively long compensating firings with periods on the order of 0.1 to 1 Hz.
- Rate Threshold Cycle-Figure D-5 shows a typical trajectory. This cycle is encountered outside the deadband. A compensating firing is initiated each time the rate is more positive than the coast-zone threshold and terminated when the rate is driven more negative than the threshold. Normally this action should drive the trajectory back inside the deadband. However, if the estimated rate has not converged on the actual rate, the attitude may diverge. When the rate estimate converges, the trajectory is likely to evolve into a one-sided limit cycle. Typically, the rate threshold cycle produces relatively high-frequency compensation firing rates with either minimum-impulse ON-times or minimum-impulse OFF-times (depending on the relative magnitudes of the disturbance alone and the disturbance plus effective compensation).
Figure 27: Typical evolution of switching line S13 with large positive unmodeled disturbance.
Figure 28: Two-sided limit cycle phase-plane trajectory.
Figure 29: One-sided limit cycle phase-plane trajectory. – Small disturbance.
Figure 30: One-sided limit cycle phase-plane trajectory. – Large disturbance.
Figure 31: Rate hysteresis cycle phase-plane trajectory.
Figure 32: Rate threshold cycle phase plane trajectory.
3.5 SDAP TEST CONSIDERATIONS
In order to make more effective use of the SDAP when evaluating payload/FCS compatibility, care must be taken to define test cases that will produce informative results. A discussion of the test conditions follows.
- Motivation
There are two possible SDAP RCS operations: rotational maneuvers and attitude hold. Options to use vernier jets or primary jets exist, along with options specific to which type of thruster is used, that affect jet selections. These include a payload manipulation mode for vernier jets and forward/aft choices or +z jet inhibit for primary jets (more details are given in Subsections 3.8.2.1 and 3.8.2.2).
Attitude hold causes near periodic jet activity if long-term disturbances are considered. Payload excitation can occur if the induced jet activity rates are close to significant payload modal frequencies. FCS/flexure interaction is possible if damping is low and excited structural modes are not well above the State Estimator bandwidth. Disturbance magnitude and direction (discussed in E.2), parameter values, such as rate limit and deadband (discussed in E.3), and jet control authority determine jet activity rates.
Rotational maneuvers cause an extended start-up torque followed by dynamic attitude hold (maintaining a rate vector) until an extended torque ends the maneuver. Near periodic excitations, resulting from rotation cross-coupling control firings, can occur during maneuvers due to accelera- tion, deceleration, or Euler coupling torques with sufficiently high maneuver rates. With the verniers, multi-DAP-period jet cycling can result from the effect of the duty cycle limiting feature which forces the same jets to be selected for up to five minor cycles, without consideration of off-axis coupling, if commands are constant (see Subsection 3.8.2.2 for details).
A combination of attitude hold and maneuver cases must be studied with the payload in any configuration requiring FCS operation where significant flexure is possible. A realistic variety of disturbances and parameter variations must be accounted for.
- Disturbances
Disturbance torques arise from failures and environmental effects. Jet failures, gravity gradients, and aerodynamic effects are most significant. In addition, all fluid systems on the orbiter have controlled failure venting modes, generally to prevent dangerous pressure buildups.
Jet ON failures produce a torque disturbance that is close to the magnitude of the SDAP control authority. Any jet can fail ON, and all cases should be considered. ON failures should be modeled as an external disturbance, fixed in body axes, acting in the direction that would result from the jet if commanded. (Data to compute the disturbances are given in Tables 32, 33, and 35.) Disturbance duration depends on crew response time, but it is not generally expected to exceed 60 seconds.
Jet OFF failures affect jet cycle frequency as a result of unmodeled control authority reductions. They should be implemented by inhibiting the vehicle dynamics from incorporating any activity from the failed jet. All cases should be considered. Disturbance duration can be brief (less than 1 second) when vehicle failure detection can function. Detection would effectively end the failure by reconfiguration. In cases where failure detection is inhibited, the disturbance can last indefinitely.
Gravity gradients and aerodynamic torques are earth centered. Gravity gradients vary strongly with attitude, but they vary weakly with altitude for the range of space shuttle operations. Aerodynamic torques vary strongly with altitude as well as attitude due to exponential atmospheric attenuation as a function of distance from the earth's surface. Gravity-gradient torque ranges are given in Tables E-1 and E-2. Table E-1 specifies peak per body axis values of gravity-gradient torques for a vehicle rotating about any one axis at a time of the principal LVLH system defined in a velocity vector +X, vehicle to earth center +Z triad. Zero crossings for torques within each rotation axis are also given with angles referenced to an initial attitude aligned in the above mentioned triad. Table E-2 specifies peak gravity gradient per body-axis torques for arbitrary attitudes. Approximate aerodynamic torque ranges for arbitrary attitudes are given in Table E-3. Gravity gradients vary harmonically with attitude. Aerodynamic effects vary non-linearly with attitude. Disturbance duration is continuous.
Venting disturbances originate from fixed ports in the shuttle fuselage and result in body-centered torques. Most nominal venting requirements can be scheduled around payload operations. However, venting is possible as a result of failures or contingency procedures. Some cases can tax the vernier control authority. If a payload has load limitations that prevent selection of primary jets or if a flexural response is possible near frequencies that would be excited by unscheduled vent-induced jet activity, then study of cases involving venting disturbances will be necessary. Current vent models may be obtained from appropriate NASA sources including flight techniques panels. Disturbance-duration information is specific to each type of event.
Table 35: Gravity gradient torques; orbiter alone around principal LVLH rotation axes. Altitude= 150 nmi LVLH Rotation Axis Torque Body Axis Maximum Torque (ft-lbf) Minimum Torque (ft-lbf) Zero Crossings (deg) Roll X 0.61 -0.61 0, ± 90, 180 Y 1.05 0.00 -- Z 0.53 -0.57 0, +92, -88, 180 Pitch X 0.02 -0.02 0, ±90, 180 Y 13.42 -13.42 0, ±90, 180 Z 0.04 -0.04 0, 180 Yaw X 0.0 0.0 -- Y 1.05 1.05 -- Z 0.0 0.0 -- Altitude= 100 nmi Roll X 0.63 -0.63 0, ± 90, 180 Y 1.10 0.00 -- Z 0.51 -0.55 0, +92, -88, 180 Pitch X 0.02 -0.02 0, ±90, 180 Y 14.00 -14.00 0, ±90, 180 Z 0.04 -0.04 0, 180 Yaw X 0.0 0.0 -- Y 1.10 1.10 -- Z 0.0 0.0 -- Table 36: Peak body axis gravity gradient torques for arbitrary rotation; orbiter alone. Body Axis Peak Torque Magnitude (ft-lbf) Roll 1.3 Pitch 14.0 Yaw 14.0 Table 37: Aerodynamic torques. Body Axis Altitude (nmi) Maximum Torque (ft-lbf) Minimum Torque (ft-lbf) Roll 100 7.2 -7.2 150 0.7 -0.7 Pitch 100 16.4 -16.4 150 1.6 -1.6 Yaw 100 7.6 -7.6 150 0.8 -0.8 (The maxima/minima do not occur simultaneously in the different axes.)
- Setting Parameters
A group of parameters affects the level of jet activity during maneuvers and attitude hold. These include maneuver rate, deadband, rate limit, and open-loop rotation-compensation threshold. The system software requires that all axes have the same rate limit and deadband. The maneuver rate is either a total rate for automatic rotation or a per axis rate, identical in all axes, for discrete rate rotation. Off-axis compensation is selected by specifying a threshold that exceeds half of the largest minimum impulse. (Except when inadvertently selected, compensation is only used for manual open-loop rotation.) Table E-4 lists the permissible range of the parameters for the real flight code.
Table 38: Permissible parameter range. Parameter Units Primary Jets Min Primary Jets Max Vernier Jets Min Vernier Jets Max Maneuver Rate deg/s 0.05\(^1\) 2.00\(^2\) 0.002\(^{1}\) 1.000\(^3\) Compensation Threshold deg/s 0.00 0.99 0.000 0.999 Deadband deg 0. 1 40.0 0.01 40.00 Rate Limit deg/s 0.2 5.0 0.01 0.50 - The maneuver rate should not normally be set less than the rate limit.
- Not generally greater than 1. 00.
- Not generally greater than 0.200.
A variety of parameter selections must be evaluated to study payload/FCS interaction effects. The following rules may help decide the most significant cases.
- Small rate limit and deadband increase thechance of flex rate – and attitude-oscillation – induced RCS activity.
- Rate limit is almost always less than or equal to the maneuver rates.
- Vernier jets are generally used for low rate maneuvers, tight deadband, and long-term attitude hold.
- Compensation is designed for use in conjunction with the manual pulse or accel mode. Procedural errors can cause compensation firings during manual-discrete rate or automatic maneuvers.
Within the bounds of these rules, one should try ranges of the parameters in both maneuver and attitude-hold situations. A group of compensation runs should be performed if manual control is likely during payload opera- tions. Maneuvers must be selected to cause rotation coupling correction jet activity at a variety of frequencies. Special consideration should be given to yaw/roll and roll/pitch coupling effects. For vernier jets, yaw couples with both pitch and roll due to forward jet locations.
- Screening Results
Two types of effects must be considered when evaluating SDAP/payload interaction: payload excitation due to jet activity at frequencies near payload modal response and flexure passing through the State Estimator at frequencies below the estimator bandwidth.
The probability of payload excitation can be determined by inspecting payload modal data and comparing that with SDAP-derived jet pulsing frequencies. Even if a significant response was not found in SDAP tests, an overlap of frequencies may suggest that slightly different test conditions could amplify the flexure. An ambiguous result of this type would merit more testing and perhaps higher fidelity modeling.
Low-frequency flexure can feed through the State Estimator. If low-frequency amplitudes are sufficient to approach the rate limit or deadband, then a significant payload/PCS interaction is possible. A larger dead zone will help resolve the problem if flight rules permit. Otherwise, detailed studies may be required of the permissible operating envelope of the orbiter/payload combination.
3.6 COORDINATE FRAMES
- Discussion
An inertial frame, defined by the vehicle frame orientation at the beginning of the simulation, a vehicle frame, and a linear frame definition for calculating torques and inertias, are the only requirements for coordinate-frame simulations.
- Linear (Fabrication) Frame
This is a standard frame located in front of and below the shuttle orbiter. It is located 238 inches in front of the vehicle nose, 400 inches below the approximate body center line, and in the plane of symmetry. Jet locations (Table 33) are given in manufacturing coordinates as are flexure nodes and vehicle CG location. Positive X is from nose to tail, and positive Z is from main engine bell to tip of rudder. Y forms a right handed triad (see Figure F-1).
- Rotational (Body) Frame
The origin is chosen at the CG. The X axis has its positive direction from tail to nose; Y is chosen positive from the body center line through the right wing tip; and Z is downward, forming a right-handed triad. This is illustrated in Figure F-2.
Figure 33: Fabrication frame.
Figure 34: Body coordinate system.
3.7 List of acronyms
- ACCEL – Acceleration
- AUTO – Automatic
- B – Body Referenced
- CG – Center of Gravity
- CSDL – The Charles Stark Draper Laboratory, Inc.
- DAP – Digital Auto Pilot
- DAP RECON – DAP Reconfiguration
- DB – Dead band
- DISC – Discrete Rate
- EST – Estimate
- FCS – Flight Control System (DAP, Effectors, Sensors)
- FSSR – Functional Subsystem Software Requirements
- I – Inertial
- IC – Initial Condition
- I-LOAD – Stored quantity which affects FCS performance
- IMO – Inertial Measurement Unit (measures inertial attitude changes in this context)
- INIT – Initialize
- I/0 – Input-Output
- LVLH TRACK – Local Vertical/Local Horizontal Tracking Module
- MNVR – Maneuver
- MSID – Measurement Stimulus Identifier
- nmi – Nautical Miles
- OMS – Orbital Maneuvering System
- PBI – Push Button Indicator
- PRCS – Primary Reaction Control System (Primary Rotation Jets)
- \(Q_R\) – Quaternion Rotation Matrix
- RCS – Reaction Control System (Rotation Jets)
- RECON – Reconfiguration logic
- RHC – Rotational Hand Controller
- RL – Rate Limit
- ROT – Rotation
- ROT ACCEL – Rotational Acceleration
- ROT DISC – Discrete Rate Rotation
- ROT PULSE – Pulsed Rotation
- SDAP – Simplified Digital Auto Pilot
- TVC – Thrust Vector Control
- VRCS – Vernier Reaction Control System (Vernier Rotation)