InfoQ 编辑部出品——2021年度技术盘点与展望 了解详情
写点什么

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

  • 2020 年 6 月 01 日
  • 本文字数:1801 字

    阅读完需:约 6 分钟

开扒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


2020 年 6 月 01 日 13:405710

评论

发布
暂无评论
发现更多内容

Java虚拟机:Java内存区域及对象,java反射面试

Java 程序员 后端

Java集合类之Collection接口,集合的“爸爸,21条MySQL性能调优经验

Java 程序员 后端

Java面试-final的内存语义,我就不信你还吃不透Java的泛型

Java 程序员 后端

Java类与类之间的继承关系,java算法面试代写

Java 程序员 后端

JAVA设计模式类第一博主,用这份文档覆盖GOF研磨这23种设计模式

Java 程序员 后端

java进阶篇02、注解、反射与动态代理,java教程视频免费

Java 程序员 后端

Java面试----2020年MyBatis常见实用面试题整理,字节跳动算法工程师面试

Java 程序员 后端

JAVA线程池源码之深入状态值分析| Java Debug 笔记,java面试题库百度云链接

Java 程序员 后端

Java面试通关要点汇总集,开发者必备的顶级Java开发工具

Java 程序员 后端

Java面试题整理《基础篇》,java面试宝典pdf百度云

Java 程序员 后端

JDK的前世今生:细数 Java5 - 15 的那些经典特性,java高级程序员的要求

Java 程序员 后端

JAVA面试——请记住这些,mybatis动态代理原理

Java 程序员 后端

Java面试知识点解析——JVM篇,分布式中间件技术实战

Java 程序员 后端

java锁:第四章:读写锁,java框架ssh和ssm百度

Java 程序员 后端

Java面试八股文中,常问的那些spring高频题目解析,网易架构师深入讲解Java开发

Java 程序员 后端

Java面试题原理和底层,java面试突击第二季

Java 程序员 后端

Java面试题总结(乱序版,2020-08-20,面试总结+详细解答

Java 程序员 后端

Java集合类中绝对占有一席之地的List,终于彻底把握了,零基础java入门教程

Java 程序员 后端

Java面试很难?靠这份文档学习2个晚上拿到阿里,网易等大厂offer

Java 程序员 后端

Java线程状态以及 sheep(),开发这么久这些问题都不会

Java 程序员 后端

Java虚拟机 —— 类的加载机制,linux操作系统实用教程第二版课后答案

Java 程序员 后端

Java虚拟机学习集锦是我攒来的,但为你能过面试的心是真的!

Java 程序员 后端

java虚拟机,狂神mybatis笔记

Java 程序员 后端

Java高级特性——注解,kafka消息队列的实现原理

Java 程序员 后端

JDK新特性——Stream代码简洁之道,spring视频教程在线观看

Java 程序员 后端

Java笔记 IO —— 序列化和反序列化,面试大厂应该注意哪些问题

Java 程序员 后端

Java线程池相关知识点总结,mybatis基础面试题

Java 程序员 后端

Java进阶之梯,成长路线与学习资料,助力突破中间件领域

Java 程序员 后端

Java集合类之Collection接口,集合的“爸爸(1),算法竞赛入门经典java版

Java 程序员 后端

Java进阶之深入理解Java的接口和抽象类,2021最新Java面试题目

Java 程序员 后端

Java集合 —— Map集合,Java视频教程

Java 程序员 后端

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