【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

SpaceX 龙飞船性能要求严苛,软件开发存挑战

  • 2021-05-14
  • 本文字数:2105 字

    阅读完需:约 7 分钟

SpaceX龙飞船性能要求严苛,软件开发存挑战

SpaceX 的载人龙飞船又一次与国际空间站成功对接,但在软件开发方面仍面临一系列特殊挑战。

SpaceX 软件开发存挑战


北京时间 2021 年 4 月 23 日 17 时,SpaceX 进行了该公司 2021 年的首次载人发射,地点位于美国佛罗里达州肯尼迪航天中心,目的地是国际空间站。据俄罗斯卫星网报道,北京时间 4 月 24 日 17 时,搭载四名航天员的载人龙飞船已与国际空间站完成对接。这意味着,SpaceX 的载人龙飞船又一次与国际空间站成功对接。


据了解,这是 SpaceX 第三次载人发射,也是第二次正式商业载人发射。不过 SpaceX 龙飞船软件开发负责人 Steven Gerding 在近期接受 Stack Overflow 采访时表示,SpaceX 公司在开发软件过程中仍面临一系列特殊挑战。


据 Gerding 介绍,SpaceX 的火箭飞行软件以控制周期为核心构建而成,软件需要读取所有输入:通过 ADC 读取到的传感器信息、来自网络的数据包、来自 IMU 的数据、来自恒星跟踪器或制导传感器的更新、还有来自地面控制台的指令等。开发人员需要对这些信息进行处理以确定当前状态以及输出结果,等到下一个时钟周期到来后再重复一遍整个过程。


这种对控制周期的强调给软件提出了一系列严苛的性能要求。Gerding 表示,“在龙飞船上,某些计算机会以 50 赫兹的频率运行控制周期,也有一些计算机的运行频率为 10 赫兹。主飞行计算机的运行频率就是 10 赫兹,它负责管理整体任务并向其他计算机发送指令。至于那些运行频率为 50 赫兹的计算设备,是为了对某些特定任务更快做出反应。”


至于飞船突然出故障了怎么办,Gerding 称“如果是硬件出了问题,那答案非常明确。我们设计了全面的硬件备份,包括计算机硬件、传感器乃至执行器;我们可以及时检测到故障并快速完成线路切换。”


同时,Gerding 也表示,任何软件都不可避免会存在某些 bug。“所以我们只能在软件设计当中,尽量保证把出现故障后的实际影响降到最低。”例如,如果推进系统中出现软件错误,那么飞船的生命支持系统或者负责操纵飞船的制导系统不应该受到影响,反之亦然。“将不同子系统妥善隔离起来,是解决这个问题的关键。”目前在组件之内,SpaceX 同样尝试分段隔离错误影响。“我们一直在检查错误代码与返回值,同时对操作人员及机组人员进行培训,帮助他们深入了解算法的具体细节。”


此外,验证与确认流程也占据了整个软件开发周期中的大部分时间。“从软件本体编写完成到让它在航天器上顺畅运行,中间还有很长的调试道路要走。”

SpaceX 飞船技术栈


SpaceX 载人龙飞船多次成功发射的同时,很多技术人员对其应用到的技术栈也非常关注。


事实上,SpaceX 的软件工程师曾在 2013 年做过一次公开回应,可以总结出一些相关信息:SpaceX 使用 Actor-Judge 系统为火箭和航天器提供三重冗余。Falcon 9 具有 3 个双核 x86 处理器,每个核上都运行着 Linux 实例(操作系统用的是 Linux,还有 LabVIEW 和 Matlab)。飞行软件是用 C/C++ 编写的,并且在 x86 环境中运行 (SpaceX 猎鹰九号和龙飞船用的都是 Intel 双核的 x86 处理器),整个主控程序只有几十万行代码。


注:LabVIEW 是美国国家仪器公司所开发的图形化程序编译平台。


对于每个计算和决定,字符串都会比较不同核的返回结果。如果存在不一致,则字符串返回是错误的,并且不发送任何命令。如果都返回相同的结果,则字符串将命令发送到火箭上的各种微控制器,这些微控制器控制是诸如引擎之类的东西。


2020 年年中,SpaceX 龙飞船软件的六名技术人员在 Reddit 举行了一场以“Dragon 有问必答”为主题的线上问答会,在问答会上,技术人员 Josh 证实了火箭和飞船的主要编程语言是 C++ 这一说法,他表示:“所有应用程序级自主软件都是用 C ++ 编写的。尽管我们希望编程尽可能简单些,但通常,我们在使用面向对象的编程技术时会选择使用 C++。”


此外,网友也比较关心 SpaceX 的技术栈是什么?它们主要是开源还是内部框架?这一问题 Sofian 给出了回答,他称:“我们使用 C 和 C++来制作飞行软件,HTML、JavaScript 和 CSS 用于显示,python 用于测试。”


