SpaceX软件团队全方位在线技术 分析

SpaceX软件团队全方位在线技术 分析

SpaceX软件团队全方位在线技术 分析
据Starlink Rumors报道,SpaceX软件团队在Reddit上发起了AMA(Ask Me Anything)活动,团队中的6名成员在线回答网友关于Dragon、软件以及在SpaceX上工作的任何问题。

该团队帮助开发和部署了可以用于Dragon的软件,并为SpaceX的人类航天演示任务(又名Crew Demo-2)提供了触摸屏显示器。这一活动吸引了上千名网友参与讨论,累计互动量近万。本文基于团队回答的内容,整理归纳为19条SpaceX技术干货,一起来看看吧!

1、运行平台为linux

(1)配置:就Starlink的某种规模而言,每发射60颗卫星就包含4000多台Linux计算机。“星座”目前在太空中有3万多个Linux节点(和6000多个微控制器)。因为我们与Falcon和Dragon共享我们的很多Linux平台基础设施,他们从我们超过180多年的在轨测试时间中受益。

(2)系统:应用了PREEMPT_RT补丁,以获得更好的实时性能。不使用任何第三方发行版,但保留了自己的内核和相关工具的副本。这些年来,我们对内核做了一些小的修改,尽管大部分都没有修改过。唯一的例外是添加了几个自定义驱动程序来与我们的硬件接口。我们使用多种硬件架构。

2、每天产生超过5TB的数据量,在轨检测问题可减少发送的数据量

对于Starlink,我们现在每天产生超过5TB的数据!我们正在积极减少每个设备的发送量,但我们也在迅速增加系统中的卫星(和用户)数量。就分析而言,在轨检测问题是减少我们需要发送和存储的遥测数据量的最好方法之一(只在有趣的时候发送)。我们使用的报警系统是Starlink和Dragon共享的。

3、设置了卫星的冗余策略,以发射更多卫星作为核心竞争力

在Starlink上,我们设计了这样一个系统,在卫星失效的情况下,卫星会由于大气阻力而被动地快速脱离轨道(尽管我们努力在可能的情况下主动脱离轨道)。我们在飞船内部仍然有一些冗余,这很容易,也很有意义,但我们主要相信系统级的容错能力:多颗卫星可以为用户服务。发射更多的卫星是我们的核心竞争力,所以我们通常在任何可能的地方使用这种容错,它让我们在大多数没有问题的时候提供更好的服务。

4、采用web开发的模式开发卫星星座,做了很多定制的ASIC开发工作

对于Starlink来说,我们需要把我们的卫星看作是数据中心的服务器。有些需要绝对确定(命令、软件更新、电源和硬件安全)的测试,会用到特定的用例。对于其他很多事情则采用类似于web开发的方法,可以在一小部分卫星上部署一个测试构建,然后与其他卫星进行比较。可以不停地发现问题、暂停、回滚,然后再试一次。比如,一个在轨卫星出现了从未想到过的故障,但是它能够保证自身的安全,就可以有足够长的时间来调试它,找出解决办法或解决办法,并进行软件更新。spaceX在Starlink项目中做了很多定制的ASIC(特殊应用集成电路)开发工作。

5、每周更新Starlink上的软件,并进行一些小规模的测试

Starlink的硬件非常灵活——它需要大量的软件才能工作,软件上的小改进可以对提供的服务质量和服务人数产生巨大的影响。倾向于每周更新运行在所有Starlink卫星上的软件,同时也进行一些小规模的测试部署。地面系统或设施倾向于每周部署几次或更多。

6、卫星长时间未收到地面信号时会因阻力被拉下轨道

如果卫星长时间没有收到地面信号,它们就会进入高阻力状态。这使得大气阻力以一种非常可预测的方式将它们拉下来。

7、Falcon9和Dragon之间有什么样的控制程序,使用什么通信连接

有许多计算机在载具上,每个都建造和配置最适合它的任务分配。它们都在时间上同步运行,飞行计算机监控所有的动作。几乎所有的东西都可以表示为一个实时控制循环: 读取一些传感器,做出一个决定(传感器和过去状态的组合) ,然后将决定的输出返回到硬件。这种情况每秒发生很多次。

