Luminary099是阿波罗11号任务期间控制登月舱 (LM) 的阿波罗导航计算机 (AGC) 软件。该软件负责登月舱所有关键操作,包括动力下降到月球表面、月球着陆本身、表面操作、从月球起飞以及与指令舱的会合。Luminary099代表AGC程序LMY99的001版本,日期为1969年7月14日。
有关指令舱软件的信息,请参阅指令舱 (Comanche055)。
来源: README.md99-102 Luminary099/README.md9-19
Luminary099被设计为一个复杂、集成的软件系统,具有多个相互关联的组件,并按子系统层次结构排列。该软件负责登月舱导航、制导和控制的所有方面。
来源: Luminary099/MAIN.agc1-92 Luminary099/README.md32-107
核心运行时系统构成了Luminary099软件的基础,负责管理任务调度、内存分配和命令处理。
核心系统包括
| 组件 | 文件 | 目的 |
|---|---|---|
| Executive | EXECUTIVE.agc | 管理多任务和程序流程控制 |
| Waitlist | WAITLIST.agc | 以精确的时间安排基于时间的任务 |
| 解释器 | INTERPRETER.agc | 处理动词-名词命令并处理程序执行 |
| 重启保护 | FRESH_START_AND_RESTART.agc | 管理系统初始化和恢复 |
来源: Luminary099/EXECUTIVE.agc Luminary099/WAITLIST.agc Luminary099/INTERPRETER.agc Luminary099/FRESH_START_AND_RESTART.agc
GN&C子系统负责确定登月舱的位置、规划和执行机动以及控制航行器的姿态和轨迹。
数字自动驾驶仪 (DAP) 是一个关键组件,负责控制登月舱的姿态和推力。它包括
来源: Luminary099/DAP_INTERFACE_SUBROUTINES.agc Luminary099/DAPIDLER_PROGRAM.agc Luminary099/P-AXIS_RCS_AUTOPILOT.agc Luminary099/Q_R-AXIS_RCS_AUTOPILOT.agc Luminary099/TJET_LAW.agc Luminary099/TRIM_GIMBAL_CONTROL_SYSTEM.agc Luminary099/KALMAN_FILTER.agc
来源: Luminary099/CONIC_SUBROUTINES.agc Luminary099/ORBITAL_INTEGRATION.agc Luminary099/INTEGRATION_INITIALIZATION.agc Luminary099/POWERED_FLIGHT_SUBROUTINES.agc Luminary099/IMU_COMPENSATION_PACKAGE.agc Luminary099/TIME_OF_FREE_FALL.agc
Luminary099包含许多执行特定任务阶段的任务程序(P-codes)。每个程序都为特定的操作顺序而设计。
月球着陆是登月舱的主要任务,由几个专用程序控制。
主要着陆程序包括:
| 程序 | 文件 | 目的 |
|---|---|---|
| P63 | THE_LUNAR_LANDING.agc | 从轨道高度下降的制动阶段 |
| P64 | THE_LUNAR_LANDING.agc | 最终着陆点选择的进近阶段 |
| P65-P67 | THE_LUNAR_LANDING.agc | 自动和手动着陆序列 |
| 着陆制导 | LUNAR_LANDING_GUIDANCE_EQUATIONS.agc | 下降的数学制导算法 |
| 油门控制 | THROTTLE_CONTROL_ROUTINES.agc | 下降期间的发动机功率调节 |
来源: Luminary099/THE_LUNAR_LANDING.agc Luminary099/LUNAR_LANDING_GUIDANCE_EQUATIONS.agc Luminary099/THROTTLE_CONTROL_ROUTINES.agc Luminary099/LANDING_ANALOG_DISPLAYS.agc
在月球表面操作后,登月舱需要与指令舱会合,这需要精确的轨道机动。
关键会合程序包括:
| 程序 | 文件 | 目的 |
|---|---|---|
| P12 | P12.agc | 从月球表面到轨道的动力上升 |
| P20-P25 | P20-P25.agc | 会合导航与跟踪 |
| P30-P37 | P30_P37.agc | 轨道转移规划 |
| P32-P35/P72-P75 | P32-P35_P72-P75.agc | 会合转移机动 |
| 上升制导 | ASCENT_GUIDANCE.agc | 月球起飞的制导算法 |
来源: Luminary099/P12.agc Luminary099/P20-P25.agc Luminary099/P30_P37.agc Luminary099/P32-P35_P72-P75.agc Luminary099/ASCENT_GUIDANCE.agc
安全至上,因此 Luminary099 包含专用中止程序
| 程序 | 文件 | 目的 |
|---|---|---|
| P70 | P70-P71.agc | 下降中止 - 直接上升 |
| P71 | P70-P71.agc | 低空下降中止 |
宇航员通过 DSKY(显示器和键盘)界面与 AGC 进行交互,DSKY 由多个软件组件控制
用户界面包括
| 组件 | 文件 | 目的 |
|---|---|---|
| 弹球 | PINBALL_GAME_BUTTONS_AND_LIGHTS.agc | 主 UI 处理 |
| 扩展动词 | EXTENDED_VERBS.agc | 命令定义和处理 |
| 名词表 | PINBALL_NOUN_TABLES.agc | 数据格式定义 |
| 显示界面 | DISPLAY_INTERFACE_ROUTINES.agc | 输出管理 |
| 键盘中断 | KEYRUPT_UPRUPT.agc | 键盘中断处理 |
来源: Luminary099/PINBALL_GAME_BUTTONS_AND_LIGHTS.agc Luminary099/EXTENDED_VERBS.agc Luminary099/PINBALL_NOUN_TABLES.agc Luminary099/DISPLAY_INTERFACE_ROUTINES.agc Luminary099/KEYRUPT_UPRUPT.agc
Luminary099 软件被组织成大约 100 个源文件,每个文件处理特定的功能。这些文件包含在主汇编文件 (MAIN.agc) 中,该文件充当中央集成点。
组织遵循逻辑结构,相关功能分组在一起
系统定义和参数(第 1-152 页)
核心基础设施(第 153-243 页)
用户界面(第 244-389 页)
任务程序(第 390-925 页)
子系统和实用程序(第 926-1510 页)
来源: Luminary099/MAIN.agc1-92 Luminary099/README.md32-127 Luminary099/README.md1-31
Luminary099 是 1969 年 7 月 20 日成功引导阿波罗 11 号登月舱“鹰”号着陆月球表面的软件版本,使其成为人类最重大的技术成就之一。该软件由麻省理工学院仪器实验室(现德雷珀实验室)在 NASA 合同下开发。
原始源代码是整体性的,但在此存储库中已分为功能模块,以便于学习和理解。考虑到阿波罗制导计算机硬件严苛的内存和处理限制,该代码代表了一项卓越的工程成就。