在被问到所使用的 Linux 发行版是什么时,Dietrick 表示,“我们不使用任何现成的发行版,我们有自己的发行版。”


至于在飞行过程中如何执行错误检测和纠正这一问题,Josh 给出的回答是:“我们在飞船上部署了多台冗余计算机,并对其输出进行投票,这样就可以处理计算机中由辐射引起的错误。通过使用多个不同的传感器来处理传感器中的错误。而数据传输中的错误则通过使用附加到有效负载的错误检测或错误纠正代码来处理。”


据了解,SpaceX 的软件工程师主要工作就是编写火箭和航天器上运行的代码以及火箭和航天器的设计和制造过程的代码,内部分为飞行软件、企业信息系统、地面软件及航电测试四个团队,人数在几个到数十个人员不等,分别承担不同的研发任务。


此外,SpaceX 的龙飞船主控系统的芯片组仅用了 2.6 万人民币。要知道,这与其他载人飞船搭载的星载计算机和控制器相比(超过一亿人民币),成本极低。


参考链接:


https://stackoverflow.blog/2021/05/10/dont-push-that-button-exploring-the-software-that-flies-spacex-starships/


https://www.infoq.cn/article/sYZCchfcGX2OSADXPKCP


https://www.infoq.cn/article/lIEeT32g4AWk5GSEY3VS

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2021-05-14 13:395750

评论

发布
暂无评论
发现更多内容

Knative Autoscaler 自定义弹性伸缩

天翼云开发者社区

DAAM:首次利用视觉语言学解释大型扩散模型

Zilliz

开心档之boostrap按钮组

雪奈椰子

bootstrap 开心档

“云”上书店,氛围感拉满!

天翼云开发者社区

舞台LED显示屏对灯光设计产生了哪些影响

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家

Fastjson踩“坑”记录和“深度”学习

阿里技术

Fastjson

Java程序员:为了跳槽刷完1000道真题,想不到老板直接给我升职了

程序知音

Java java面试 Java面试题 Java面试八股文 后端面试

2023年互联网大厂泄露的这1300多道JAVA面试题,包含了程序员的所有技术点

架构师之道

Java 程序员 java面试

《解构领域驱动设计》-领域驱动设计统一过程

珑彧

Java 读书笔记 架构 方法论 领域驱动设计

云端智创 | 基于视频AI原理的音视频智能处理技术

阿里云视频云

云计算 音视频

一文详解数GaussDB(DWS)函数出参带出方式

华为云开发者联盟

数据库 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

模块1作业

抹茶柠檬

架构实战营

带你动手做AI版的垃圾分类

华为云开发者联盟

人工智能 华为云 企业号 2 月 PK 榜 华为云开发者联盟 垃圾分类

iOS AppStore上架流程图文详解2021版 (上)

雪奈椰子

ios apple 上架 apps

开心档之bootstrap折叠

雪奈椰子

bootstrap

领导者!天翼云蝉联政务公有云基础设施市场第一

天翼云开发者社区

Apipost参数描述的填写和参数描述库的使用

爱研究代码的极客人

Postman 参数 参数定义 apipost

全板电镀与图形电镀,到底有什么区别?

华秋电子

PCB PCB生产

开心档之boostrap轮播

雪奈椰子

bootstrap 开心档

天翼云第八代云主机助力企业攻克上云“大象流”加密处理业务难题

天翼云开发者社区

快速入门API Explorer

华为云开发者联盟

云计算 华为云 API Explorer平台 企业号 2 月 PK 榜 华为云开发者联盟

一步一腳印的 iOS App 上架和更新流程

雪奈椰子

ios apple 上架 apps

3Dmax和C4d有什么区别?

Finovy Cloud

3DMAX

开心档之bootstrap卡片

雪奈椰子

bootstrap 开心档

如何将物理机Windows系统迁移到VMware虚拟机?

天翼云开发者社区

如何在 Web 端实现一个多人数独游戏

声网

Vue 互动白板 RTE

职场IT老手教你3步教你玩转可视化大屏设计,让领导眼前一亮!

葡萄城技术团队

开心档之boostrap按钮2

雪奈椰子

bootstrap 开心档

共铸国云智领未来| 数据进超市,海岛更善治

天翼云开发者社区

JVM说--直接内存的使用

京东科技开发者

JVM io nio 虚拟机 企业号 2 月 PK 榜

产研指南针的量化指标实践笔记

车江毅

项目管理 研发管理 降本增效 北极星指标 效能度量

SpaceX龙飞船性能要求严苛,软件开发存挑战_语言 & 开发_凌敏_InfoQ精选文章