8、在 Falcon9上运行的控制软件是同一个源代码,但会定期更新,并且在每次任务中加入新代码

我们在每次任务中都会在 Falcon 上运行相同的源代码,尽管我们仍在定期更新软件,并且通常在每次任务中都会有新的代码。我们还对其他工程团队提供的软件有信心,这些团队通常会改变每个任务。这些修改包括状态机、容错阈值、发射日风等,这些都是软件用来操作飞行器的。

9、自动飞行安全系统软件的工作原理

自动飞行安全系统(AFSS)软件运行在一组独立于飞行计算机的微控制器上。它直接接收传感器输入(例如 IMU 测量)以及飞行计算机的一些计算输入。任务数据加载配置 AFSS,在这种情况下可能需要终止飞行,如火箭偏离轨道,失去所有加速度等。

10、Falcon/Dragon使用的开源软件

Linux kernel、Chromium、Das U-Boot, Buildroot, MUSL. Outside of the OS 、 the Crew Displays software

并没有使用很多外部软件,而是尽量保持程序简单、精简,并且基于开发团队自始至终理解的代码。

11、发射日当天Falcon/Dragon的软件工程开发团队做什么工作?

主要还是在飞行前的模拟场景中承担大量工作。

名义上它是支持/双重检查的能力。在任务开始之前,我们花了很多时间研究实时飞行器的数据,在飞行的所有重要阶段,我们都有任务控制中心的软件人员,以防万一。我们有一个伟大的任务培训团队,让我们的任务控制操作员在飞行前的模拟中与各种各样的场景进行竞争。

12、开发F9和Dragon软件的相关解答

(1)所有自有的应用级软件都是用c++编写的,采用面向对象编程技术

(2)使用开源库,主要是标准c++库,再加上一些其他的。只使用高质量的库,并且在可行的情况下经常选择开发自己的库。

(3)飞行软件使用c++,测试使用python。显示使用HTML、JavaScript和CSS,并大量使用Web组件。

(4)显示:目前在“猎鹰”和“龙”任务控制中看到的地面显示是基于LabVIEW的,但我们的机组人员显示和未来的“星舰”地面显示是基于web堆栈的。

(5)测试软件的方式:能想到的所有方法!

①单元测试、包含的集成测试(您可以在自己的机器上运行这些测试,并进行完整的物理模拟),以及在实际飞行硬件上进行完整的“HITL”(半实物)测试——同样是完全模拟的。

②对于每一个飞行器,我们在回路模拟器中都有一个硬件(所有的飞行关键硬件加上模拟物理和传感),在将其部署到生产的飞行器或用于飞行之前,我们对其进行了大量的测试。

③手工验证和文档化我们的新特性,以确保它们按照预期工作

④通过CI系统持续运行这些测试,并运行自动数据检查,以确保不会出现意外行为。

13、在飞行过程中进行错误检测和纠正的方式

(1)计算机中的辐射引起的误差:通过使用多个冗余计算机并对其输出进行投票来处理。故障计算机可以重新启动和重新合并到系统中,一旦它恢复,这恢复原来的容错。

(2)传感器中的错误:通过使用多个不同的传感器来处理。为了校正/检验传感器数据,在一些应用中使用卡尔曼滤波器(Kalman filters),还为许多传感器采用了更简单的方法,比如基本的健康检查或低通滤波。

(3)数据传输中的错误:通过附加在有效载荷上的错误检测或错误纠正码来处理的。

14、为了飞行中的应急,把所有东西几乎都准备了三份

在我们的软件中,偶然性以多种形式出现。如上所述,我们几乎把所有东西都翻了三倍,这样我们就能容忍猎鹰上任何一台飞行计算机、传感器、驱动器等的丢失,而龙上任何两台都可以。在系统层面上,“猎鹰”和“龙”的设计是为了让引擎作为推进器的损失可以被容忍,而我们的算法可以进行补偿。我们还可以向状态机添加某些偶发事件。例如,Dragon状态机被设计成在观察到某些故障时自动从方法切换到爆发。

