跟风吹了半天SpaceX,它的飞船到底牛在哪了?(组图)







触屏和自动驾驶系统真的让人人都可开飞船吗?



在太空中漫游19小时之后,载有两名美国宇航员的 SpaceX 龙飞船和国际空间站在北京时间上周日深夜成功对接。

对接两个多小时后,龙飞船的舱门顺利打开,宇航员正式进入国际空间站,标志着人类首次商业载人航天任务的发射部分,顺利告一段落。



在观看火箭发射直播后,很多人把目光投到了龙飞船上。它是这样一个多种复杂系统的集合体,但在看客的眼中,它重度利用了触摸屏,就像 SpaceX 创始人马斯克的另一家公司特斯拉所开发的电动汽车那样,简洁、现代,容易上手。

有人开玩笑说,以后连普通人都可以轻松驾驶宇宙飞船了。







但是事实真的如此吗?

采用了触屏、显著减少按钮数量,是否一定意味着飞船驾驶起来更加简单?

职业生涯一直在跟按钮打交道的职业宇航员,为何会愿意接受这种设计?

万一触屏坏了该怎么办?

这里有一些鲜为人所关注的技术细节,或许可以帮助你更全面和准确了解猎鹰9号火箭、龙飞船,以及宇航员是怎么和它互动的。

毕竟,航天飞行任务能够顺利进行的每一个步骤,每一个细节,以及当出现意外状况时的挽救和逃逸措施,都需要极其复杂的系统来保障。







“三贤者”自动驾驶系统



这么说可能会强化人们对于操作简单的误解,不过事实是:整个龙飞船,加上猎鹰9号火箭,本来就可以“自动驾驶”。

当然,这里的“自动驾驶”,并不是说火箭和飞船完全不需要人的管理、能够自己完成全部的操作。

休斯顿任务控制中心的 NASA 工作人员将协调整个发射工作,负责发射任务全过程中的每一个重要决定;加州霍桑 SpaceX 总部的支援团队将会实时读取火箭和飞船的数据,配合 NASA 的决定,对载具发出各种关键指令。

同时,宇航员也要按照任务手册,按步骤执行预先设定好的操作。当然,他们也可以完全撒手不管,交给自动系统和地面控制人员,但毕竟这是一次载人试飞任务,宇航员的职责之一,就是在飞船上亲手完成一系列操作,比如速度变化、轨道升降、姿态调整等等。

如果是无人任务,就像龙飞船之前执飞的国际空间站补货任务那样,一些操作完全可以由地面上的 SpaceX 工作人员遥控完成。







现在我们知道了飞船可以人工驾驶,但是在飞行过程中,并非所有的操作都需要手动完成——此时,就要用到机载的飞控电脑系统了。

这套电脑系统究竟具体是如何工作的呢?

2016年,时任 SpaceX 软件工程副总裁的 Jinnah Hosein 在一个大会上演讲时,提到了很多关于猎鹰9号/龙飞船电脑系统的细节。其中最有趣的一个关键词,就是三重冗余 (triple redundancy)

三重冗余是计算机科学领域常见的一种容错设计,为了更方便理解它,可以参考在现象级动画作品《新世纪福音战士》中高频率出现的 Magi 超级电脑。

Magi 由三个超级计算机组成,针对同一个问题分别得出三个相同或不同的结果,整个 Magi 的决策系统是由模块投票决定的。一般问题少数服从多数,特殊问题则采用一票否决。







排除文艺作品里夸张的表现,Magi 的机制理念,其实和 SpaceX 的飞控系统,以及现实世界里的各种三重冗余系统颇有几分神似。

根据 Hosein 透露的情况,猎鹰9号和龙飞船采用的是双核 x86 处理器,三枚一组,也即火箭的一级上有一组,二级上有一组,龙飞船上也会有一组。

每枚处理器会搭配对应的遥测组件、传感器、数据输入和输出组件等等。每枚处理器的两个核心都可以对收到的数据进行独立的计算,生成独立的指令。这里为了方便理解,我们称这三枚处理器为甲。

与此同时,甲类处理器生成的指令会发到飞船的器件上,而每个器件都会有一枚独立的处理器,我们称其为乙。这些处理器会负责对三个指令进行投票,选出一个结果执行。






对于甲类处理器,如果两个核心算出相同的结果,处理器就会发出指令;同理,如果两个核心结果不一样,这枚处理器就不会输出指令。

三枚甲类处理器运行的是同样的软件,接到的是相同的数据,计算的方式也是一样的。因此在理想状态下,它们输出的指令应该相同。

