vlambda博客
学习文章列表

成本相差5384倍,编程用C++和Python!马斯克如何搞翻航天圈


编辑:芯智讯(ID:icsmart )-林子
来源:九天微星(ID:commsat)
作者:九天波粒(九天微星通信航天人)

北京时间5月31日凌晨,SpaceX载人龙飞船发射成功,在经过大约19个小时的飞行后,载人龙飞船成功与国际空间站对接,将两位宇航员成功送达国际空间站。这是美国首次使用本土商业公司的火箭和飞船从本土将宇航员送往空间站。同时SpaceX也是全球首家实现载人航天的民间商业公司。并且,SpaceX也成功将载人航天的成本大幅降低。


根据NASA公布的美国波音、俄罗斯和美国SpaceX的单人发射费用对比,波音为9000万美元,俄罗斯为8600万美金,SpaceX的龙飞船仅为5500万美元。



那么,为什么SpaceX的龙飞船的单人发射费用能够比竞争对手少这么多?首先这得归功于SpaceX载人航天采用的是可重复使用的运载火箭和龙飞船,大大降低了发射成本。除此之外,还有一个不得不提的因素是,SpaceX的运载火箭和龙飞船没有采用价格高昂的宇航级元器件,而是采用了价格相对低廉的工业级元器件。此外,在软件上也更多的采用了开源软件。


01

宇航级,用不起

在航天圈里,有一种器件如贵族般存在:

宇航级器件


成本相差5384倍,编程用C++和Python!马斯克如何搞翻航天圈

一个二极管只要上天验证成功,

就可以从一个工业级十八线小明星跃升为

宇航级一线大明星,

身价可以倍增上百倍甚至上万倍

以现有载人飞船搭载的星载计算机和控制器举例,

单个控制器价格为500万人民币左右,

一共14个系统,

为了追求高可靠性,

每个系统1+1备份,

一共28个控制器,

成本总计约1.4亿人民币

而SpaceX的龙飞船主控系统的芯片组,

仅用了2.6万人民币,

成本相差5384倍!


成本相差5384倍,编程用C++和Python!马斯克如何搞翻航天圈


Elon Musk到底是如何做到的?

我们看以下几条重要的知识点。


知识点

1、 SpaceX 猎鹰九号和龙飞船用的都是Intel双核的x86处理器;

2、 操作系统用的是Linux,还有LabView和Matlab

3、 软件工程用的是C++,有些时候也用Python

4、 整个主控程序只有几十万行代码。



02


工业级器件小屌丝的困境:粒子翻转

航天器所有的器件要经历很苛刻很苛刻的环境。

首先发射时要禁得住剧烈的抖动和很高的温度

才能走出地球。

而真正的炼狱在入轨后才刚刚开始,

面对太阳面的时候,温度迅速提升,最高到120°C

背离太阳面的时候,温度骤减,最低到-150°C

就这样90分钟一圈又一圈,周而复始,

每圈都是270°C的温差


成本相差5384倍,编程用C++和Python!马斯克如何搞翻航天圈


而对于电子器件来说,温度不是最难熬的,

最难熬的是太空中的辐射,

这些辐射有来自地球的召唤:地球磁场

也有来自太阳的问候:高能粒子

还可能有来自三体文明的问候:

其他太阳系以外的粒子。



而这些粒子,将引发电子器件的神经紊乱,

专业名词是:粒子翻转

它将很Surprise地告诉星载计算机和星载存储器

“下面将是见证奇迹发生的一刻!”

我要把1变成0,然后再把0变成1。”

有些人问了,多大点事啊,不就差个1吗?!

但是在比特界,差一位就可差之千里。

举个栗子:


成本相差5384倍,编程用C++和Python!马斯克如何搞翻航天圈


如果指令20是向上爬升,指令24是停止推进,

后果是难以想象的

 所以如果发生了1和0不分的情况,

整个飞行器的运算结果曾导致非常大的灾难。

在1996年,阿里安501火箭,

虽然没有粒子翻转,

但是系统试图将一个64位的数字,

随即发生了1/0错乱的现象。


成本相差5384倍,编程用C++和Python!马斯克如何搞翻航天圈



结果在点火37秒后,

火箭开始侧翻,

随之爆炸,

因为这个“小”问题,

那次发射损失高达3.7亿美金!

回到主题,既然粒子翻转这么恐怖,

那SpaceX如何做到发现问题和解决问题的呢?

很简单:民主决策

技术名词叫:parity bits

奇偶校验

既然判断不了一个是否翻转,

那就多放几个一样的设备,

通过比较,把不一样的结果给踢出去



03


攒火箭硬件选择

上文提到,SpaceX没有选择用贵族宇航级器件,

而是选择了经典厂牌Intel的X86双核处理器

京东售价仅478元人民币

(参考价为奔腾系列,赛扬更便宜):


成本相差5384倍,编程用C++和Python!马斯克如何搞翻航天圈


