Virtual AGC

From Project Apollo - NASSP
Jump to navigation Jump to search

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:

Primary Functions

The AGC was designed to fulfill the following requirements:

Provide on-board Spacecraft navigation

Provide digital autopilots for both orientation and powered flight

Provide rendezvous navigation

Provide Entry Navigation and Autopilot

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.


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.


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.


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 parameters loaded into erasable memory before launch or "on the pad". Parameters included mission specific parameters such as lunar landing site location, time of liftoff, and locations of stellar bodies used for navigation and orbital integration. the parameters also included digital autopilot parameters 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 exist of CSM pad loads for any Collosus version, pad load variables and values had to be determined through examination of the source code listing and available documentation. values are determined through calculations, from documentation, and in some cases, empirical testing.

Pad Loads and Descriptions

TEPHEM: The time between July 1 and the launch. This variable is used as a independent time reference to all time based calculations. This variable is incremented at liftoff by adding the current AGC time to TEPHEM so, in practice the variable is precceds the actual liftoff time and the AGC clock is incremented 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 consumables loaded into the CSM at launch. It is used mostly to determine how the CSM reacts to automatic RCS and TVC movements.

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 parameters used to setup the EMS scroll. This variable 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 variable defines the 0 point for VECOEM, RESO, VESO, and OMEGAES.

VECOEM:defines a 3 dimension 9 degree polynomial that defines the position of the moon in relation to the earth during the mission.


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.



ETDECAY: Defines the time that it takes for the SPS thrust to decay after the Engine off command has been sent



ETVCDT/2: Defines the Filter Bandwidth based on the sampling time of the CDU angles into the TVC DAP control Loop.

ETSWITCH: Time between initial correction gain and nominal gain feined by ECOFRAC and EREFRAC. CSM/LM value is 6sec and halved for CSM only configuration

ECOFRAC: Gain used for initial correction of thrust misalignment. R-577 quotes a value of 1 which is doubled for the CSM only configuration

EREPFRAC: Gain used after the initial correction for the CSM configuration. The transition defined by ETSWITCH. R-577 quotes value of .250

EREPFRAC +1: Gain used after the initial correction for the CSM/LM configuration. The transition defined by ETSWITCH. R5-77 quotes value of .0375



               *****************************************           *
               *                                       *           *
               *               -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    *
               *                                       *
               *****************************************           *
               *                                       *           *
               *               -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 Saturn Launch 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 Launch 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 polynomials are valid.

LADPAD:Nominal Lift/Drag Coefficient

LODPAD:Final Phase Nominal Lift/Drag



HORIZALT:Because of atmospheric effects the actual ground horizon could be difficult to determine. This variable 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 Rendezvous positional variance using optical sighting marks (See W-Matrix)

WRENVEL: Defines Rendezvous velocity variance using optical sighting marks (See W-Matrix)

RMAX: Defines the maximum positional delta correction during rendezvous sighting marks

VMAX: Defines the maximum velocity delta correction during rendezvous sighting 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)





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 angular velocity of the sun


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 rendezvous updates


PADLONG:Defines Launch Pad longitude

PGNCALT:Defines Altitude of IMU at Liftoff.


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


LATITUDE:Defines Launch Pad Latitude

AZIMUTH:Defines orientation of spacecraft in relation to north.

External Links

Under Construction.gif
This article is a stub. You can help Project Apollo - NASSP by expanding it.