AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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

2021-05-14 13:396778

评论

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

Jupyter Notebook 遇上 NebulaGraph,可视化探索图数据库

NebulaGraph

AI Jupyter Notebook 图数据库

干货|app自动化测试之Capability 使用进阶

霍格沃兹测试开发学社

悦数图数据库:发布 AI 大模型解决方案,开启「图+ 大模型」应用新范式

悦数图数据库

数据库 图数据库 分布式图数据库 NebulaGraph 悦数

【我和openGauss的故事】使用Ora2Pg迁移oracle数据到openGauss

daydayup

Last Week in Milvus

Zilliz

非结构化数据 Milvus Zilliz 版本更新 AIGC

PoseiSwap 开启“Poseidon”池,治理体系或将全面开启

西柚子

技术分享 | app自动化测试(Android)--高级定位技巧

霍格沃兹测试开发学社

干货|app自动化测试之Appium问题分析及定位

霍格沃兹测试开发学社

技术分享 | 测试平台开发-前端开发之Vue.js 框架

霍格沃兹测试开发学社

软件测试/测试开发丨Python 内置库 json

测试人

Python json 软件测试

融云:从「对话框」跳进魔法世界,AIGC 带给社交的新范式

融云 RongCloud

人工智能 AI 通信 社交 AIGC

文件传输软件的市场现状和未来趋势

镭速

文件传输软件

接口测试实战| GET/POST 请求区别详解

霍格沃兹测试开发学社

Uiautomator2.0

霍格沃兹测试开发学社

瓴羊Quick BI:数据大屏可视化展示,助企业提升竞争优势

巷子

企业文件传输软件安全性分析与对比

镭速

文件传输软件

ThreadLocal

红袖添香

Java ThreadLocal ThreadLocalMap Java 线程

瓴羊Quick BI在Gartner魔力象限中脱颖而出

夜雨微澜

技术分享 | Selenium多浏览器处理

霍格沃兹测试开发学社

【我和openGauss的故事】在vm中安装openEuler及使用yum安装openGauss

daydayup

【我和openGauss的故事】带有out参数的存储过程及自定义函数的重载测试

daydayup

全网首档操作系统探访体验栏目“龙蜥+超级探访”震撼上线!看国产 OS 如何乘风破浪

OpenAnolis小助手

开源 操作系统 龙蜥 统信软件 超级探访

8月征文:今天你 ARTS 打卡了吗?【中奖名单见文末】

InfoQ写作社区官方

ARTS 打卡计划 征文活动 热门活动

不可错过!12个编写整洁Java代码的最佳实践方法

飞算JavaAI开发助手

自动化实践-全量Json对比在技改需求提效实践

得物技术

json 自动化 测试 企业号 8 月 PK 榜

测试必会 Docker 实战(一):掌握高频命令,夯实内功基础

霍格沃兹测试开发学社

恭喜!杭州悦数成为「大数据技术标准推进委员会」2023 年度合作伙伴

悦数图数据库

数据库 图数据库 NebulaGraph

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