来自Reddit上SpaceX软件团队的AMA(19:00 UTC开始)

2020-06-07 03:56:06

我们使用C&;C++开发飞行软件,使用HTML、JavaScript和CSS进行显示,使用Python进行测试。--索非亚。

我们能想到的每一种方法!单元测试、集装箱化集成测试(您可以在自己的机器上进行完整的物理模拟),以及在真实飞行硬件上的完全启动(硬件在环)测试-同样,使用完整的模拟。将飞行软件与模拟器配对是我们拥有的最强大的工具,特别是当它在真实的硬件上运行时。我们可以模拟整个任务,甚至可以模拟许多详细的故障场景,车辆硬件只需放在实验室的桌子上。--迪特里克。

在汽车上(对于鲍勃和道格的显示器),这是相当容易的。为了让它落到地面上,我们有一些很好的通信链路和地面网络,使我们能够非常迅速地从车辆上获得大量数据。--迪特里克。

Dragon和Falcon没有使用任何ML技术,但这并不是说这样的东西不会出现在SpaceX的未来!--迪特里克。

在Dragon上,我们定期削减版本,以便在车辆集成和测试时使用,并通过一系列测试和数据审查运行该版本。同样,当我们重新阅读飞行时,我们削减了一个版本,并针对我们代码的特定修订运行整套案例。-温迪。

9A。在Dragon上,我们在硬件方面有很多冗余(多台计算机、传感器、执行器等),但也使用软件来处理对故障的响应。美国宇航局的要求是,我们的飞行器必须具有2级容错能力(即能够安全地从空间站撤退和/或载人飞船安全返回),因此我们同时进行分析和测试,以确保我们满足这种容错能力。-温迪。

9B。在Starlink上,我们设计的系统可以让卫星在发生故障的情况下,由于大气阻力而迅速被动脱轨(尽管如果可能,我们会努力主动脱轨)。我们在车内仍然有一些冗余,这很容易,也很有意义,但我们主要相信有系统级的容错能力:考虑到可以为一个用户服务的多颗卫星。发射更多的卫星是我们的核心能力,所以我们通常会在任何可能的地方使用这种容错能力,而且它允许我们在大多数情况下提供更好的服务,当出现问题的时候。-哑光