Virtual AGC
Ron Burkey's Virtual AGC code simulates the hardware of the real Apollo Guidance Computer, and can run the same software as was used on a real Apollo mission. This is a separate open source project which is linked into Project Apollo.
The Virtual AGC or vAGC uses software that is believed to have flown on actual missions. Most missions in Project Apollo use Colossus 1A (rev249) otherwise known as Colossus249. It is believed that this software was used for the Apollo 9 mission.
Original Documentation
Some original Apollo-era documentation which may be useful for understanding the operation of the Virtual AGC and the Colossus and Luminary software:
- Apollo 15 Delco Manual -- with information on AGC usage.
- Apollo experience report: Guidance and control systems - Digital autopilot design development
Pre Launch and Service Programs
Programs 00-09 are reserved for Prelaunch and Service programs.
Program 00: CMC Idling also known as "POOH" in astronaut terminology. This is a default state for the AGC. It indicates to the crew the AGC is not engaged in any routines or programs that require crew consideration. It maintains the GNCS in a condition where manual attitude maneuvers can be made by the crew with minimal concern. Finally, it maintains the CMC in a condition of readiness for entry into other programs. Whenever you are not engaged in other programs the AGC should into this state called "Go the POOH"
Program 01: Prelaunch Initialization. This program sets up the CMC and GNCS for preparation for launch. It torques the Stable Member for launch orientation based on the spacecraft position and launch azimuth. This program then automatically starts Program 02.
Program 02: Prelaunch Gyro-compassing. The IMU senses the rotation of the earth while the spacecraft is on the pad. Therefore, this program maintains the IMU id the launch configuration. It also provides the capability to change the launch azimuth due to a change in liftoff time. Lastly, it provides a backup to manually key in that liftoff has occurred.
Program 03: Prelaunch Optical Verification of Gyro Compassing. This program provides a method to verify the Alignment of the Stable Member.
Program 06: CMC Power down. When the CMC is powered down this program puts the AGC in standby. When in standby mode only the Mission clock is updated.
Boost Programs
Programs 10-19 are used in the boost phase.
Program 11: Earth Orbit Insertion Monitor. While the Saturn Rocket uses its own guidance system, the CMC can monitor launch parameters and provide and indication, through the FDAI error needles that the launch is on course. The program is automatically started by Program 02 or by astronaut input.
Program 17: TPI Search. This program is more associated with rendezvous then with boost though it is in the boost group. This program calculates the parameters for the transfer phase to intercept another spacecraft called "Transfer Phase Initiation".
Coast Programs
Programs 20-29 are for navigation. Primarily for tracking other spacecraft, locating and tracking ground targets, and navigating during the transit to to and from the moon.
Program 20: Rendezvous Navigation.
Alignment Programs
Programs 51-54 are used for IMU alignment.
Program 51: IMU Orientation
Program 52: IMU Realign
Verb/Noun Basics
The Verb/Noun provides much of the command and parameter interface to the AGC. Astronaut commands and information about values in the display registers are given thru verbs and nouns.
Verbs
There are 40 normal verbs. These verbs correspond to simple actions. They are split into 4 groups display, monitor, load, and executives.
Display verbs allow display of Noun fields. Typically they are used by programs for displaying information, using Verb 05 and 06. The astronaut can use these verbs to display a Noun at almost any time, but it is important to know that some noun may not be valid in all modes. Monitor verbs are the same as display verbs with the exception that monitor verbs continually update the registers every time step(about 1 per sec).
Load verbs are used by the astronaut to load values into nouns. Load verbs are used to change values displayed during programs that require astronaut input.
Executive Verbs are direct user interface and testing. Examples are Verb 37 for starting a program and Verb 35 for testing the panel lights.
The remaining 60 verbs are called extended verbs. These verbs hold a wide range of actions, both actions requested by the astronaut and requested by the AGC. By this I mean that some verbs are entered by the astronaut to be performed by the AGC and other are displayed by the AGC for action by the astronaut. In addition, some verbs are only used during specific programs, most notably Program 20.
There are also “flashing verbs”. This is when the Verb/Noun Line of the DSKY is flashing. This indicates to the astronaut that the AGC is waiting for a response. Flashing verbs occur during programs and some extended verbs.
Nouns
Like Verbs, nouns are split between two major types. The first 40 are normal nouns. These nouns contain information that is singular in nature. To out another way, the information contained in those nouns do not have different scaling, or display a single item. Two best examples are Noun 20, which contain the CDU angles all in .01 degrees, and Noun 36 containing the CMC mission time in hrs, min, secs.
The remaining nouns are called mixed. Mixed nouns can contain information where each register contains related but independent information. All mixed nouns relate to programs and extended verbs and should not be edited outside of there programs. An example of a missed noun is Noun 40, used during burns. Register 1 shows time to/from ignition of burn/ Register 2 indicates velocity to be gained. And register 3 indicates velocity gained.
Registers
The registers are the three lines under the Verb/Noun Line. The data that is shown in the registers are determined from the current Noun. The registers show data in English units, such as feet/sec, Nautical miles. There are 29 scaling/units used in the registers through the nouns. One interesting aspect to the AGC is that while the display information is in English units the AGC math is all done in metric units. There are many nouns that display octal numbers. Most of these are used for setting DAP parameters, indicating star numbers, and other options. Octal numbers are indicated with the lack of a sign indication in the register.
Entering Registers
When entering data into a register, remember to always enter it using the same scaling and precision that the register is displayed in. When entering scaled numbers always enter a +/- before the number, and always add leading zeros so that all digits are filled in the register. When entering octal numbers always omit the sign. Octal registers do not require leading zeros when entered.
Pad Loads
Pad Loads refer to paramters loaded into earsable memory before launch or "on the pad". Paramters included mission specific paramters such as lunar landing site location, time of liftoff, and locations of stelar bodies used for navigation and orbital integration. the parameters also inlcuded digital autopilot paramters that are specific to the spacecraft. Currently there are 75 variables identified in Collosus 249 as pad loaded.
Determining Pad Load values
Since no listing is currently known to exsist of CSM pad loads for any Collosus version, pad load varibles and values had to be determined through examination of the source code listing and avalibel documenation. values are detrmined through calculations, from documentation, and in some cases, emprical testing.
Pad Loads and Descriptions
TEPHEM: The time between July 1 and the launch. This variable is used as a indepentent time reference to all time based calculations. This varivable is incrmented at liftoff by adding the current AGC time to TEPHEM so, in practice the varible is precceds the actual liftoff time and the AGC clock is incremeted at AGC turn on to coincide with the launch time.
AZO: The Earth Azimuth Defines the rotation of the Earth with respect to the Basic Coordinate system. It relates the Basic Coordinate system with the Earth coordinate system defined by the angle between the two on July 1. The AGC advances that angle to the mission time based on TEPHEM and MET AYO: Defines the Earth Precision angle AXO: Defines the Earth Nutation angle LAUNCHAZ: The launch azimuth from north. It is used to determine the orientation of the IMU in its launch position. CSMMASS: "Wet" weight of the CSM at launch. It is the Mass of all cosumables loaded into the CSM at launch. It is used mostly to determine how the CSM reacts to automatic RCS and TVC movments. LEMMASS: Same as the CSMMASS except for it for the LEM for use when it is attached to the CSM. EMSALT: The AGC reports in P61 initial paramters used to setup the EMS scroll. This varible sets the Altitude for which these parameters are determined. It is an estimate of the altitude where the spacecraft has a atmospheric drag of .05g TIMEMO:Time between July 1 and a point midway through the mission such that there is a 14 day window in which the mission resides. This varible defines the 0 point for VECOEM, RESO, VESO, and OMEGAES. VECOEM:defines a 3 deminsion 9 degree polynomial that defines the position of the moon in relation to the earth during the mission. RTED1: EMDOT:Defines the flow rate of the SPS engine for updating CSMMASS. ESTROKER:Defines the amplitude of the stroker test. This test was added in early Collosus versions to get data on how the movement of the SPS engine bell effects the spacecraft. EKPRIME: EKPRIME +1: ETDECAY: Defines the time that it takes for the SPS thrust to decay after the Engine off command has been sent EKTLX/I: EKTLX/I +1: ETVCDT/2: Defines the Filter Bandwidth based on the sampling time of the CDU angles into the TVC DAP control Loop. ETSWITCH: Time between inital correction gain and nominal gain feined by ECOFRAC and EREFRAC. CSM/LM value is 6sec and havled for CSM only configuration ECOFRAC: Gain used for initial correction of thrust misalignment. R-577 qoutes a zalue of 1 which is doulbled for the CSM only configuration EREPFRAC: Gain used after the inital correction for the CSM configuration. The transition defined by ETSWITCH. R-577 qoutes value of .250 EREPFRAC +1: Gain used after the inital correction for the CSM/LM configuration. The transition defined by ETSWITCH. R5-77 qoutes value of .0375 AP0-BP3:
PITCH GEN3DAP FILTER: KPGEN3
******** ***************************************** * * * * * -1 -2 -3 * * EP = ERRBTMP * APO + AP1 Z + AP2 Z + AP3 Z * NPO NP0 = CMDTMP ** *************** ----------------------------------- **********( X )********************* * -1 -2 -3 * ** * 1 + BP1 Z + BP2 Z + BP3 Z * * * ***************************************** YAW GEN3DAP FILTER: KYGEN3 ******** ***************************************** * * * * * -1 -2 -3 * * EY = ERRBTMP * AYO + AY1 Z + AY2 Z + AY3 Z * NYO NY0 = CMDTMP ** *************** ----------------------------------- **********( X )********************* * -1 -2 -3 * ** * 1 + BY1 Z + BY2 Z + BY3 Z * * * *****************************************
DVTHRESH: Determines value of velocity that defines a SPS thrust failure. POLYNUM: a seven degree polynomial defining the pitch of the Staurn Lainch vehicle during the early stage of boost. It is used to determine error needle deflection during launch, giving an indication to the astronaut the the Lainch Vehicle is on course. SATLRT: Roll rate during roll program at launch used like POLYNUM. RPSTART: Defines when the roll program starts after liftoff. POLYSTOP:Defines when the POLYNUM polynokmals are valid. LADPAD:Nominal Lift/Drag Coeffcient LODPAD:Final Phase Nominal Lift/Drag ALFAPAD:HYPERSONIC CM TRIM ANGLE OF ATTACK CDUCHKWD HORIZALT:Because of atmospheric effects the actual ground horizon could be difficult to determine. This vearible sets a location above the horizon to use as the sighting horizon. ALTVAR: Alternate variance for alternate line of site. Adds a variance to the X-Matrix when using a alternate line of sight for marking. (See W-Matrix) WRENPOS: Defines Rendezous positional variance using optical sighting marks (See W-Matrix) WRENVEL: Defines Rendezous velocity variance using optical sighting marks (See W-Matrix) RMAX: Defines the maximum positional delta correction during rendozous sightiung marks VMAX: Defines the maximum velocity delta correction during rendozous sightiung marks WORBPOS: Defines Orbital positional variance using optical sighting marks (See W-Matrix) WORBVEL: Defines Orbital Velocity variance using optical sighting marks (See W-Matrix) S22WSUBL: RPVAR: ATIGINC: PTIGINC: RLS:Defines the Lunar Landing Site, Lunar landmark 00. RESO: Defines the position of the sun with respect to earth at the time determined by TIMEMO VESO: Defines the velocity of the sun with respect to earth at the time determined by TIMEMO OMEGAS: Defines the angluar velocity of the sun INTVAR: WMIDPOS: Defines Cislunar positional variance using optical sighting marks (See W-Matrix) WMIDVEL: Defines Cislunar velocity variance using optical sighting marks (See W-Matrix) RVAR: Defines the variance of RADAR range for rendozous updates RVARMIN: PADLONG:Defines Launch Pad longitude PGNCALT:Defines Altitude of IMU at Liftoff. ECSTEER: YACTOFF: Defines the Yaw trim angle of the SPS actuators to account for mass distribution of the CSM PACTOFF: Defines the Pitch trim angle of the SPS actuators to account for mass distribution of the CSM 504LM: LATITUDE:Defines Launch Pad Latitude AZIMUTH:Defines orientation of spacecraft in relation to north.
Scaling, units and addresses of Pad Loaded varibles TEPHEM cs 2^-42 TP 1706-1707 E3,1706-E3,1707 AZO Rev 2^1 DP 1711-1712 E3,1711-E3,1712 AYO Rev 2^1 DP 1713-1714 E3,1713-E3,1714 AXO Rev 2^1 DP 1715-1716 E3,1715-E3,1715 LAUNCHAZ Rev DP 2633-2634 E5,1633-E5,1634 CSMMASS Kg 2^-16 DP 3074-3075 E6,1474-E6,1475 LEMMASS Kg 2^-16 DP 3072-3073 E6,1472-E6,1473 EMSALT m 2^-29 DP 2017-2020 E4,1417-E4,1420 TIMEMO cs 2^-42 TP 2033-2035 E4,1433-E4,1435 VECOEM m/cs^x * DPX30 2036-2131 E4,1433-E4,1531 RTED1 scalar 2^-3 SP 1351 1351 EMDOT Kg/cs 2^-3 DP 110-111 110-111 ESTROKER scalar 85.41Arcsec/Bit SP 3012 E6,1412 EKPRIME scalar pi/8 SP 3013 E6,1413 EKPRIME +1 scalar pi/8 SP 3014 E6,1414 ETDECAY cs 2^-14 SP 3015 E6,1415 EKTLX/I cs^-2 2^-3 SP 3016 E6,1416 EKTLX/I +1 cs^-2 2^-3 SP 3017 E6,1417 ETVCDT/2 cs 2^-14 SP 3020 E6,1420 ETSWITCH cs 2^-14 SP 3021 E6,1421 ECOFRAC scalar 2^-2 SP 3022 E6,1422 EREPFRAC scalar 2^-2 SP 3023 E6,1423 EREPFRAC +1 Scalar 2^-2 SP 3024 E6,1424 AP0 scalar 2^-2 SP 3027 E6,1427 AP1 scalar 2^-4 DP 3030-3031 E6,1430-E6,1431 AP2 scalar 2^-4 DP 3032-3033 E6,1432-E6,1433 AP3 scalar 2^-4 DP 3034-3035 E6,1434-E6,1435 BP1 scalar 2^-2 DP 3036-3037 E6,1436-E6,1437 BP2 scalar 2^-2 DP 3040-3041 E6,1440-E6,1441 BP3 scalar 2^-2 DP 3042-3043 E6,1442-E6,1443 DVTHRESH m/cs 2^-2 SP 1353 1353 POLYNUM Scalar 2^1 DPX6 3261-3275 E6,1661-E6,1675 SATLRT rev/cs 2^1 DP 3300-3301 E6,1700-E6,1701 RPSTART cs 2^-14 SP 3302 E6,1702 POLYSTOP cs 2^-14 SP 3303 E6,1703 LADPAD scalar 2^1 SP 3007 E6,1407 LODPAD Scalar 2^1 SP 3010 E6,1410 ALFAPAD Scalar 2^1 SP 3011 E6,1411 CDUCHKWD cs SP 1341 1341 HORIZALT m SP 1354 1354 ALTVAR Scalar 2^1 SP 1356 1356 WRENPOS: WRENVEL: RMAX: VMAX: WORBPOS: WORBVEL: S22WSUBL: RPVAR ATIGINC cs 2^-14 DP 2021-2022 E4,1421-E4,1422 PTIGINC cs 2^-14 DP 2023-2024 E4,1423-E4,1424 RLS m 2^-27 DPx3 2025-2032 E4,1425-E4,1432 RESO m 2^-38 DPX3 2132-2137 E4,1532-E4,1537 VESO m/s 2^-9 DPX3 2140-2145 E4,1540-E4,1545 OMEGAS Arcsec/cs 2^26 2146-2147 E4,1546-E4,1547 INTVAR m^2 2^-15 SP 2177 E4,1577 WMIDPOS: WMIDVEL: RVAR: RVARMIN: PADLONG deg 2^1 DP 1263-1264 1263-1264 PGNCALT m DP 1265-1266 1265-1266 ECSTEER: YACTOFF deg 2^1 SP 3024 E6,1424 PACTOFF deg 2^1 SP 3025 E6,1425 504LM: LATITUDE deg 2^1 DP 2402-2403 E4,1702-E4,1703 AZIMUTH deg 2^1 DP 2400-2401 E4,1700-E4,1701
- Oriented in three deminsion in decdenting polynomial order such that X9,Y9,Z9...X0,Y0,Z0
Notes on how engineering values are determined for the orbiter envirnement TEPHEM: The purpose of TEPHEM is defined in R-577 section 5.1.5.5 expressed as t0. The value is best determoned by taking the MJD at a specific point before the launch time. At AGC startup the AGC clock is edited such that the sum of the AGC clock and TEPHEM produces a new TEPHEM that is the actual launch time. AZO:
External Links