不要按下那个按钮:探索飞SpaceX火箭和星际飞船的软件

太空飞行从一开始就依赖于计算机——无论是地面还是航天器。SpaceX 将其带到了一个新的水平。我们最近与龙的软件开发负责人史蒂芬·格丁(Steven Gerding)进行了交谈,谈到了软件开发对 SpaceX 许多任务的特殊挑战。

2021年4月23日,SpaceX和美国宇航局向国际空间站发射了"龙"号的第二次飞行任务(Crew-2),成为首次载人航天飞行任务,将宇航员送上经过飞行验证的猎鹰9号和"龙"号。大约24小时后,龙自主地与空间站对接,成为第一次两艘船员龙同时连接到轨道实验室。这标志着SpaceX新时代的开始,它将致力于将宇航员定期送上国际空间站。

Gerding 等车辆工程师的实际软件开发工作主要使用C++完成,自公司成立初期,C++一直是公司代码的支柱。该软件读取基于文本的配置文件。"我们发明了简单的域名特定语言来表达这些内容,这样公司中其他不是软件工程师的工程师也许可以配置它。

SpaceX 火箭的飞行软件围绕控制周期的概念构建。Gerding 解释道:"您阅读了所有输入:我们通过 ADC 读入的传感器、来自网络的数据包、来自 IMU 的数据、来自恒星跟踪器或制导传感器的更新、来自地面的命令。你做一些处理那些决定你的状态,如你在世界上的位置或生命支持系统的状态。这决定了你的产出——你写那些,等到时钟的下一个滴答声,然后再做一遍。

控制周期突出显示了软件的某些性能要求。"在 Dragon 上,有些计算机在 50 赫兹运行[控制周期],有些计算机在 10 赫兹运行。主飞行计算机在赫兹10点运行。这是管理整个任务,并将命令发送到其他计算机。其中一些需要对某些事件做出更快的反应,因此这些事件的运行速度为 50 赫兹。

有各种各样的机器与中央飞行系统交谈。"我们从车辆上的传感器、各种不同的传感器中输入。许多人正在测量对船舶和船员健康至关重要的内部值。"温度很重要。对于乘员车辆,我们有氧气和二氧化碳传感器、客舱压力传感器等。

另一组传感器从外部看有助于导航和遥测。"这就像IMU、GPS和星形跟踪器。一旦它们离空间站足够近,它们也会使用激光测距仪。

控制周期的另一边是输出。"有两种不同类型的输出。一种是实际"打开或关闭阀门"或"打开或关闭开关"。另一个是遥测,这基本上是一个键值对流,每20到100毫秒,告诉你某一事物的价值。

有时结果直接来自传感器作为原始数据。但涉及其他时间处理。它可以是软件的某种计算值,例如状态机器的当前值或驱动输出的算法的结果。

当车辆在地面上时,数据会通过硬连线连接,该连接提供高数据速率。"一旦它升空,就有不同的通信系统,我们可以将遥测的不同子集输送到地面。一旦它到达地面,系统就存在,让操作员查看瞬时值并做出命令车辆。还有一个系统,存储关键数据为后代,这是相当重要的,当你计划在未来的任务中重复使用助推火箭和航天飞机。

龙目前自动与国际空间站对接,最终目标是使飞行器完全自主。格丁说:"如果需要的话,我们确实有能力让宇航员控制和驾驶飞行器——这是我们在"龙演示-2"任务中展示的能力。

我们问如果出现故障会发生什么情况。"我想,更明显的是,当硬件出现故障时该怎么办。我们有硬件的副本,无论是计算机硬件还是传感器或执行器,因此我们检测这些故障和围绕它们的路线。

格丁指出,没有办法防止任何任意的软件错误。"我们尝试以一种如果失败的方式设计软件,那么该失败的影响是最小的。例如,如果推进系统中出现软件错误,则不会影响生命支持系统或引导系统引导航天器的能力,反之亦然。"隔离不同的子系统是关键。

该软件是防御性的,即使在组件内,SpaceX 也试图隔离错误的影响。"我们始终检查错误代码和返回值。我们还能够让操作员或船员覆盖算法的不同方面。

整个软件开发过程的一大部分是验证和验证。编写软件是让它准备好在太空飞行器上飞行的实际比例的一小部分。

随着第一个演示任务(Demo-1)进入空间站,美国宇航局要求该软件能够容忍系统中的任何两个故障。"我们实现了这种三字符串计算机架构,我们需要系统来驱动它。Gerding 以前在 Google 工作过一些分布式系统经验,因此非常适合执行新任务。"当时软件团队中只有 10 人。我拿起它,然后带着它走了。我发现这种东西,分布式系统,真的很有趣。

谷歌对工作时间要求的处理方式不同。"你真的希望你的过程失败,如果发生异常的事情。这是数千个类似的过程之一,然后将重新启动。如果你有足够的这些失败,你会被页面化,并可能花一些时间来弄清楚问题是什么,并建立一个解决方案来解决它。

在谷歌,这些事故是噪音中的一个有用的信号。但是这种方法对载人火箭不起作用。"在 SpaceX,我们真的不希望我们的流程因软件故障而失败。我们宁愿继续使用实际上不受故障影响的其余软件。我们仍然需要知道这种失败,这就是遥测因素所在,但我们希望事情继续下去,尽我们所能控制它。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值