开扒SpaceX飞船技术栈,程序员搞了个3D版飞船生成器过瘾

在经历了 十几个小时的飞行后,SpaceX的载人龙飞船与国际空间站成功对接,国际空间站迎来第一艘商业载人飞船的到访,其背后的技术栈也引起了开发人员的关注,甚至有程序员搞起了3D版飞船生成器。

SpaceX飞船技术栈

美国当地时间 5 月 30 号下午 3 点 22 分,北京时间 5 月 31 日凌晨 3 点 22 分,由埃隆·马斯克创办的航天公司 SpaceX 执行的载人航天发射任务在肯尼迪航天中心圆满完成,可能很多技术人员对于SpaceX应用到的技术栈非常关注,导致这个话题在Reddit和Hacker News上的热度都不低。

载人“龙”飞船完成分离

事实上,SpaceX的软件工程师曾在2013年做过一次公开回应,可以总结出一些相关信息:

SpaceX使用Actor-Judge系统为火箭和航天器提供三重冗余。 Falcon 9具有3个双核x86处理器,每个核上都运行着Linux实例(操作系统用的是Linux,还有LabVIEW和Matlab)。飞行软件是用C/C ++编写的(这一点也得到了SpaceX 工程师的确认,火箭和飞船的主要编程语言是C++),并且在x86环境中运行 (SpaceX 猎鹰九号和龙飞船用的都是Intel双核的x86处理器),整个主控程序只有几十万行代码。

注:LabVIEW是美国国家仪器公司所开发的图形化程序编译平台

对于每个计算和决定,字符串都会比较不同核的返回结果。如果存在不一致,则字符串返回是错误的,并且不发送任何命令。如果都返回相同的结果,则字符串将命令发送到火箭上的各种微控制器,这些微控制器控制是诸如引擎之类的东西。

SpaceX的软件工程师主要工作就是编写火箭和航天器上运行的代码以及火箭和航天器的设计和制造过程的代码,内部分为飞行软件、企业信息系统、地面软件及航电测试四个团队,人数在几个到数十个人员不等,分别承担不同的研发任务。

此外,SpaceX的龙飞船主控系统的芯片组仅用了2.6万人民币。要知道,这与其他载人飞船搭载的星载计算机和控制器相比(超过一亿人民币),成本极低。

在对SpaceX飞船技术栈进行探索的同时,也有开发者搞出了一个3D版本的开源飞船生成器项目,这个项目的实际开发时间是在2016年,但却在马斯克的SpaceX 首次载人飞船发射成功后被送上了Hacker News热搜,我们也一起看看该项目的实际效果。

Reddit讨论链接:

https://www.reddit.com/r/programming/comments/gtvmb4/what_computer_and_software_is_used_by_the_falcon_9/

开源3D版飞船生成器

Spaceship Generator项目在GitHub上收获了5.7k的star,这是一个Blender脚本,可根据代码生成3D飞船。真的飞船搞不来,搞一个3D版的过过瘾还是可以的。

使用

开发者需要自行安装Blender 2.76或更高版本,然后从 Releases 中下载最新的add_mesh_SpaceshipGenerator.zip,打开下载的ZIP文件,然后按照Under File > User Preferences… > Add-ons enable this script (search for “spaceship”)这个路径启用这个脚本,最后在 3D View 中添加宇宙飞船(Add > Mesh > Spaceship)。

Blender最新版本下载地址:https://www.blender.org/download/

Blender是一款免费的开源3D创作套件,可用于创建3D可视化的静态图像、3D动画、VFX镜头,也可作为视频编辑工具。它是一个跨平台的应用程序,可以在Linux、macOS和Windows系统上运行。与其他3D创作套件相比,Blender对内存和驱动器的要求也相对较小。它的界面使用OpenGL框架(创建),为所有支持的硬件和平台提供一致的体验。

主要特征

  • Blender是一个完全集成的3D内容创建套件,提供了广泛的基本工具,包括建模、渲染、动画和 Rigging、视频编辑、VFX、合成、纹理绘制和多种类型的模拟。

  • 它是跨平台的,拥有在所有主流平台上统一的OpenGL GUI(并可通过Python脚本进行定制)。
    拥有一个高质量的3D架构,可以实现快速、高效地创建工作流程。

  • 拥有活跃的社区支持,详情请参见 blender.org/community。

  • 它有一个小的、可选的轻量级可执行文件。

实际效果

首先从一个盒子开始延伸建造船体,多次拉伸前、后表面,并在此过程中随机添加平移、缩放、旋转效果;其次开始在船体上增加不对称性,选取随机的面并将其以类似的方式改变;然后向船体添加细节,按其朝向对每个面孔进行分类,并在其上生成一些细节,例如引擎、天线、炮塔、照明灯等;最后进行一些细微调整等,如下图:

算法原理

以下截屏使用船体线段数和非对称线段数的极值创建,以显示算法的工作原理。

GitHub地址:https://github.com/a1studmuffin/SpaceshipGenerator

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章