但是在航天飞行中,空间辐射的影响无法排除(比如传感器损坏、处理器计算周期延长等),难免出现 Hosein 所说的“不同步”现象,也即一枚处理器(下图中的 C)输出和其它处理器不同的指令。

当一枚处理器不同步,乙类处理器会对收到的三个指令进行多数表决。

另外两种极端情况是,如果 A、B、C 返回的是三个完全不同的指令呢?或者 C 内部没达成一致,只有 A 和 B 输出了指令呢?此时,飞控系统的逻辑是相信上一次计算正确的那枚处理器。

这个设计,对于 SpaceX 坚持的 two-fault tolerance 策略尤为关键。它的意思是整个系统可以在至多任意两个器件出现错误时仍能正常运转。因此,就算出现另一种极端情况,也即处理器 C 不同步了,B 完全失灵了,飞控系统也可以继续采用 A 的结果。

(当然,如果不巧 A 也挂了,那就超出 two-fault 的范畴了。届时如果整个任务没有迅速崩溃的话,宇航员将不得不接管更大范围的操控,按照训练经验和预演的步骤,继续完成任务或者立即返回地球。)

这也是 SpaceX 面临的环境和一般的软件开发不一样之处所在。在软件行业里人们通常在项目总结时候才做事后检讨 (postmortem),这也形成了像 Facebook "move fast, break things" 这样的文化。而 SpaceX 一直以来的使命是把人送到月球、火星甚至更远的目的地,他们的约束更高,责任更大,任何错误的恶果来的更严重、更直接。






Hosein 透露所有处理器上运行的都是 Linux 实例,共享 codebase,采用的是 C++ 语言,在 LabVIEW 环境下开发——形象来讲,整个火箭加上飞船上运行着一套小型的 Linux 计算集群。

另外,在长达数年的地面教学过程中,SpaceX 设计的模拟系统可以接入到这套飞控系统,也可以根据需要插入错误。也就是说,宇航员的训练实际上是在一个最大程度接近实际飞行的过程中进行的。

而且根据前述,你可以看到其实整套飞控系统在计算性能上要求并不算高,不需要很强很重的硬件(航天语境下,每多一丁点载荷可能就意味着五六位数美元甚至更高的额外成本),所以模拟可以在一台电脑上完成。

事实上,SpaceX 的很多测试工作是在“桌面火箭”上完成的,顾名思义就是可以把火箭上所有的电脑、控制器等器件放在桌子,可以不用连接真的火箭(发射直播的时候作者还曾开过玩笑,SpaceX 总部的控制中心看起来就像一帮程序员在搞封闭开发。)

在开发层面,SpaceX 采用的也是工程师们熟悉的持续集成 (CI) 理念,甚至可以根据模拟测试的结果,把新代码和配置每天加入到生产环境(也就是真要上天的飞船)里。这种开发方式能够缩短开发测试发布的周期,显著提高了 SpaceX 的效率。




关于触屏

了解了整个发射任务的操作流程和飞控系统的工作逻辑之后,我们再来讨论触屏这件事。

根据宇航员之前接受采访透露的情况,采用触屏是 SpaceX 和宇航员、NASA 之间讨论的结果,最终决定是 SpaceX 作出的。

其实,触屏对于这一次任务来说并非成败的关键。这两名宇航员都有着多年美军各部门试飞员经历,至少20年的 NASA 宇航员训练经历,上太空也不止一次了。因为在龙飞船之前美国宇航员需要借助俄罗斯火箭上天,许多宇航员对联盟号飞船也十分熟悉。

换句话来说,正是因为他们有着远超常人可以想象的经验,用不用触屏都没有太大的关系。

重点在于他们具备这些经验。如你所见,尽管龙飞船的自动化程度已经是目前航天的尖端水平,在不可避免的灾难到来时,他们仍然可以借助训练经验来接管飞船,继续完成任务或者中止任务返回地球。

毕竟龙飞船不是特斯拉,NASA 和 SpaceX 也不是驾校。触屏确实让人们对未来的太空旅行更有信心,但至少在现阶段,它的出现并不意味着飞船驾驶像很多人想象的那般简单。






宇航员 Bob Behnken 和 Doug Hurley关于龙飞船极简的操作界面,有一张对比图广为流传,人们看到它无不盛赞 SpaceX 的技术之先进,可以隐去成百上千个按钮,给宇航员一张看起来十分简洁的操作界面:




