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

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

云栖号资讯:【点击查看更多行业资讯
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!

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

SpaceX 飞船技术栈

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

D2018F8B_F4B7_429a_93D0_6032DDD3046D

事实上,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。
  • 它有一个小的、可选的轻量级可执行文件。

实际效果

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

7c63ce0b7583a16e7f8440692580226c

算法原理

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

9ba44b2383f9fbdc278b5f0c8f77d6a3

【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/zhibo

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-06-01
本文作者: 赵钰莹,李冬梅
本文来自:“InfoQ”,了解相关信息可以关注“InfoQ

相关文章
|
2月前
|
存储 人工智能 JavaScript
编织魔法与修电脑:码农征途的奇妙起点
编织魔法与修电脑:码农征途的奇妙起点
54 0
|
6月前
|
Python
星际争霸之小霸王之小蜜蜂(十二)--猫有九条命
星际争霸之小霸王之小蜜蜂(十二)--猫有九条命
|
7月前
|
C++
你们想要的开源的冰墩墩模型来了!! 先睹为快!实现冰墩墩自由!
你们想要的开源的冰墩墩模型来了!! 先睹为快!实现冰墩墩自由!
98 0
|
9月前
|
程序员 C语言 C++
电视剧里的代码真能运行吗?
虽然剧中说是“C语言期中考试”,但这位同学的代码名叫 draw2.py,一个典型的 Python 文件,再结合截图中的 pen.forward、pen.setpos 等方法来看,应该是用 turtle 海龟作图库来画爱心。
|
11月前
|
Java
手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏19敌人可以被打死
手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏19敌人可以被打死
103 0
|
11月前
|
Java
手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏12之英雄自由行走
手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏12之英雄自由行走
123 0
|
前端开发 JavaScript 程序员
2023将至,前端程序员们应该一起放个烟花庆祝一下,走起
前言:小时候,在我印象中,每到快过年的时候就有很多卖炮仗的,一般也就是阳历的12月份到明年的正月15号卖炮仗的商家比较多,省下买辣条的钱去买炮仗,在老家也就过年和除夕两天及正月15日这几天放烟花和炮仗比较猛,现在年纪大了,听不得炮仗那种噪声了,也考虑到环保,工作之后的程序员以代码的形式演绎一下烟花的效果。
224 0
2023将至,前端程序员们应该一起放个烟花庆祝一下,走起
【“玩物立志”scratch少儿编程】坦克动荡-“穿墙控制”和“子弹反弹”的实现-含完整代码
【“玩物立志”scratch少儿编程】坦克动荡-“穿墙控制”和“子弹反弹”的实现-含完整代码
466 0
【“玩物立志”scratch少儿编程】坦克动荡-“穿墙控制”和“子弹反弹”的实现-含完整代码
|
JavaScript Java API
@Value竟然能玩出这么多花样
@Value竟然能玩出这么多花样
@Value竟然能玩出这么多花样