太空探索技术公司吧 关注:8,356贴子:389,794

空X软件团队最近在reddit上做的AMA

只看楼主收藏回复

SpaceX软件团队5月15日在reddit的AMA(ask me anything)!为了便于阅读,我们整理了这里的问题和回答。
主要包括:
通用软件
星际飞船
龙飞船
星链
我们是SpaceX软件团队中的一员,在5月15日(星期六)下午12:00,我们将在这里回答您关于我们在过去一年中参与的一些有趣项目的问题,包括:
设计Starlink的可变遥测系统,每秒存储数百万个点
更新我们在轨的Starlink卫星(太空中最大的星座)上的软件
星链 空间激光高速数据传输终端软件设计
开发软件以支持我们的第一个全民用任务(灵感4――商业载人龙任务)
完成我们的第一次“龙”号行动任务(1号机组)
为宇航员设计机载用户界面
星际飞船飞行软件和用户界面的快速迭代
我们是:
Jarrett Farnitano–负责Dragon车辆软件,包括乘员显示器
Kristine Huang–Starlink constellation应用软件的负责人
Jeanette Miranda–为laser.com开发固件
Asher Dunn-负责星际飞船软件
Natalie Morris-负责卫星软件测试基础设施


IP属地:江苏来自Android客户端1楼2021-05-16 18:27回复
    通用软件问答
    问:我为那些不是生死攸关的东西编写软件。正因为如此,我觉得猜测和检查、复制和粘贴、没有完全的测试覆盖率等等都很舒服,因此bug经常会通过。在安全关键软件上工作有什么不同?
    答:在安全关键型和非安全关键型软件上工作过,你绝对需要有不同的心态。最重要的是确保您知道您的软件在所有不同场景中的行为。这会影响整个开发过程,包括设计、实现和测试。设计和实现将趋向于具有清晰边界的较小组件。这使得这些组件在集成到更广泛的系统中之前能够得到充分的测试。然而,整个系统仍然需要测试,这使得端到端测试和可观测性也是整个过程的重要组成部分。通过公开有关软件在遥测中所做决策的信息,我们能够自动监视软件。这种自动化可以用于开发、回归测试,以及在执行任务期间针对真实车辆上运行的软件。这有助于我们确信软件在其整个生命周期中都能按预期工作,特别是当我们有机组人员在船上时。贾雷特
    问:要实现像Starlink这样的嵌入式在轨系统的持续集成和交付,必须克服哪些挑战?您是否在容器中部署软件?测试如此庞大的网络有哪些挑战?继续努力!
    答:为了管理一个大型卫星星座而不需要数百名操作员,我们依靠地面和卫星上运行的软件自动化。为了在端到端配置中完全测试我们的系统,这意味着我们必须在开发环境中集成数百种不同的软件服务。测试中的另一个挑战是,不可能总是用一个测试来测试每一个功能。例如,我们需要自动测试来运行星地通信链路。我们有卫星的HITL(硬件在环)试验台,我们可以建立一个带有固定天线的模拟地面站。我们可以进行一个测试,模拟卫星在地面站上空飞行,但我们必须重写软件,让它认为它总是与我们的固定天线接触。这让我们可以测试整个射频和网络堆栈,但不让我们测试天线指向逻辑。或者我们可以运行纯软件模拟来测试天线指向。我们必须确保我们对系统的所有重要方面都有足够的零碎测试。


    IP属地:江苏来自Android客户端2楼2021-05-16 18:30
    回复
      2025-08-11 17:53:40
      广告
      不感兴趣
      开通SVIP免广告
      问:Python在SpaceX获得了多少喜爱?它显然不可能是头等舱乘客地位,但它部署在任何重要的地方吗?
      A:我们的许多地面工具都有大型的Python方面,比如我们的数据分析服务、测试基础设施和CI/CD系统。它不是在驾驶车辆,但我们非常常见的是用Python来构建许多其他系统。Python的一个独特之处是它是一种非常适合非软件工程师(机械工程师、推进工程师等)学习和工作的语言。我们已经成功地使用它为软件和硬件、自动化数据分析管道和类似领域编写了测试用例,在这些领域,具有各种背景的工程师需要能够做出贡献。-克里斯汀
      问:你的技术是什么?语言、框架、库等。。。您在日常工作中使用哪些工具/编辑器/ide?既然你不能飞到那里去测试,QA如何验证开发者的工作呢?
      答:在SpaceX,我们不会把质量问题和开发分开,每个编写软件的工程师都应该为软件的测试做出贡献。我们通常尝试在高保真硬件测试台上尽可能多地进行测试预合并。我们的测试代码和测试结果与飞行代码一起经过同行评审,以确保我们测试的是所有正确的东西。我们也有独立的工程师开发端到端的测试,强调整个系统。测试大型卫星星座的一个独特之处是,我们实际上可以使用“金丝雀”卫星来测试新功能。我们在软件上运行回归测试,以确保它不会破坏关键功能,但然后我们可以选择一个卫星,部署新功能,并监控它的行为,而对星座的风险最小。-娜塔莉
      问:我很想了解一下你是如何将数据从航天器传输到地面的。一个数据流还是多个?格式是什么样的?人类可读还是原始字节?如何区分不同子系统/传感器的不同数据段?如何解析它进行分析?谢谢!
      答:一般来说,总是有很多数据来源。它都是原始字节的专有格式,有足够的上下文来知道每一个点从何而来,它代表了什么度量。-克里斯汀
      问:能否请您详细介绍一下“星际飞船……用户界面的快速迭代”?
      答:我们使用与Dragon Crew Displays相同的基于web组件的前端架构,但我们让所有内容都可以由用户配置。这使得工程师和操作员可以直接定制他们工作所需的视图,并使我们作为软件团队能够专注于对UI核心界面和平台进行改进。使用基于web的系统意味着我们可以快速地原型化、测试和发布。


      IP属地:江苏来自Android客户端3楼2021-05-16 18:34
      回复
        问:能否请您详细介绍一下“星际飞船……用户界面的快速迭代”?
        答:我们使用与Dragon Crew Displays相同的基于web组件的前端架构,但我们让所有内容都可以由用户配置。这使得工程师和操作员可以直接定制他们工作所需的视图,并使我们作为软件团队能够专注于对UI核心界面和平台进行改进。使用基于web的系统意味着我们可以快速地原型化、测试和发布新的UI功能。在开发过程中,我们可以将本地托管的UI实例指向正在运行的模拟甚至真实的车辆数据,并利用热重新加载等功能实时更新UI。挑战是提供这一级别的灵活性,同时也朝着抛光,重点,和龙船员显示质量的发展。这往往是一个完整的堆栈挑战-很多时候,当系统本身难以理解或使用时,接口是复杂和丑陋的。随着星际飞船的成熟,我们正与管制员和工程师密切合作,找出这些痛点在哪里,以及如何解决它们。最终,我们希望星际飞船在日常飞行操作中易于控制和理解。
        问:您使用什么工具进行测试和连续交付?如何模拟火箭和卫星硬件?
        A:很多都是约定俗成的。我们拥有一个完整的团队,致力于构建CI/CD工具以及车辆使用的测试和模拟核心基础设施。在我们的软件旁边运行高保真物理模拟以测试它的需求带来了一些有趣的挑战,大多数现成的CI/CD工具不能很好地处理这些挑战。它们不仅需要大量的计算,而且持续时间也很长(比如说:飞龙从升空到对接),我们需要能够运行“硬件在环外”模拟和“硬件在环内”模拟,在这两种模拟中,我们将软件加载到带有实际计算机和电子设备副本的试验台上。我们已经做了很多工作来确保开发人员在日常工作中可以轻松地运行这些测试——我们可以在工作站上运行与CI集群中相同的测试,甚至可以在合并更改之前在硬件在环测试床上运行案例。这让我们对正在编写的代码充满信心。我们也会利用一些现成的东西;例如,我们广泛使用Bazel来满足构建和单元测试的需要。
        问:哪种方法更适合火箭的飞行软件-异步还是多线程同步?在选择工具、标准时,你倾向于坚持保守的选择(C++ +‘11’Rev’)还是愿意尝试新事物(更新的C++ 17/20标准,生锈)?你如何处理失败?你如何限制他们的影响?
        答:最重要的是保证性能的一致性。你不能开火箭,如果它的行为像一个落后的电子游戏!根据手头的问题,我们混合使用同步和异步技术。我们不怕尝试新的系统、策略、标准或语言,尤其是在开发新程序的早期。这就是说,任务的成功是至关重要的,我们确实需要关注未来代码的可维护性,因此与一般启动相比,我们离最前沿还有一点距离。-阿舍
        问:你的团队中有硬件开发者吗?您如何确保您的软件与当前的硬件一起工作(因为两者都必须快速发展)?
        答:太空激光软件团队由固件工程师和模拟软件工程师组成,但我们都定期与SpaceX的所有不同类型的工程师一起工作。正如您所想象的,软件和硬件都在快速发展,因此我们投资了各种方法,在这两者的交叉点实现自动化测试。SpaceX拥有硬件在环试验台,作为我们持续集成系统的一部分。任何新的代码更改都将通过其中一个测试台上的一套回归测试用例来运行,以确保软件更改与硬件兼容。反之亦然,任何新的硬件也将包含在这些测试床上,用于验证与现有软件的回归。-珍妮特


        IP属地:江苏来自Android客户端4楼2021-05-16 18:37
        回复
          问:你的团队中有硬件开发者吗?您如何确保您的软件与当前的硬件一起工作(因为两者都必须快速发展)?
          答:太空激光软件团队由固件工程师和模拟软件工程师组成,但我们都定期与SpaceX的所有不同类型的工程师一起工作。正如您所想象的,软件和硬件都在快速发展,因此我们投资了各种方法,在这两者的交叉点实现自动化测试。SpaceX拥有硬件在环试验台,作为我们持续集成系统的一部分。任何新的代码更改都将通过其中一个测试台上的一套回归测试用例来运行,以确保软件更改与硬件兼容。反之亦然,任何新的硬件也将包含在这些测试床上,用于验证与现有软件的回归--珍妮特
          问:SpaceX如何在其车辆上使用Linux而不是真正的实时操作系统?我知道PREEMPT\u RT补丁使Linux更加实时,但仍然不能使它完全实时。飞行载人火箭和航天器似乎是一个始终需要硬实时保证的地方。
          答:虽然我不能在这里详细说明,但我们设计的软件在没有完全实时操作系统的情况下工作。我们还使用定制的Linux版本,并充分了解我们的软件和操作系统的运行环境。在一个更加受限的环境中运行(与开放互联网相比),再加上广泛的仪器和硬件在环测试,意味着我们可以知道操作系统在轨道上的行为将与我们预期的一样-贾雷特
          问:我是机器人团队的一名高中生,我们在发展方面面临许多挑战。SpaceX如何过滤来自各种传感器的数据?SpaceX如何将快速发展的硬件与软件结合起来?我对他们之间的婚姻很好奇,因为他们彼此太依赖了。
          答:这在很大程度上取决于传感器以及您试图从传感器获取的信息。我们在车上安装了许多模拟和数字滤波器,以确保我们在控制中使用的数据是真实的。大量的交流。SpaceX的软件和硬件工程师一起工作以产生一个可行的设计。以一个需要定制固件的新硬件盒为例。固件和硬件工程师将在硬件设计阶段共同工作,以确保系统正常工作。一旦第一个原型到达,固件工程师将获得硬件的第一个副本,以便他们可以在软件上工作。-阿舍
          问:您是否为嵌入式系统实现了控制算法?
          答:我们总是在正确的地方进行交易,以运行控制流程。有时,放置控制算法的最佳位置是靠近被控制对象的嵌入式系统。其他时候,流程需要更加集中。当你想到像星际飞船这样复杂的飞行器时,不仅仅是一个单一的控制过程,因为你必须控制发动机、襟翼、无线电系统等等
          问:据我所知,编写飞行软件的最大挑战之一是,软件的编写需要确保故障和异常不会停止执行。以这种方式编写软件最大的挑战是什么?
          答:在安全关键软件中,如果单个软件组件出现问题,它不会影响整个软件系统,这一点很重要。软件也常常依赖于它与之交互的硬件,因此也必须考虑硬件故障。崩溃和重启是不可能的。我们通过在模块化组件中构建软件、编写防御逻辑和检查每个操作的状态来实现这一点。如果我们希望完成的操作失败,我们定义了错误处理路径和恢复策略。有时这种策略只是意味着跳过操作。有时策略可能更复杂,涉及到诸如切换到备份系统之类的响应。-贾雷特


          IP属地:江苏来自Android客户端5楼2021-05-16 18:38
          回复
            问:您的CI/CD管道是什么样子的?新的构建是否真的安装在“生产”或“类似生产”的板上,并连接到一个自动测试架上,该测试架向传感器提供模拟输入,还是所有的自动测试都在一个完全模拟的环境中运行?
            答:我们有很多不同类型的测试环境。有些是纯粹的模拟环境,我们称之为HOOTLs(或硬件出环)。它们可以在CI/CD中运行,也可以在开发人员的桌面上运行,以进行本地迭代。另一些涉及飞行类硬件,我们称之为HITLs(硬件在环)。我们的星链HITL设置只是我们从生产线中取出的卫星,并与我们的CI系统集成。我们设置CI管道,从快速、廉价的测试开始,以找出基本错误。如果这些测试通过了,我们将运行更长、更复杂的测试。系统的不同部分也有不同的管道。例如,在Starlink上,我们将有一个单独测试用户终端软件的管道。一旦这些测试通过,它将被整合到测试用户终端软件和卫星之间接口的其他管道中-娜塔莉
            问:你的描述说你“领导……”。“领导”对你来说意味着什么?当涉及到你的工作有什么不同的时候,还有什么价值观和软技能(如果有的话)对你的领导很重要?
            答:在领导方面,对我来说重要的价值观和软技能是信任、谦逊、同理心和弹性。确保团队中的每个成员都有能力解决复杂的问题,庆祝胜利,承认错误。用产品和技术愿景指导团队。反思我们本可以在常规节奏中做得更好的地方,以便我们能够提供反馈并作为一个团队不断成长。-克里斯汀
            问:SpaceX的软件工程是什么样的?
            答:克莉丝汀:我们非常鼓励我们的工程师们找出需要解决的问题,并对这些问题提出自己的解决方案。这意味着作为架构师、设计师、开发人员、测试人员和用户来考虑每个选项,我们认为这些选项会导致更优雅和更适合的解决方案。随着时间的推移,工程师的工作范围、影响和自主性不断增加,他们会得到奖励。纳塔莉:SpaceX的工程师们往往对我们的任务充满热情,并致力于解决问题。我们不是一直在长时间、辛苦地工作。有时候我们会这样做,通常是因为我们对一个问题充满激情,有动力与我们的队友合作,并且不愿意放弃。在这里的近十年里,我从未感到无聊。
            问:SpaceX的软件位置范围是多少?
            答:在考虑SpaceX的软件工程时,很容易想到在我们的飞行器上运行的软件,但这只是冰山一角。我们的一些工程师是C++开发人员编写飞天飞船的代码,但是我们也有工程师正在建造核心软件测试基础设施,工厂内部的Web应用程序,星座,和客户,自动化生产测试或编写代码,帮助组织SARLink的网络。我们的软件工程师工作在C++,Python,C,.net,java,JavaScript,角度等等。查看我们在SpaceX招聘的软件职位范围。-克里斯汀和珍妮特


            IP属地:江苏来自Android客户端6楼2021-05-16 18:41
            回复
              星际飞船问答
              问:星际飞船用什么逻辑程序来决定引擎在翻转和燃烧机动中的有效性?
              答:通过观看SN8到SN15的视频可以看出,这是我们反复提及的一个领域!从根本上说,星际飞船的设计是为了实时选择最适合执行翻转和着陆燃烧的引擎。我们更新了软件,使其更智能地检测潜在的引擎问题,并调整了哪些问题可以在软件中得到补偿(仍然可以使用该引擎)与哪些问题不能得到补偿(RUD!)-对应于每次飞行。阿舍
              问:你是否计划在星际飞船环境中使用类似的技术,从机组人员显示器到可能的E2E软件?你能更详细地介绍一下你对web组件的使用吗?你目前有多少应用软件工程师,你还要找更多的吗?你们有单独的团队负责Starlink的网络开发吗?你保持你的用户界面轻量级,还是不担心?
              答:SpaceX有很多基于网络的界面,从机组人员的自我展示,到工厂物流工具,再到午餐菜单。对于给定的星际飞船操作,查看程序、控制载具、查看和分析数据等任务都是通过webapps完成的。我们正在使用基于web组件的框架来显示船员和星际飞船。除了标准优势(划分、互操作、性能等)之外,我们还特别重视它们是web平台固有的事实。我们对待我们的控制界面与其他飞行软件的审查级别相同,这意味着我们需要审计我们使用的任何第三方代码,并跟踪任何公开报告的错误。事实上,这些框架是在本地浏览器功能之上的相对轻量级的层,并且可以在不捆绑或编译的情况下使用,这使得我们更容易对它们充满信心。虽然我们有一个相当大的团队,我们当然要寻找更多伟大的应用软件工程师。来加入我们的团队吧-不需要航天经验(真的!)。应用软件中的不同团队关注我们在任何给定时间进行的各种程序的不同方面。对于我们的控制界面,我们非常关注性能,但往往侧重于与标准webapps不同的指标–我们的性能特征往往更接近游戏的性能特征(在游戏中,您重视实时响应,而V8的性能(随着时间的推移)要比更传统的网站(它更强调Web的重要特性,比如首次加载性能)。克里斯汀
              问:你们在星际飞船试飞时对软件进行修改的时间有多晚?我们已经看到很多事情发生了变化,有时在最后一刻,软件就是其中之一吗?你是否必须在第一次上传和最后一次飞行软件之间改变翻转/着陆策略?还是更微妙,这些事情按计划进行?
              答:由于星际飞船正在开发/测试中,我们被设置为在游戏中比其他程序更晚的时间进行软件更改。有许多不同类型的软件更改——从大的新特性或重构一直到更改一个数字。每个变化的关键问题是,我们如何知道这个变化是正确的?飞行前我们需要进行哪些测试?如果我们能确信在最后一刻做出改变会增加测试成功的可能性,我们就不会回避(当然,我们更喜欢尽可能提前准备好一切)阿舍


              IP属地:江苏来自Android客户端7楼2021-05-16 18:43
              回复
                载人龙问答
                问:我看到载人龙上的乘员使用iPad和触摸屏。如果这些显示失败,备份是什么?这些显示器是“太空硬化”的,还是正常的显示器在与国际空间站对接时能经受住太空中的辐射?
                答:Dragon是一个完全自主的飞行器,因此它能够完成往返国际空间站的旅行,而无需机组人员的任何互动。但显示器和按钮面板确实为机组人员提供了在意外情况或紧急情况下需要采取行动的能力。至于平板电脑和显示器,平板电脑本身就是一种备份,包括程序等重要数据的副本。显示器本身被设计成完全冗余的,因此如果一个显示器出现故障,其他两个显示器可以完全取代它。即使我们经历了所有3个显示器的故障,机组人员有一个按钮面板,可以用来启动应急响应,地面指挥也是可能的-贾雷特
                问:在神龙和平板电脑的用户界面中,你打算如何使用戴手套/不戴手套的手?
                答:用户界面在飞行的各个阶段都会考虑到车辆的状况。这包括车辆在上升/下降时的晃动,此时乘员还戴着头盔、西装和手套。用户界面中的所有按钮都有一个最小的尺寸,我们不会超过这个尺寸,而且它仍然适用于戴着较厚手套的手指。此外,还有各种各样的UI/UX决策,这些决策是由飞行阶段和客舱环境决定的。例如,主要导航元素的位置位于UI的底部,因为工作人员必须抬起手臂才能与显示器交互。我们设计了尽可能多的填充和空白的界面,让信息呼吸和尽可能可读。更重要的UI元素(如命令按钮)位于高活动区域之外的界面顶部,因此与它们交互总是有意的。前视功能独特的圆形对比滤光片,允许在不同的视频光照条件下,界面中的所有数字都可以很容易地看到。即使用户界面后面的视频源是纯白色或黑色,所有单元都是可读的。我们还对所有年龄和身高的男性和女性参与者进行了多次振动测试,他们戴着实际的船员头盔,坐在实际的船员座位上。座椅被放置在振动台上,以模拟上升/下降条件。当座位晃动时,参与者将使用Xbox控制器玩一个自定义游戏,测试随机字体大小、颜色和文本位置(在UI中也随机晃动)的单词和数字序列的可读性。这有助于确认我们在极端环境条件下做出的字体、大小、图标、间距和颜色的可读性决定。它还告诉我们,基本上每一部科幻电影的界面都是不切实际的,在极端条件下是不可读的。-贾雷特


                IP属地:江苏来自Android客户端9楼2021-05-16 18:48
                回复
                  2025-08-11 17:47:40
                  广告
                  不感兴趣
                  开通SVIP免广告
                  问:你能给我们展示一下用户界面吗?信息设计如何帮助分类可能出现的问题?
                  答:对于控制界面,我们的目标是“安静黑暗”的理念-如果车辆的行为是名义上的,界面是流线型和最小的,但仍然显示整体系统状态。通过这种方式,我们可以直观地区分名义信息的优先级,同时允许操作员和工作人员维护系统上下文。对于面向工程的接口来说,信息设计是一个挑战。我们非常依赖后端软件和自动化分析来确定要显示的最重要数据的优先级。-阿舍
                  问:为了支持Inspiration4,您将对过去的“神龙”号机组飞行中没有的软件进行哪些更改?
                  答:我们正在对Inspiration4进行一些软件更新,以支持该车的新功能。这包括软件,以支持新的冲天炉,我们正在添加到车辆以及滚动更新,使发射前的运作更顺利。然而,龙是一个非常有能力的车辆,所以许多现有的软件将只是与灵感4任务设计工作。-贾雷特
                  问:太空中“载人龙”上的表现如何?团队是否因飞行经验对UI/UX进行了任何更改?
                  答:在载人龙上工作的一个真正令人兴奋的部分是与工作人员交谈,并从他们操作车辆的经验中学习。我们收集工作人员对可用性的反馈,并从他们的角度不断改进车辆的操作。这包括对UI进行更新,比如添加新功能、更新视图和调整过程


                  IP属地:江苏来自Android客户端10楼2021-05-16 18:50
                  回复
                    问:我已经将一个软件更新推送到几百个云服务器上,用于web应用程序——但我无法想象将一个更新推送到一个星座会有多复杂。您能详细介绍一下starlink的软件/固件更新过程吗?整个星座的发行量是递增的吗?更新/发布的频率如何?您是否提供了自己的工具来协调发布或使用现有的代码部署和测试工具?
                    答:我们尝试每周向我们的整个资产(卫星、地面站、用户终端和WiFi路由器)推出一次新产品。每个设备都会定期检查我们的服务器,看看它是否应该获取一个新版本,如果有一个可用的,它会在理想的时间下载并应用更新,以尽量减少对用户的影响。这意味着我们可以很容易地在一个小的池中测试构建,并通过更改数据库中的一些配置来转向指数级部署。我们设计了我们的系统,这样每个资产(可以包含几十台独立的计算机)都可以通过首先将一个新包提取到中心节点,然后让所有其他计算机从该中心节点提取更新来进行原子更新。每个设备还保留了最后一个好软件的备份副本,因此,如果在更新过程中出现任何问题(如辐射引起的电源故障),它会通过引导到备份中自动恢复。我们几乎所有的部署和测试工具都是内部构建的,这主要是因为我们的体系结构非常独特,而且我们必须处理的各种约束需要大量定制现成的工具--娜塔莉
                    问:你能告诉我们更多关于星链遥测系统的情况吗?你遇到了什么问题?你是如何解决的?
                    答:我们刚开始的时候已经有了一个很好的内部遥测系统,但它有一个“运行”的核心概念,即给定数据集的一个确定的开始和停止时间。Starlink不适合这种模式,因为有很多设备总是开着,可以发送无序的数据,或者有明显的延迟,所以这些是我们首先要解决的一些问题。在此过程中,一些最有趣的挑战一直围绕着容错域和容错—我们如何确保系统的某些部分具有尽可能多的可用性?如果一组设备发出的信息超出预期,我们如何将其影响限制在尽可能小的软件子集内,以便继续处理其他数据集?我们也选择了不保留所有数据,而是创建了一个强大的系统,可以随着时间的推移聚合信息,并在信息不再有用时对其进行老化。-克里斯汀


                    IP属地:江苏来自Android客户端13楼2021-05-16 18:56
                    回复
                      问:如何保证卫星间激光链路的发射机和接收机对准?仅仅从卫星的预期位置计算角度就足够了吗,还是必须使用某种主动寻的方式?
                      答:卫星间激光链路的指向公差非常小,所以你认为仅仅从卫星的预期位置计算角度是不够的,这是正确的。为了有助于将指向问题的严重性放到正确的角度,在角度公差方面,我们试图解决的问题就像从洛杉矶发射激光击中纽约帝国大厦一样困难。当启动激光链路时,我们首先根据预期的角度指向,然后协调采集序列以获得两侧一致的功率。-珍妮特
                      问:如何使用不同版本的Booster/starlink SAT管理不同版本的软件?硬件团队不总是对设计进行升级和修改吗?这会导致每个单一的机械操作都需要单独的代码版本吗?
                      答:对于Starlink,我们尽可能地为所有卫星提供一个单一的软件负载,而不考虑任何给定飞行器上每个子组件的具体版本。我们通过在硬件接口层和各个组件上的“业务”逻辑之间进行清晰的分离来实现这一点。软件读取各种硬件标识符,以了解我们拥有的每件事物的类型,并相应地调整其行为。-珍妮特
                      问:在试图更新在轨的Starlink卫星上的软件时,遇到了哪些挑战?在spacex做软件工程师应该达到什么水平?
                      答:在设计卫星软件更新系统时,最有趣的挑战之一是建立一个系统,该系统能够容忍过程中任何一点的任意故障(如断电或内存损坏)。我们通常使用主/备份更新方案来解决这个问题,并确保默认的恢复策略是加载已知的好软件,我们知道这些软件可以进行动态更新。作为一名软件工程师,我们对物理没有严格的要求,但大多数人对力学和电磁学都有一定的了解。-珍妮特


                      IP属地:江苏来自Android客户端14楼2021-05-16 18:58
                      回复
                        问:您与系统工程师、机械工程师和航空航天工程师等多久合作一次?这个过程是什么样的?
                        A:每天,如果不是每小时:)。例如,在过去的一周里,我和一位光学工程师一起参观了测试空间激光器的光学台,和一位电气工程师一起描述了实验室中的电路性能,并和一位机械工程师一起拆卸和重新组装了空间激光指向组件的一部分。有时,这种协作需要在实验室里坐在一起解决一个特定的问题。其他时候,它会与来自不同学科的代表一起详细讨论一个设计,或者听一次技术讲座,以加深对你核心专业领域以外领域的知识。-珍妮特
                        问:你的身体在哪里,而不是WFH?加州霍桑?德克萨斯州博卡奇卡?其他的?你的项目是非常跨团队或跨办公室的,还是非常局限于你个人的团队/职责领域?
                        答:我们的办公室通常与公司的特定项目对应,因此所有类型的工程师都可以跨团队合作。我们在加利福尼亚州霍桑市(大多数项目)、华盛顿州雷蒙德市(星链)、加利福尼亚州山景城(星链)和德克萨斯州星基市(星舰)设有办事处。也就是说,我们总是在跨程序和跨办公室进行协作,尤其是在软件方面,因为我们共享许多公共基础设施和代码。-克里斯汀


                        IP属地:江苏来自Android客户端17楼2021-05-16 19:16
                        回复
                          问:SpaceX的软件开发人员如何与物理学家或工程师等其他技术角色互动?是需要很多跨领域的知识,还是每个人都在自己的专业范围内?
                          答:我们有一个非常协作的环境,我们与其他工程团队密切合作来构建我们的软件。例如,在我开始研究卫星之前,我负责Dragon上的对接系统软件。我与电气和机械工程师一起设计控制系统,与GNC工程师一起设计conops(操作概念),我们在集成硬件和软件测试方面进行了大量合作。在我目前的工作中,我和我的团队与其他工程团队合作,设计和构建我们的硬件测试平台,开发仿真和模型。我们的软件工程师不需要任何航空航天或物理方面的背景。我们要寻找的是那些对事物如何运作有强烈好奇心的人,他们会毫不犹豫地提出问题,直到他们明白为止。这里的每个人都愿意回答问题,这是双向的——硬件工程师也应该对软件如何控制他们的硬件有一个基本的了解娜塔莉
                          问:嘿,团队!我是大学计算机科学专业的大一新生,有一天我想驾驶火箭和漫游者。在我的职业生涯中,我应该采取哪些有用的步骤来巩固我在未来的地位?
                          答:在SpaceX公司,有很多成功的软件职业道路,部分原因是这里有许多不同类型的机会,我们希望让他们拥有来自不同背景的工程师。这就是说,没有一条路可以从珍妮特那里飞火箭和开漫游者:对我特别有用的两件事是找到一个我在大学里热衷的项目,并寻找很多机会来编写代码。我的项目是通过我学院的FormulaSAE(FSAE)团队获得实际工程经验,设计、制造、测试和比赛一辆公式式赛车。虽然与软件没有直接关系,但它让我接触到了设计行业、跨学科工作、解决难题以及学习如何做一些我不知道怎么做的事情。我见过申请者通过项目团队、初创企业、实习、研究实验室或其他方式获得类似的经验。除了FSAE之外,我很高兴通过软件架构和设计的强化课程以及暑期实习找到了编写代码的机会(很多)。反复地督促自己尝试编写不同类型的代码,并积极地寻求关于我做得如何的反馈,这有助于我找到一个可以胜任全职工作的地方。娜塔莉:我鼓励人们挑战自我,走出自己的舒适区。我确实很害怕大学里的失败,但我最努力学习的课程是我现在最看重的。我想我从失败中学到的比从成功中学到的更多,这仍然是我学到最多的东西。


                          IP属地:江苏来自Android客户端18楼2021-05-16 19:18
                          回复
                            答:太空卫星的工程软件与许多其他应用的工程软件惊人地相似,风险更高,环境的限制也更多。正因为如此,有很多经验可以很好地转化为在SpaceX工作。我们最成功的工程师最终都是那些拥有优秀的基础工程技能、强烈的技术直觉以及在遇到新情况时渴望学习的人。对于卫星运载工具的发展,一个独特的事情是如何经常原始的物理或数学约束是在我们的日常工作中的问题的头脑顶端。-珍妮特
                            问:如果你现在是一名大学生,你会做什么软件方面的项目来吸引SpaceX招聘人员的眼球?
                            答:任何能激励你深入学习技术知识并在以后热情地谈论它的项目都是公平的阿舍


                            IP属地:江苏来自Android客户端19楼2021-05-16 19:23
                            回复
                              2025-08-11 17:41:40
                              广告
                              不感兴趣
                              开通SVIP免广告
                              有趣的离题问题
                              问:你们有多少个小时的集体时间在玩Kerbal太空计划?
                              A:最大整数
                              问:你们用Vim吗?
                              A:我确实用Vim!但是每个开发人员都可以自由使用他们最喜欢的编辑器/IDE贾雷特
                              问:我8岁的女儿在问:建造火箭发动机最困难的部分是什么?
                              答:当火箭发动机点火时,就像连续爆炸一样!最困难的部分是建造引擎,使爆炸停留在内部。-阿舍
                              问:你对Rust编程语言有什么想法吗?
                              A:我们对生锈肯定很兴奋!它对安全性、性能和现代工具的重视都非常突出。我们也很高兴我们可以在嵌入式系统、模拟器、工具和web应用程序中使用一种语言。我们正开始在Rust制作一些新项目的原型,但我们肯定只是这段旅程的开始。-阿舍
                              问:你办公室的零食情况怎么样?
                              A:不,不,不。
                              问:那么,你们是怎么度过假期的?
                              A:珍妮特:去年我搬到了太平洋西北部,一直喜欢徒步旅行和骑自行车来探索这个地区。我也很喜欢开一个室内药草园!娜塔莉:我喜欢做饭和烤面包!我和我的同事们肯定会试着用烘焙食品来做对方。每个人都能赢得阿舍:演奏音乐,徒步旅行,和朋友一起品尝当地的餐馆。克莉丝汀:我和我的丈夫以及我们两个7岁和4岁的女儿一起休假。周末我们玩棋盘游戏,到户外的海滩或公园,建造东西,或烘烤。贾瑞特:我的空闲时间和我的妻子、猫和狗在一起。我们花了很多时间在海滩上,探索南加州的沙漠和森林。


                              IP属地:江苏来自Android客户端20楼2021-05-16 19:24
                              回复