虚拟阿波罗制导计算机
历史背景与硬件概述
阿波罗飞船的登月任务涉及两艘独立的飞船:指令舱 和 登月舱。两者均需自主导航,其核心制导系统由麻省理工学院仪表实验室(今德雷珀实验室)开发。该系统的关键组成部分是阿波罗制导计算机。每次任务配备两台完全相同的AGC(指令舱和登月舱各一台),但运行不同的软件以适应各自任务,且软件在后续任务(如阿波罗17号)中不断演进。
以现代标准衡量,AGC的性能极其有限:
- 内存:2048字(约3840字节)的RAM,36864字(约69120字节)的只读内存。
- 处理速度:每秒最多执行约85,000条指令。
- 物理参数:尺寸24.250" x 12.433" x 5.974",重70.1磅。
尽管如此,它并非简单的计算器,而是一个支持多任务处理的复杂系统。与之配套的是显示键盘单元,为宇航员提供操作界面。登月舱配有一个DSKY,指令舱则有两个。另一重要组件是惯性测量单元,它持续监测飞船的加速度与旋转状态,并将数据反馈给AGC,从而实时确定飞船的姿态与位置。
虚拟AGC项目
本代码库是虚拟AGC项目的核心部分,该项目旨在创建一个模拟AGC、DSKY及其他制导系统部件的虚拟机。其目标是让这个被称为yaAGC的模拟器,在接收与真实AGC相同的输入信号时,能够执行原始的阿波罗软件并产生相同的行为。
项目内容
本项目提供开源代码,包含:
- 原始AGC汇编语言源代码(尽可能收集了所有任务的版本)。
- 处理AGC代码的软件工具,包括汇编器和CPU模拟器。
- 模拟外围设备(如DSKY)的软件。
- 用于登月舱中中止制导系统的类似源代码与工具。
- 关于土星火箭的发射数字计算机或双子座飞船计算机的少量材料。
项目还提供多种部署方式,推荐使用Docker来简化运行,无需在宿主系统安装依赖。通过Docker Compose可快速启动,并通过Web浏览器(noVNC,端口6080)或VNC客户端(端口5900)访问模拟界面。
项目定位与兼容性
虚拟AGC并非飞行模拟器或登月模拟器,也非飞船控制面板的行为模拟。它是一个专注于模拟AGC内部工作原理的精密计算机模型/模拟器,可作为更复杂模拟系统的一个组件。
软件兼容多种操作系统,包括:
- Linux(多数发行版)
- Windows(XP及以后版本,可能需要特定配置)
- Mac OS X(10.3或更高版本)
- 以及FreeBSD、OpenSolaris和WebAssembly(通过wasi-sdk)。
构建说明
在不同平台上构建源代码的通用步骤是解压开发快照包并运行make命令,但具体环境要求和参数各不相同:
- Linux:需要安装一系列开发库(如SDL、ncurses、wxWidgets等),然后执行
make。
- Windows:需在MinGW/MSYS环境中预先安装SDL、wxWidgets、pthread等依赖库,然后使用特定参数(如
WIN32=yes)构建。
- Mac OS X:需要预先准备好Terminator应用,然后使用
MACOSX=yes参数构建。
- FreeBSD:使用
FREEBSD=yes参数构建。
- WebAssembly:使用
WASI=yes参数,目前仅能编译yaAGC组件。
构建完成后,生成的可执行文件及相关资源位于临时目录中,通常可移动至用户目录(如~/VirtualAGC)以便使用。