而SpaceX也没有用双核做一件事,

而是把双核拆成了两个单核,

分别计算同样的数据。

每个系统配置3块芯片做冗余,

也就是6个核做计算。


成本相差5384倍,编程用C++和Python!马斯克如何搞翻航天圈


如果其中1个核的数据和其他5个核不同,

那么主控系统会告诉这个核重新启动

再把其他5个核的数据拷贝给重启的核

从而达到数据一直同步。

周而复始,不让一个核掉队。


成本相差5384倍,编程用C++和Python!马斯克如何搞翻航天圈


成本相差5384倍,编程用C++和Python!马斯克如何搞翻航天圈


据SpaceX前火箭总师John Muratore透露,

龙飞船一共有18个系统,

每个系统配置了3块X86芯片,

龙飞船一共有54块。

所以龙飞船主控芯片的总价约:

2.6万人民币,3600美元!


成本相差5384倍,编程用C++和Python!马斯克如何搞翻航天圈


而猎鹰九号一共有9个分立式发动机,

每个发动机配置了3块X86芯片,

加上主控系统配置了3块,

猎鹰九号一共有30块这样的芯片。

猎鹰九号主控芯片的总价约:

1.4万人民币,2000美元!

我差点砸了手里的X1,

是它阻拦了我攒火箭的大计!


成本相差5384倍,编程用C++和Python!马斯克如何搞翻航天圈


更让SpaceX开心的事情,

是Intel X86的程序员一抓一大把啊,

而专业宇航级器件的程序用的基本都是特定语言,

程序员比元器件还难找。

 而且硬件工程师压力也小,

X86芯片随便造,

烧坏了?再来1个。不不,再买一打!

可是宇航级器件仅仅是测试费,

就都够再买一车X86芯片的。



04

攒火箭软件选择


SpaceX就用的开源Linux写的操作系统

而Linux用随便一台电脑就可以编写。

同样的,SpaceX程序员最爱的还是C++

用开源的GCC或者GDB做火箭的主控程序。

SpaceX还用LabView

一款图形化编辑语言,

对于火箭程序来讲,

它更容易实现可视化和流程化

更容易做复杂的算法设计和数据分析。

SpaceX也用Matlab

在仿真和矩阵计算上,真的很好用。

 而且,龙飞船,猎鹰九号,猎鹰重型,

分享着同一款代码,

分享着同一类迭代,

分享着同一种喜悦,

多么的模块化,

多么的互联网…



05

大数据监控和测试

 2018年,SpaceX一共发射21次,

一个公司占全球发射数量约20%,

而SpaceX的工程师和分析师,

手里有大量的测试数据和实际数据,

而且他们也被鼓励用不同的维度,

去检验飞行器的安全性,

形成最新的也最实用的测试程序,

从而降低实测成本。


成本相差5384倍,编程用C++和Python!马斯克如何搞翻航天圈


同时,Continuous Integration

持续集成也被应用在了程序测试上。


持续集成

为了配合敏捷开发(相对于瀑布开发)的速度和效率而产生的一个用于编译、测试、发布、部署的工具。



通过这种办法,

可以让团队每时每刻在持续的基础上,

收到反馈并进行改进,

不必等到开发周期后期才寻找和修复缺陷。

而且火箭程序不同于其他,

会进行“断弦式”测试,

突然关闭一台电脑,

来看看发动机到底有什么反应。



06

总结

航天已经经历了60年的历史

每一次阶跃其实都伴随着各类器件技术革新,

比如:

1950年代的晶体管技术,

1970年代的微控制器技术,

1980年代的数字信号处理技术,

1990年代的高性能存储技术,

现在,芯片工艺从28nm,16nm,10nm到7nm,

工艺的提升也增加了芯片在太空中的抗辐射性能,

让商业器件在太空中应用可行性大大提升!

伴随航天成长的是经典的:摩尔定律

但是摩尔定律到现在在地面侧都快失效了,

而在航天侧还没有开始。


成本相差5384倍,编程用C++和Python!马斯克如何搞翻航天圈


比如Greg Wyler在2019年1月6号,

Twitter的Oneweb的新型相控阵天线

目标定价15美金。

成本相差5384倍,编程用C++和Python!马斯克如何搞翻航天圈


比如AWS与Lockheed Martin在2018年11月

发布的超小型地面站

可降低地面站80%的成本


成本相差5384倍,编程用C++和Python!马斯克如何搞翻航天圈


北京九天微星正在研制

200mW卫星物联网终端模组

目标定价5美金。



因此,

航天缺少的仅仅是大胆的商业器件验证,

缺少的仅仅是采用MVP快速迭代的环境,

而逐年降低的发射成本正在迅速降低试验成本,

因此,

属于航天的摩尔定律才刚刚开始!

属于航天的互联网思维才刚刚开始!

属于航天的大时代才刚刚开始!



●编号4697,输入编号直达本文

●输入m获取文章

C语言与C++编程

分享C/C++技术文章