龙飞船很先进这没错,但这张图也确实在人们的脑海里造成了一些误区。

一个最直接的误区就是,龙飞船和航天飞机(太空梭 space shuttle)其实没有可比性。

航天飞机体型显著更大,运载能力更强,有着更复杂多样的功能。比如,当运行在地球上空600千米左右轨道上的哈勃望远镜需要维修维护时,就需要航天飞机上去,用舱内的机械臂抓住它,然后再由全副武装的宇航员进行操作。航天飞机上的按钮一定会更多。

而龙飞船只是地球到太空的交通工具,它本身就没有被设计更多的功能,再加上更加全面的自动化飞控系统,按钮只会比航天飞机少得多。相应地,用触屏来取代按钮和开关,去掉用户界面的杂乱,降低宇航员的压力,是更符合直觉的设计。

虽然触屏一开始不习惯,两位宇航员并没有否认它的先进性。Behnken 表示,对于他们这一辈习惯了60年代按钮和开关的宇航员来说,触屏这样的现代界面令他们感到很兴奋。” Hurley 也表示,“触屏是航天载具的未来。”

使用触屏确实有一些好处,最直接的就是触屏操作更加直观了。

按钮和开关太多的一个不完美之处,就是操作和反馈在视觉上的异步。举个例子来说,如果在老机型上进行某个操作,对应的按钮可能在宇航员的左手边,而按下按钮反馈的效果可能需要在头顶的屏幕上才能显示。

而通过 Chromium 内核和 JavaScript 开发的 SpaceX 触控图形界面,在屏幕上按下虚拟按钮后,对应的操作结果可以直接在画面上体现。

一些“云宇航员”喜欢说按下按钮、拨动开关有触感反馈,触屏做不到,但实际上能够在触控图形界面上看到反馈结果,触感不触感的,就显得没那么重要了。

而且,本次任务的龙飞船使用了三块屏幕,上面提供了足够多的信息,包括并不限于当前的高度、速度、按照手册需要执行的下一个步骤的信息、地面追踪站和卫星的覆盖情况、接下来和地面/空间站沟通的窗口持续时间等等,让宇航员一览无遗。这块屏幕既能显示状态,又是他们的飞行手册,集多功能于一身。

另外,由于老式机型的按钮实在太多,分布在宇航员的四面八方,坐在座位上是碰不到的很多按钮。在俄罗斯联盟号飞船和美国的太空梭上,坐在某些位置上的宇航员都要用到一根(并没有很特别的)棍子去按按钮:



而龙飞船的操作界面,宇航员只需要小幅度的手臂运动就可以完成所有的操作。


并且,触控图形界面也包含在 two-fault tolerant 的容错范畴之内。更别提这个操作界面也不是只有触屏,还有两个手动接管的旋钮,以及几十个各种按钮和开关,低调放在屏幕的下方。

事实上,所有最手册上的关键操作,包括手动接管、飞船脱离火箭、逃逸系统、开关整流罩、舱内灭火、舱内减压等等,都可以找到对应的实体开关和按钮(虽然看起来像电容按键)。






正是这套功能强大、设计前卫的操作系统,帮助龙飞船将两名宇航员和随行货物顺利送达国际空间站。

并且由于自动化程度较高,整个任务通过几个关键节点都比预定的时间轴要早得多,在靠近空间站时切换至手动操作的测试进程也比预想要快得多。

如果你看过第二天对接时的直播或录像,可能还会记得,两名宇航员在对接成功之后已经迫不及待登上国际空间站,多次跟 SpaceX “发牢骚”,说“饭已经吃完了,垃圾也收完了,我们到底什么时候才能打开舱门”……

猎鹰9号和龙飞船执飞的首次商业载人航天任务在发射和对接阶段获得如此成功,SpaceX 居功甚伟。不过当人们讨论 SpaceX 时,总是更倾向于吹捧它的创始人有多么高瞻远瞩。

这固然重要,但希望看过本文之后,你能对 SpaceX 的技术力量和实现方式获得更加全面的了解。也欢迎用留言分享关于 SpaceX 你了解的更多技术细节。

(注:本文内容主要来自公开资料和其它人士整理的可靠结果,文末有参考链接。)


参考资料:

Engineer the Future by Jinnah Hosein, SpaceX https://www.usenix.org/conference/lisa16/conference-program/presentation/hosein

SpaceX DM 2 Crew News Conference - May 1, 2020 by NASA https://

Inside SpaceX’s Crew Dragon Capsule and HQ!!! by Everyday Astronaut https://

推荐阅读