写点什么

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:396477

评论

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

真正的AGI,既然是高度仿真人类的,是否可能也要经历过恐惧的体验?

FinClip

GaussDB(DWS)集群中寻找节点CPU占用高的语句

华为云开发者联盟

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

〖产品思维训练白宝书 - 认知篇③〗- 产品思维 VS 技术思维

哈哥撩编程

#产品思维

月光宝盒(vivo流量录制回放平台)正式对外开源

vivo互联网技术

自动化测试 流量回放 流量录制

CVPR 2023 | 单阶段半监督目标检测SOTA:ARSL

飞桨PaddlePaddle

深度学习 目标检测 百度飞桨

共享资源的保护:使用RWMutex的正确姿势

Jack

聊聊业务高可用和应用高可用

老张

高可用 高可用架构 稳定性保障

AI日课@20230406:一次毫不费力的ChatGPT内部分享

无人之路

ChatGPT

【3.31-4.7】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

BSN季度版本2023年3月31日迭代更新

BSN研习社

华泰证券与易观千帆达成合作,促进数字用户活力

易观分析

金融 证券

StampedLock:JDK1.8中新增,比ReadWriteLock还快的锁

华为云开发者联盟

线程 开发 华为云 华为云开发者联盟 企业号 4 月 PK 榜

互联网坊间鄙视链,现在反过来了?

博文视点Broadview

平均互信息与条件熵

timerring

信息论

请您关注我们! 开源免费独立站BeikeShop——新一代跨境电商系统

BeikeShop

开源 跨境电商 电商系统 独立站 自建网站

Laplace分布算子开发经验分享

华为云开发者联盟

开发 华为云 正态分布 华为云开发者联盟 企业号 4 月 PK 榜

基于FFmpeg和Wasm的Web端视频截帧方案

百度Geek说

ffmpeg webassembly 企业号 4 月 PK 榜 视频截帧

基于OCR进行Bert独立语义纠错实践

华为云开发者联盟

人工智能 华为云 OCR 华为云开发者联盟 企业号 4 月 PK 榜

最佳实践:马来西亚第一大电子钱包通过阿里云EMAS测试提效6倍

云布道师

阿里云

WorkPlus企业IM即时通讯私有化部署,从源头把控安全

WorkPlus

pnpm 之降本增效

京东科技开发者

前端 npm 企业号 4 月 PK 榜 node_modules

IO流中「线程」模型总结

Java 架构

京东LBS推荐算法实践

京东科技开发者

算法 推荐算法 企业号 4 月 PK 榜 排序模型 LBS推荐算法

移动端动态更新背后的原理及技术原理

没有用户名丶

天翼混合云一体机iStack解决方案直播

天翼云开发者社区

Redis集群介绍及测试思路

京东科技开发者

redis redis集群 主从复制 redis哨兵集群 企业号 4 月 PK 榜

DevEco Device Tool 3.1 Release新版本发布,新增资源管理器、SFTP、HDC

HarmonyOS开发者

HarmonyOS

软件测试丨构建高效的Web自动化测试环境及Web自动化测试实战

测试人

软件测试 自动化测试 测试开发 Web自动化测试

一个 OpenTiny,Vue2 Vue3 都支持!

Kagol

typescript 开源 前端 Vue3 UI组件库

BSN-DDC基础网络详解(七):BSN-DDC官方合约市场

BSN研习社

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