https://yasoob.me/posts/software_engineering_within_spacex_launch/
SpaceX 内舱操作界面基于 Chromium 和 JS 开发。
1
dartabe 2020-06-04 05:13:40 +08:00
🚀🚀🚀🚀
鼓掌👏 |
2
ericls 2020-06-04 05:30:12 +08:00 via iPhone 15
操作界面不管什么语言写 不都是前端吗?难道你用 c 写界面 你的界面就底层了?
|
3
ifhwhlwpto 2020-06-04 05:47:35 +08:00
@ericls 以前火箭的操作界面是一堆实体按钮和仪表盘,类似飞机那种。
|
4
alphatoad 2020-06-04 06:17:40 +08:00 via iPhone 4
现在火箭的内存也是 64G 起步了啊,真是今非昔比
|
5
ochatokori 2020-06-04 06:22:27 +08:00 via Android
万物基于 js,js 一统天下🐶
|
6
Ultraman 2020-06-04 06:43:24 +08:00 via Android 4
Also, only the actual graphical display application uses Chromium/JS. The rest of the system is all C++.
|
7
rayhy 2020-06-04 07:08:06 +08:00 via Android
之前天天说太空环境下必须要小内存防太空射线 balabala,现在不一样了吗…
|
8
reus 2020-06-04 07:14:00 +08:00 8
Also, only the actual graphical display application uses Chromium/JS. The rest of the system is all C++. The display code has 100% test coverage, down to validation of graphical output (for example if you have a progress bar and you set it to X% the tests verify that it is actually drawn correctly).
呵呵,你们这些前端工程师,有多少做得到 100%测试覆盖的?能个屁。 |
10
rayhy 2020-06-04 07:39:00 +08:00
@nuistzhou 欸,不管怎么,Electron 已经不是笨重臃肿的 Chrome 马甲了,是稳定安全的航天级 GUI 基础架构...
|
12
Mohanson 2020-06-04 07:45:59 +08:00 via Android
python 还登陆过火星呢(狗头
|
13
christin 2020-06-04 07:54:47 +08:00 via iPhone 10
真·面试造火箭,工作造火箭
|
14
murmur 2020-06-04 08:09:35 +08:00
啊哦,chrome 遇到了一个错误,需要关闭
|
15
dxcqcv 2020-06-04 08:10:18 +08:00
了不起
|
16
nutting 2020-06-04 08:22:13 +08:00
那种环境用这么复杂的系统不怕出问题吗
|
17
janxin 2020-06-04 08:29:13 +08:00 81
剩余氧气 undefined%
|
18
Seanfuck 2020-06-04 08:33:23 +08:00 via iPhone
看标题还以为是$$
|
19
mostkia 2020-06-04 08:39:28 +08:00
@alphatoad 那是因为以前使用的是加固芯片来抵御宇宙射线的干扰,非常昂贵,所以够用就好,而且这是成熟的系统,重新使用新方案会有风险,nasa 拿国家经费的自然安于现状。而 SX 公司是创业公司,相关领域直接是后来者,不拒绝新技术,马斯克就直接批评了加固芯片这一方案,他用的是冗余解决方案,即火箭上搭载了 3 套机载计算机,通过特定算法来保证计算准确性,即使有某台计算机突然离线,也能正常使用,使用的硬件则是普通的 X86 处理器,费用并不贵,而且科技公司飞船内部界面只有做的好,外观酷炫,一群金主大佬看着不明觉厉,才能融到资啊。硬件上自然需要适当堆料,保证速度。
|
21
Charod 2020-06-04 08:44:12 +08:00
。。。
|
22
onevcat 2020-06-04 08:45:50 +08:00 5
面试造火箭,工作终于也造火箭了!
|
23
wanguorui123 2020-06-04 08:46:29 +08:00 via iPhone
0.1+0.2=?
|
24
wanguorui123 2020-06-04 08:47:32 +08:00 via iPhone
运算应该用 mathjs 吧
|
25
idealhs 2020-06-04 08:52:47 +08:00 1
其实我看到这玩意就在想,触屏虽然交互友好,但是稳定性不如按钮们啊,太空环境那么复杂,万一触屏坏了他们有没有备用的操作方式
|
28
reus 2020-06-04 09:00:55 +08:00
@idealhs 你没看原文?
SpaceX also made use of Chromium and JavaScript for Dragon 2 flight interface. I am not sure how that passed the certification. I assume it was allowed because for every mission-critical input on the display, there was a physical button underneath the display as well. So if in case the screen malfunctioned, the astronauts could potentially make use of the physical buttons. |
30
SimonOne 2020-06-04 09:18:56 +08:00
@idealhs #24 让我想起了小时候的一部动画,某集去了地底,碰上发疯的地底生物来袭,需要启动一台机器驱逐这些怪物,在按钮失效的情况下直接撕开屏幕,把导线一拧就完事了。
|
31
gainsurier 2020-06-04 09:21:43 +08:00
感觉这玩意和轨道交通那套类似。
可能是 qt 的 webengine 那一套。前端用 hmi/js,后端用 C++搭建服务。 |
32
kitalphaj 2020-06-04 09:24:01 +08:00
JS 和 Chromium 这个有点意思,但是文中也提到是有物理按键做备份的。我搞不懂的是为啥会用 C++或者 Python 之类的语音,希望至少不是关键程序用这种语言。真正的 High Integrity 系统感觉还是用 Ada 之类可完全理论证明的语音比较靠谱。
|
33
exploreXin 2020-06-04 09:28:32 +08:00
JS 征服世界的目标已经是过去时了,现在的目标是星辰大海。
|
36
winrar 2020-06-04 09:42:18 +08:00 via iPhone
为啥现在人一提到前端就联想到 js 呢?
|
38
sjtiande 2020-06-04 09:55:08 +08:00 11
火箭飞不上去是不是要先删除一下 node_modules
|
39
paoqi2048 2020-06-04 10:01:25 +08:00
归根结底是 C++
|
40
nightwitch 2020-06-04 10:18:53 +08:00 1
肯定不是 electron 洛,多半是 Qt 的 QWebEngine,和其他 Qt 组件衔接起来。Qt 在军备上使用的还是很多的,之前美国的哪个驱逐舰的系统也是用 Qt 画的操作界面。
|
41
Vegetable 2020-06-04 10:22:28 +08:00 7
JavaScript——航天级编程语言
|
42
aogu555 2020-06-04 10:26:47 +08:00
前端的这个前端定义的是用户端,操作端,难道前端就只剩下 js 了吗?
|
43
icebreaker12 2020-06-04 10:46:21 +08:00
|
44
nicevar 2020-06-04 10:51:11 +08:00 13
火箭偏离轨道, 因为 node_modules 太重导致
|
46
hakono 2020-06-04 11:53:14 +08:00 3
@alphatoad 因为宇宙射线。
和医院里跟 x 光机凑得近的设备没做好防辐射处理的话,CPU 或者内存会出现随机的存储运算错误一样道理。 以前的航天项目在电子系统的防辐射上相当花钱,spaceX 直接放弃这么做,准备了多套一样的系统并行计算然后互相对比运算结果确保计算结果一致。这么一搞之后电子系统成本直接爆降,龙飞船的控制系统成本才几万美元的样子。 |
48
AlphaTr 2020-06-04 12:02:36 +08:00 via iPhone 22
仅在一夜之间,Electron 风评即由「笨重臃肿的 Chrome 马甲套壳」变成了「稳定安全的航天级 GUI 基础架构」。
在飞船 UI 系统宕机时,宇航员手册中记载了最后的应急方案,那就是删掉 node_modules 然后 npm install 。 「面试造火箭」一语成谶,「宇宙飞船 UI 架构设计」现已加入 BAT 前端面试题库。 前端培训班题材纷纷由「高仿美团饿了么首页」转向「高仿宇宙飞船控制台」,全套教学视频 + 源码仅需 998 。 各大前端框架争相游说各国载人航天团队,史称前端太空竞赛。 社区开始争论 React Hooks 和 Vue Composition API 哪个更适合登月。 SpaceMVC 项目取代 TodoMVC,成为了下一个前端框架的 battle 标准。 工程师一旦发现飞船超重,第一个排查问题的位置就是 node_modules 。 某国湿婆神号飞船任务失败,原因竟是该国程序员屏幕上的咖喱混淆了 == 和 ===,导致类型比较出错。 转自知乎: https://www.zhihu.com/question/396878847/answer/1261374042 |
49
fakeshadow 2020-06-04 12:08:51 +08:00 5
宇航员: 启动紧急逃逸
显示器: TypeError: ‘undefined’ is not a function |
50
Huelse 2020-06-04 13:37:13 +08:00
楼上是想笑死我吗
不过这一套下来的确能省很多很多成本 |
52
Phariel 2020-06-04 14:04:00 +08:00 1
面试造火箭 入职。。。 入职还真是造火箭!🐶
|
53
sadfQED2 2020-06-04 14:27:52 +08:00 via Android
我好奇火箭的代码是不是用 jetbrains 写的?那我用的也是航天级开发工具?
|
54
shijingshijing 2020-06-04 14:32:47 +08:00 5
@hakono
@alphatoad 这个东西的学名叫单粒子翻转(SEU, Single Event Upsets),简单来讲就是单个 cell 可能在某种情况下受宇宙射线影响从 0 编程 1 或者反过来。地球上 SEU 察觉不到是因为电离层的保护已经将这些射线大部分屏蔽掉了,事实上几乎每家大型半导体公司都会对此作出一定的说明和应对: Intel 的 https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/wp/wp-01206-introduction-single-event-upsets.pdf Xilinx 的 https://www.xilinx.com/support/documentation/white_papers/wp395-Mitigating-SEUs.pdf 应对 SEU 的措施有很多,硬件层面做 Radiation Hardening,系统设计方面使用三重表决系统( SpaceX 就是三套 FlightControl 表决,可以简单理解为斗地主),还有其他各种冗余设计,双核单步执行实时比较等等。 硬件方面航空航天领域里面,用的最多的是 PowerPC,代表作是 BAE 的 PowerPC 750,据说火星车上用的这款芯片能做到电路板裸露到外面长达一定时间没有影响,足够完成关机以及其他保护措施。当然不仅仅是 CPU 需要做 Radiation Hardening,内存也需要,整个电路板也会有相应的抗辐照,抗高温,耐低温,抗震等等设计。SpaceX 的理念是不关注最底层的失效可能性,从整个系统层面提高可用性,这样做能够尽可能降低成本,同时保留足够的可用性(一般用 10 的负 9 次方这种概率值来衡量)这样做也是有科学道理的,因为即使是上面的 Radiation Hardening,三重表决等等都做了,也只能是尽可能的 mitigation,而无法彻底 elimination,所以只要指标达到,我在系统层面做优化,在设备层面做优化,在元件层面做优化都是可以的。 这个领域有一个很形象的比喻,从系统到设备到元件乃至到最底层的晶体管都不是完美的,每一层都像一片瑞士奶酪那样充满着孔洞,我们能做的就是将这些奶酪一层层叠起来,尽量让整个奶酪没有孔洞。 |
55
Chenamy2017 2020-06-04 14:42:45 +08:00
@ochatokori js 一统宇宙了吧。
|
57
jsq2627 2020-06-04 16:40:35 +08:00
https://iss-sim.spacex.com/
来来来,感受一下 |
58
CBS 2020-06-04 16:41:14 +08:00
为什么不用 Android,Android 什么时候才能站起来,气抖冷
|
59
BryceBu 2020-06-04 16:52:57 +08:00
楼上都是人才
|
60
zaul 2020-06-04 17:57:27 +08:00
js 牛逼
|
61
meisky6666 2020-06-04 19:16:38 +08:00 via Android
带 node modules 吗
|
62
muxfc 2020-06-04 20:50:47 +08:00
@shijingshijing 记得好久以前 FPGA 课的老师介绍说航空领域用 lattice 比较多,后来发现好像其实很多时候 Xilinx 什么的也用来着。。
|
63
jedihy 2020-06-05 01:08:43 +08:00
系统貌似是 win10
|
64
594duck 2020-06-05 04:44:01 +08:00 via iPhone
完全不看好 3 套系统。一套系统 64G 内存,算他 300w 功耗。3 套就是 900w 。空间站店里什么时候这么富裕了。
第二 x86 日常芯片哪怕包铅和金都没用。不是稀土芯片就是没用。宇宙高能粒子打穿分分钟 第三宇航员手册要求无照明条件下重要操作手工盲操作,他这弄两套只要有一个逻辑操作就完蛋了。 就像特斯拉,互联网吹逼们吹的再好。那是应为互联网不学物理和材料。大部分人连 idc 都没进去过,对功耗和硬件充满了无所谓。 |
65
594duck 2020-06-05 04:45:38 +08:00 via iPhone
@rayhy 马斯克会为此付出代价的,等着就好。在地球里高能粒子都能打穿交换机内存导致业务中断(好像国内是 ucloud 的 h3c )更不要说外太空了,他这是乱搞
|
66
594duck 2020-06-05 04:53:25 +08:00 via iPhone
@nuistzhou 人有自我修复机制,但是被射穿多了也修不了了。
来给你举个例子,极端点的切尔诺贝利近辐射源,机器上去按分钟不行了,人上去如果不考虑死活可以呆 1 小时干活。 宇宙中光是太阳风暴就刺激的要死了,更不要说各种粒子乱飞还没有大气层帮你挡 |
67
jadec0der 2020-06-05 04:56:47 +08:00
楼上让我有点想笑,继教张小龙做微信之后,教 Musk 做火箭也上线了
|
68
594duck 2020-06-05 04:59:44 +08:00 via iPhone
@alphatoad 能耐极端高温和低温的稀土芯片主频都做不高,最高好像就 700Mhz 。但是人家优化极致,主要是走浮点运算优势就够了。然后第一要素是姿态和控制。参看汽车 ecu,这块全是老外的天下。
马斯克这块吹牛逼太大了。三套系统光是电就不得了。宇宙里还没人用锂电做电池(锂的金属特性太可怕了) 中国走马斯克的纯电已经把自己的汽车工业草翻了(内燃机比起电动汽车难度是你抱紧我还恐怖的存在好不容易中国在 2013 年前你到了门路自己干废了自己) 搞不好了。坐等马骗子被抽 |
69
594duck 2020-06-05 05:01:53 +08:00 via iPhone
|
70
594duck 2020-06-05 05:07:04 +08:00 via iPhone
@shijingshijing 兄弟懂行的。 我觉得中国马上要吹 x86 cpu 代替 ecu 造汽车了。也好让无情的耳光狠狠的抽在吹逼们的脸上就好了。
就像你说的对他们以为叠 3 台主机就好了。可是人家的前提是我的芯片都是稀土造的。能够承受一定的辐射和粒子。国内高互联网的有几个学过高能粒子是什么。马上就要开始瞎搞了 |
71
594duck 2020-06-05 05:48:43 +08:00
|
72
alphatoad 2020-06-05 06:13:54 +08:00 via iPhone
我懂了,马斯克搞了个 Magi
eva 厨大欢喜,再接再厉 |
74
KeyboardManAnAn 2020-06-05 09:46:55 +08:00
不太明白特斯拉和 SpaceX 的桌面 GUI 为啥要用两个技术栈,之前特斯拉不是一直用的 QT 写桌面图形 GUI 的吗?
|
75
KeyboardManAnAn 2020-06-05 09:50:01 +08:00
@nightwitch QWebEngine 本身也是基于 Chromium 的吧, 所以题主说"SpaceX 内舱操作界面基于 Chromium 和 JS 开发"还是没有什么毛病的
|
76
sanddudu 2020-06-05 10:22:41 +08:00
@KeyboardManAnAn 因为他们就是两家公司,技术不是直接共享的...
|
77
MarkLeeyun 2020-06-05 15:37:27 +08:00
@alphatoad 哈哈哈哈。
|
78
LostPrayers 2020-06-05 17:31:41 +08:00 1
@594duck 我就说你发的这些我有点眼熟,上次看相关问题还是阿波罗开源代码那一波,惊叹 登月用的计算机配置竟然这么低
|
79
594duck 2020-06-06 06:49:17 +08:00
@LostPrayers 老哥我和你说现在 V2EX 和一堆互联网吹货们反正物理不用多读,也没什么兴趣爱好,对其它行业根本不了解。2013 年前还是可以的,13 年后真的不行了。全是一股战狼精神。
其实你去看一下汽车的 ECU 就会发现人家那叫真硬核,都是实时系统。人家那主频真叫低,但是工作环境奇糟糕(-30 度到+120 度)。国内做 ECU 是不行了,拿 OBD 的数据去写 UI 根本没鸟用,天天就喜欢把汽车弄一块影响人机交互的大玻璃,根本没鸟用。朋友的荣威买来的时候觉得科技感十足,开了半年,有一次还开着着那块屏黑了。第二年就卖了(幸好卖的早,不然赔死了)。吹的上天的蔚来,也是,身边一有钱上市公司同事买了,天天那叫一个炫呀,现在低调卖了。 再说从 WRC 到 CTCC,根本没有人关心你的屏幕是啥做的。还液晶,笑话了。全纯仪表盘最多 LED 。 F16 的主处理程序 才多少,CPU 主频也低的吓人,F22 也是。 战斧那 80 年代就带地形匹配技术,整套系统要塞在这么小的导弹里。 |
80
shijingshijing 2020-06-06 14:54:01 +08:00
@594duck 是的,现在互联网吹天天幻想着格命这个格命那个,实际上最多也就搞搞原来类似中介的业务,真涉及到硬核的机械、热能、物理和数学的东西,各种拉稀。
屏幕根本不是新车的痛电,可操控性、安全、省油、环保才是重点,基本上互联网造车都是一上来一块大屏,而且没有备份的用户交互设施。这种屏幕一挂直接瞎。Space X 和 Tesla 好的系统设计没学,触控和液晶大屏这种虚头把脑的倒是抄起来挺快的,最终会付出沉重的代价。 触控只能有限度条件下使用,一是非关键功能操控,二是必须有冗余设备防止触控失效,触控还要防止误触,并不是什么优选的交互方式,选择触控是因为现在的汽车、飞机、火箭有的功能过于复杂,如果每项都给定一个物理按钮,那么布局会相当困难甚至无法实现,所以才会进行取舍,有部分放到触屏上。最典型的 f-三五就是,导航、站情等信息放到触控上,即使失效了也有语音播报作为备份,核心的火倥、弹射都是物理按钮。互联网很多从业者数学都不及格,还一天天想格人家正统工学的命,比较搞笑。 |
81
594duck 2020-06-06 15:02:51 +08:00 via iPhone
@shijingshijing 老哥思路清晰
|