写点什么

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

评论

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

工业互联网的破局密钥——低代码开发

力软低代码开发平台

关于前端就业前景的一点看法

树上有只程序猿

前端 前端开发

NFT游戏模式开发,外包技术公司团队搭建

V\TG【ch3nguang】

为什么当下MES如此火热,各大制造业工厂都在推行?

万界星空科技

MES系统

“智算聚芯力 津彩新未来”天津市人工智能计算中心200P上线仪式暨天津人工智能应用创新论坛成功举办

彭飞

前端开发纷繁复杂,是否有更高效的开发方式?

高端章鱼哥

前端开发 低代码 低代码前端

HTTPS的安全体现在什么地方?

巨量HTTP

https HTTP

一文秒懂!腾讯云ES HTTPS 集群访问通信最佳实践

腾讯云大数据

ES

昇腾 AI 创新大赛2023河北区域赛成功举办,22支优秀团队脱颖而出

彭飞

夯实金融云基础设施底座,天翼云助力金融行业释放发展新活力

天翼云开发者社区

云计算 安全

安全可靠的文件传输服务助力完成更高效的医疗保健工作(下)

镭速

文件传输服务 医疗保健

研发管理的挑战、本原与方案

iSoftBook

项目管理 软件工程 研发管理平台 敏捷方法 研发云平台

华为云云耀云服务器L实例:轻量级应用服务器也能有高性能,助力业务快速发展

YG科技

华为云云耀云服务器L实例:游戏开发者的高性能轻应用服务器之选

YG科技

实现 LangChain 版本的 AutoGPT 项目的图形化界面

赤色闪电

k8s优雅停服

tiandizhiguai

DevOps kubernetes 运维

华为云云耀云服务器L实例:打造企业级高效稳定的基础云服务架构

YG科技

未来3-5年,前端开发往哪个方向发展更好就业?

互联网工科生

前端 前端开发 低代码

NFT平台搭建,如何开发一个NFT平台

V\TG【ch3nguang】

图解Kafka消费者客户端分区分配策略

石臻臻的杂货铺

Kafk

大规模流量下的云边端一体化流量调度体系

火山引擎边缘云

边缘计算 数字孪生 边缘云 火山引擎边缘云

电子行业云MES解决方案

万界星空科技

MES系统

喜讯!广通优云两大产品入选软博会“年度优秀创新软件产品推广目录”

广通优云

大模型时代的 AI 原生云

Baidu AICLOUD

AI 原生云

kill -15 与kill -9的区别

源字节1号

开源 软件开发 前端开发 后端开发 小程序开发

大语言模型测试

赤色闪电

JVM heap + non-heap是否等于 RSS?

虚实的星空

议题征集中| KCD 2023 杭州站,共话云原生技术

OpenAnolis小助手

云原生 杭州 龙蜥社区 议题征集 KCD

国产“芯”突破 | 优博讯携手海思推出AI新零售创新方案

Geek_2d6073

安全可靠的文件传输服务助力完成更高效的医疗保健工作(上)

镭速

文件传输服务 医疗保健

华为云云耀云服务器L实例:智能化、高性价比的轻量级云服务器

YG科技

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