15、整个软件团队都从Bob和Doug那里得到了关于软件各个方面的反馈

虽然Bob和Doug主要关注的是显示器、按钮面板和音频系统,但他们也对整个软件的工作方式非常感兴趣,特别是在紧急情况下可能需要的备份功能。他们的反馈对改善这个系统是非常宝贵的

16、Dragon不使用任何人工智能,但使用了一些计算机视觉来导航

17、跟踪代码性能的方式——使用持续集成系统

使用一个持续集成系统,这样我们的代码就会一直被测试,但我们也会实时分析这些数据,以确保我们的性能指标在预期的范围内。这些案例是这样设置的,如果我们违反了任何关键性能指标,案例就会“失败”,工程师会查看。

18、保证Starlink安全性的方式

1、对于安全性,通常有许多层。

(1)设计了对用户数据使用端到端加密的系统,以降低入侵卫星或网关对希望拦截通信的攻击者的作用。

(2)系统中的每一块硬件(卫星、网关、用户终端)都被设计成只运行我们签署的软件,因此即使攻击者闯入,他们也无法获得永久的立足点。

(3)加强系统的内部(包括我们数据中心的服务),使某一领域的漏洞更难以被其他地方利用。

2、使用传统网络安全保护我们的公司网络,监控网络内外的威胁,钓鱼活动等等。我们还需要分析针对我们的载具的潜在攻击,特别是围绕命令路径和最终到达载具上的代码。我们有一个专门的团队来识别我们的载具和卫星是如何被黑客攻击的,这样我们就可以在制造载具时消除或禁止这类威胁。我们还充分利用了对代码的静态和动态分析。

3、正在努力尽快建立一个bug奖励系统。

19、Dragon最有意思的功能

dragon可以与国际空间站进行复杂、精密的零重力会合,它还可以在大气层最厚的地方进行超音速、多重力的安全飞行。

发射逃生系统是dragon最酷的部分之一。同样令人惊讶的是在飞行中止试验。龙平稳地从 F9分离,打开了一个很大的分离距离,而 F9在它下面爆炸。

网友们还提出了一些有意思的问题,但是没有得到官方的回复,如果大家感兴趣的话,也可以在评论区与我们互动讨论~

1、Falcon 9第一步的嵌入式体系结构是什么样的,多少个微控制器?使用哪种总线来互连它们?这些硬件和软件的体系结构是否同质?

2、Crew Dragon的屏幕上是否有单独的芯片?如果该芯片仅用于从飞行软件接收数据并将其显示在屏幕上,SpaceX使用哪种协议或如何传输数据?如果该芯片用于自己执行一些逻辑和后端,SpaceX使用了什么工具?

3、Starlink在不同轨道平面上的卫星之间传递消息,大概是将激光瞄准特定的方向,但是,由于卫星之间可能存在一些问题会使情形变得更加复杂,或者需要处理卫星不活动等情况。SpaceX是否有现有算法可以帮助解决此问题?如何在地球上对此进行测试?

4、Dragon的逃生系统除了中止程序本身之外,是否还有其他任何预先编程的程序?在这种情况下,机组人员是否可以完全控制到达目的地?

5、SpaceX为什么不使用防辐射的计算机?虽然冗余(即容错和投票算法)可以使航天器应对辐射,但是仅适用于低辐射环境。如果在高辐射(3600雷姆)条件下,是否有(可能)消灭全部或大部分飞行计算机的潜力?


SpaceX软件团队全方位在线技术 分析

SpaceX 软件团队 Reddit 答网友问:应用级程序用 C++ 编写,测试用 Python

负责开发和部署 Dragon 软件的六名技术人员在 reddit 举行了一场以“Dragon 有问必答”为主题的线上问答会,reddit 用户可以就自己感兴趣的任何问题向技术人员提问,他们也会耐心地进行解答。参与问答的团队成员各有分工,有人负责技术管理,有人负责软件开发,有人负责网络安全问题,他们也就网友关心的如何能进入 SpaceX 公司工作给出了一些建议。
 
这六位技术人员分别是:
 
