Hotdry.

Article

SpaceX Starship v3 飞行软件架构:实时遥测管道与自主着陆编排

解析 Starship v3 的飞行软件架构,从 10Hz/50Hz 控制循环、三冗余计算机到发动机控制回路和自主着陆序列的工程实现要点。

2026-05-23systems

当 Starship v3 点火升空时,33 台猛禽发动机同时喷射出超过 1700 万磅的推力,将 5000 吨级的火箭推离发射台。在这一刻,维持这台复杂机器稳定飞行的不是液压机械,而是分布在多台冗余计算机上的实时飞行软件。这套系统必须在毫秒级时间内完成传感器数据采集、状态估计、控制指令计算和执行器驱动,任何延迟或错误都可能导致灾难性后果。

控制循环架构:硬实时的时间片哲学

SpaceX 的飞行软件核心采用经典的 ** 控制循环(Control Cycle)** 架构。根据 Dragon 软件负责人 Steven Gerding 的描述,这个循环遵循固定的节奏:读取所有输入(ADC 传感器、网络数据包、IMU、星敏感器、地面指令),处理数据以确定飞行器状态(位置、速度、姿态、生命支持系统状态),计算并写入输出(阀门开关、推力矢量控制、遥测数据),然后等待下一个时钟周期重复整个过程。

这种架构对时序有着严苛要求。在 Dragon 飞船上,主飞行计算机以 10Hz 运行,负责整体任务管理和向子系统发送指令;而需要更快响应的子系统(如姿态控制、发动机调节)则以 50Hz 运行。这种分层时钟设计让关键回路获得 20ms 的响应时间,而任务级决策则有 100ms 的缓冲。

Starship v3 的规模将这种架构推向极限。相比 Dragon 的 16 台天龙发动机,Starship 超级重型助推器搭载 33 台猛禽发动机,每台都需要独立的节流控制、燃料混合比调节和故障监测。软件必须并行管理数百个传感器输入和数十个执行器输出,同时保证各控制回路互不干扰。

遥测管道:从传感器到地面的数据流

飞行软件的输入端连接着遍布火箭的传感器网络。内部监测包括温度、舱压、氧气 / 二氧化碳浓度(载人任务时)、燃料箱压力;外部导航则依赖 IMU(惯性测量单元)、GPS、星敏感器,以及在接近空间站时使用的激光测距仪。

遥测系统将这些数据以键值对形式流式传输,每 20-100 毫秒更新一次。地面阶段,数据通过有线连接以高带宽传输;升空后,则通过多种通信系统向地面发送不同子集的遥测数据。这种分级传输策略确保关键数据实时可达,同时避免通信链路拥塞。

传感器融合是状态估计的核心。飞行软件需要整合 IMU 的高频加速度数据、GPS 的绝对位置信息、星敏感器的姿态参考,以及发动机推力反馈,构建出火箭的完整运动状态。这种多源数据融合在 "腹部翻转" 再入机动和垂直着陆阶段尤为关键,因为此时大气扰动和燃料晃动会引入显著噪声。

发动机控制回路:毫秒级的推力协调

33 台猛禽发动机的协调控制是 Starship v3 软件最复杂的挑战之一。每台发动机都有独立的涡轮泵转速、燃料阀门开度和喷管矢量控制。飞行软件必须在每个控制周期内:

  1. 读取各发动机的推力反馈、温度、振动传感器数据
  2. 计算当前推力矢量与目标轨迹的偏差
  3. 调整单台发动机的节流阀和矢量喷管角度
  4. 检测异常(如燃烧不稳定、涡轮泵超速)并触发保护逻辑

这种多变量控制问题需要处理发动机间的耦合效应 —— 一台发动机的推力变化会影响整体质心和气动特性,进而影响其他发动机的姿态控制需求。软件采用分层控制策略:底层 PID 回路处理单发动机调节,中层协调器管理发动机集群,顶层制导算法规划轨迹。

故障隔离是设计的核心原则。如果某台发动机的软件出现错误,系统必须确保该错误不会扩散到生命支持或导航系统。SpaceX 通过严格的子系统隔离和错误代码检查实现这一点 —— 每个组件都检查返回值,异常被捕获并限制在局部范围内。

自主着陆序列:从轨道到着陆台的决策链

Starship 的自主着陆是软件决策能力的终极考验。整个过程分为多个阶段:

再入阶段:软件根据当前位置、速度、大气密度预测落点,调整 "腹部翻转" 姿态以产生气动阻力。星敏感器提供姿态参考,IMU 监测角速度,GPS(或惯性导航)跟踪位置。

着陆燃烧启动:在预定高度,软件触发发动机重启序列。由于燃料在微重力环境下可能漂浮,推进剂沉淀(slosh)模型必须预测燃料液面位置,确保发动机启动时燃料供应稳定。

垂直下降与精确着陆:软件实时生成参考轨迹,根据实际位置偏差调整推力大小和矢量方向。激光雷达或视觉系统在接近地面时提供相对位置信息,补偿 GPS 误差。最终触地瞬间,软件必须在毫秒级时间内关闭发动机并锁定阀门。

整个序列完全自主执行,但保留了机组人员手动接管的能力。这种 "人在回路外" 的设计哲学体现了 SpaceX 对软件可靠性的信心。

三冗余架构:容错设计的工程实践

为满足 NASA 对载人任务的要求,SpaceX 实现了三冗余计算机架构(Triple String),系统必须能够容忍任意两个故障。三台独立的飞行计算机并行运行相同的软件,通过投票机制检测不一致。如果某台计算机的输出与其他两台不符,其结果被丢弃,系统继续以剩余两台运行。

这种架构与 Google 等互联网公司的分布式系统理念截然不同。在互联网服务中,单个进程失败被视为正常信号,系统可以重启该进程并从负载均衡中剔除;但在载人火箭上,软件进程失败绝不能导致整个系统停机。SpaceX 的设计理念是:即使某个软件组件失败,其余未受影响的组件必须继续运行,尽可能维持控制能力。

工程启示:从 C++ 到领域特定语言

SpaceX 的飞行软件主要使用 C++ 编写,但团队开发了领域特定语言(DSL),让非软件工程师(如推进系统工程师、气动工程师)能够配置控制参数。这种设计将领域知识直接注入软件配置,减少翻译过程中的信息损失。

另一个关键经验是 ** 验证与确认(V&V)** 的工作量占比。Gerding 指出,编写代码只是整个软件交付工作的一小部分,绝大部分精力投入到测试、仿真和验证中。SpaceX 使用硬件在环仿真器,在地面模拟完整的飞行任务,验证软件在各种故障场景下的表现。

对于需要高可靠性实时控制的系统(如工业机器人、自动驾驶车辆、能源基础设施),Starship 的架构提供了可借鉴的范式:硬实时控制循环、分层时钟设计、子系统隔离、三冗余容错、以及将领域专家纳入配置流程的 DSL 策略。这些原则同样适用于地球上的复杂控制系统设计。


资料来源

  • Stack Overflow Blog: "Don't push that button: Exploring the software that flies SpaceX rockets and Starships" (2021) — Steven Gerding 访谈
  • Perplexity 搜索聚合:SpaceX Starship 飞行软件架构公开资料

systems

内容声明:本文无广告投放、无付费植入。

如有事实性问题,欢迎发送勘误至 i@hotdrydog.com