在经历了 十几个小时的飞行后,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 讨论链接:
开源 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