Jeff Dexter——负责运行飞行软件和网络安全;
 
Josh Sulkin —— Crew Dragon 软件设计负责人
 
Wendy Shimata ——管理 Dragon 软件团队,并负责 Dragon 的容错和安全工作
 
John Dietrick —— 领导了 Demo-2 的软件开发工作
 
Sofian Hnaide——负责 Demo-2 上 Crew Displays 软件工作
 
Matt Monson——曾在 Dragon 上工作现在负责 Starlink 软件
 
本科学历是最基本条件
在问答中,一位被猜测是高中生的 reddit 用户问道:“如果我将来想去 SpaceX 从事软件工作,应该具备什么条件?”
 
SpaceX 负责飞行软件和网络安全的 Jeff Dexter 回答道:“获得计算机科学学位或类似学位”,他表示,对学历有要求是为了“确保你真正了解必备的技术常识”。
 
他解释说:“在 SpaceX 上表现出色的工程师对他们的代码、网络、Linux 和硬件等如何工作一丝不苟”。另外,SpaceX 许多公开的工程和软件岗位的基本要求都是学士学位及以上。
 
除了学历很重要以外,团队还提到通过参与一些项目或实习工作获得相应的工作经验也十分重要。Dexter 建议说:“通过在 SpaceX 里接触一些业余项目或实习获得现实世界中的构建事物和解决难题的经验,对以后进入 SpaceX 也很有帮助”。 例如,Demo-2 软件开发工作负责人 John Dietrick 在 reddit 上说,“视频游戏开发与我们的工作之间有不少交集,这两个领域中,有很多类似的数学难题和以性能为中心的问题。”
 
学历很重要,但并不是全部。曾在 Dragon 任职,现在负责领导 Starlink 软件的 Matt Monson 表示,“团队中的成员拥有着不同的文化、教育背景,但没有多少人拥有航空背景,不同的观点可以帮助我们从不同的角度看待问题,并且通常可以帮助我们看到我们原本不会看到的解决方案。”
 
Monson 总结道:“我们欢迎的成员要具备两个基本条件:才能(潜力)和正确的态度(渴望自我完善,为团队服务而不是自私)。
 
reddit 上热门评论
在此问答环节中,涉及了很多 SpaceX 的技术栈是什么、应用的编程语言是什么以及在飞行过程中如何执行错误检测和纠正等网友们关注的问题,以下是 reddit 上热度较高的一些评论及技术团队的回答:
 
 
Crew Dragon 软件设计负责人 Josh 回答了网友们关心的开发 F9 和 Dragon 软件最常用的编程语言是什么?是 C 还是 C ++?
 
 
Josh 回答称:“所有应用程序级自主软件都是用 C ++ 编写的。尽管我们希望编程尽可能简单些,但通常,我们在使用面向对象的编程技术时会选择使用 C++。
 
针对 Dragon 上是否使用了开源库的问题,Josh 回答称:
 
我们确实使用了开源代码库,主要是标准 C ++ 库,还有一些其他库。但是,我们仅使用极高质量的开源代码库,并且在解决实际问题时会选择开发自己的库,以便我们可以自己控制代码质量。
 
网友也对在飞行过程中如何执行错误检测和纠正这一问题比较感兴趣,而 Josh 给出的回答是:
 
我们在飞船上部署了多台冗余计算机,并对其输出进行投票,这样就可以处理计算机中由辐射引起的错误。通过使用多个不同的传感器来处理传感器中的错误。而数据传输中的错误则通过使用附加到有效负载的错误检测或错误纠正代码来处理。
 
在机器学习无处不在的当下,SpaceX 是否在其软件中使用了 AI 技术这一话题也成为网友的关注点,就此问题,Dietrick 给出的回答令人有些意想不到,他表示:“Daragon 未使用任何 AI。”不过,Josh 也补充道,Dragon 确实使用了一些计算机视觉来进行导航。
 
 
此外,网友也比较关心 SpaceX 的技术栈是什么?它们主要是开源还是内部框架?这一问题 Sofian 给出了回答,他称:“我们使用 C 和 C++ 来制作飞行软件,HTML、JavaScript 和 CSS 用于显示,python 用于测试。”
 
在被问到所使用的 Linux 发行版是什么时,Dietrick 表示,“我们不使用任何现成的发行版,我们有自己的发行版。”
 
 
在提及如何测试软件时,Dietrick 回答称:“我们会用我们能想到的所有方法进行测试。单元测试、基于容器技术的集成测试(你可以在自己的机器上运行这些测试,并进行完整的物理模拟),以及在真实飞行硬件上进行的完整的“HITL”测试(同样是在完整的模拟下进行)。将飞行软件与模拟器匹配起来是我们最强大的工具,尤其是在真实硬件上运行时。我们可以模拟整个任务,甚至许多详细的故障场景,这些只需把飞行器硬件放在实验室桌子上就能完成。
 
 SpaceX软件团队全方位在线技术 分析
SpaceX软件团队全方位在线技术 分析SpaceX软件团队全方位在线技术 分析SpaceX软件团队全方位在线技术 分析SpaceX软件团队全方位在线技术 分析SpaceX软件团队全方位在线技术 分析SpaceX软件团队全方位在线技术 分析SpaceX软件团队全方位在线技术 分析

相关推荐
新闻聚焦
猜你喜欢
热门推荐
  • 巴西劫匪突袭押运公司致3死2伤 抢走大量

      新华社圣保罗4月4日电(记者荀伟)据巴西环球网报道,当地时间4日清晨,一伙武装劫匪突袭了圣保罗州桑托斯市一......

    04-05    来源:新浪新闻

    分享
  • 火遍全网的俄罗斯“三套娃”都是谁?

      瓦利耶娃,绰号K宝,只有15岁的瓦利耶娃已经是欧锦赛女单冠军,她也是本次冬奥会花滑女单的夺冠大热门,前后九次刷新世......

    02-10    来源:未知

    分享
  • 3名刚果籍联合国维和士兵被控性侵受审

      原标题:联合国驻中非维和部队被控性侵3名刚果士兵受审【环球网报道记者赵怡蓁】据法国《观点报》4月5日报道,......

    04-05    来源:新浪新闻

    分享
  • 美再释放两名关塔那摩囚犯 奥巴马力促关

      中新网4月5日电据美媒报道,4日美国释放了两名在古巴关塔那摩湾拘留中心的犯人,并将他们送至西非国家塞内加尔......

    04-05    来源:新浪新闻

    分享
  • 日本各地迎赏樱高峰 繁花似锦(组图)

      原标题:与樱花之约:日本各地迎赏樱高峰繁花似锦(图)中新网4月5日电据日媒报道,近日,日本东京都内各地的公园......

    04-05    来源:新浪新闻

    分享
  • 丽江玉龙雪山:雪后美景醉游人

      雪后玉龙雪山(1月18日摄)。新华网 和润仙 摄 2022年初,丽江玉龙雪山迎来一场大雪 十三座雪峰连绵不绝 宛若一条巨龙腾越......

    02-10    来源:未知

    分享
  • 这里盛产超级模特儿,看灰姑娘是如何变

      俄罗斯东边的西伯利亚,每年都会有欧美日本等国际模特公司的人来到这里,不为别的,只为寻找下一位世界名模。这组照片......

    02-10    来源:今日头条

    分享
  • 史上最贵快递?“送错”华为包裹的联邦

      6月1日,据央视新闻报道,最近,美国联邦快递在我国发生未按名址投递快件行为,严重损害用户合法权益,已违反我国快递......

    02-10    来源:未知

    分享
  • 日本新增武装巡逻船加强钓鱼岛警备 应对

      原标题:日本新增武装巡逻船加强钓鱼岛警备应对中国船境外媒体称,日本海上保安厅4日称,已新增12艘巡逻船用于......

    04-05    来源:新浪新闻

    分享
  • 一图看懂沪伦通背后的秘密

      新华社北京6月18日电(记者吴黎华)《经济参考报》6月18日刊发题为《沪伦通启动 A股对外开放步伐加快》的报道。文章称,......

    06-18    来源:未知

    分享
返回列表
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。